kubernetes - run - minikube
¿Cómo puedo actualizar un secreto en Kubernetes cuando se genera a partir de un archivo? (3)
He creado un secreto usando
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
.
Si me gustaría actualizar los valores, ¿cómo puedo hacer esto?
Alternativamente, también puede usar el operador
jq
''s
=
or
|=
para actualizar secretos sobre la marcha.
TLS_KEY=$(base64 < "./tls.key" | tr -d ''/n'')
TLS_CRT=$(base64 < "./tls.crt" | tr -d ''/n'')
kubectl get secrets production-tls -o json /
| jq ''.data["tls.key"] |= "$TLS_KEY"'' /
| jq ''.data["tls.crt"] |= "$TLS_CRT"'' /
| kubectl apply -f -
Aunque puede que no sea tan elegante o simple como el
kubectl create secret generic --dry-run
, técnicamente, este enfoque realmente actualiza los valores en lugar de eliminarlos / recrearlos.
También necesitará los comandos
jq
y
base64
(o
openssl enc -base64
) disponibles,
tr
es una utilidad de Linux comúnmente disponible para recortar nuevas líneas finales.
Consulte
here
para obtener más detalles sobre
jq
update operator
|=
.
Esto debería funcionar:
kubectl create secret generic production-tls /
--from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml |
kubectl apply -f -
Puede eliminar e inmediatamente recrear el secreto:
kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
Puse estos comandos en un script, en la primera llamada recibes una advertencia sobre el secreto existente (aún no), pero esto funciona.