Estoy creando secretos de Kubernetes usando el siguiente comando
kubectl create secret generic test-secret --save-config --dry-run=client --from-literal=a=data1 --from-literal=a=data2 -o yaml | kubectl apply -f -
Ahora, necesito agregar nuevos literales usando el comando imperativo kubectl, ¿cómo hacerlo?
diga por ejemplo:
kubectl apply secret generic test-secret --from-literal=c=data3 -o yaml | kubectl apply -f -
pero dio el siguiente error
Error: indicador desconocido: --from-literal
Consulte 'kubectl apply --help' para conocer su uso.
error: no se pasaron objetos para aplicar
Se agradece cualquier ayuda rápida
------------------------------------
agregar nuevos literales usando el comando imperativo kubectl
Cuando se trabaja con comandos imperativos, normalmente significa que no se guarda el cambio en un lugar fuera del clúster. Puedes editar un secreto en el clúster directamente:
kubectl edit secret test-secret
Pero si desea automatizar su "adición", lo más probable es que guarde su secreto en otro lugar antes de aplicarlo al clúster. Cómo hacerlo depende de cómo gestiones los secretos. Una forma de hacerlo es agregándolo, por ejemplo. Vault y luego inyectarlo automáticamente. Cuando se trabaja de forma automatizada, es más fácil practicar secretos inmutables y crear secretos nuevos en lugar de mutar, porque normalmente también es necesario volver a implementar la aplicación para asegurarse de que utilice la nueva. Usar Kustomize con secretGenerator puede ser una buena opción si trabajas con secretos inmutables.
3
Gracias Jonas, estoy planeando usar secretos sellados... github.com/bitnami-labs/sealed-secrets. Pensando en una forma de automatizar los literales de los secretos existentes.
- magia
28 de marzo de 2021 a las 9:34
Tienen documentación en github.com/bitnami-labs/sealed-secrets#update-existing-secrets
- Jonás
28 de marzo de 2021 a las 9:54
sí "--fusionarse en" opción haz el truco. Gracias
- magia
28/03/2021 a las 13:31
------------------------------------
Puede utilizar el comando imperativo del parche kubectl
ejemplo
root@controlplane:~# kubectl patch secrets test-secret --type='json' -p='[{"op" : "replace" ,"path" : "/data/newkey" ,"value" : "bmV3VmFsCg=="}]'
secret/test-secret patched
root@controlplane:~# kubectl describe secrets test-secret
Name: test-secret
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
a: 5 bytes
b: 5 bytes
newkey: 7 bytes
necesitas pasar el valor codificado, para codificar/decodificar el nuevo valor de la clave puedes usar el siguiente comando
root@controlplane:~# echo "newValue" | base64
bmV3VmFsdWUK
root@controlplane:~# echo bmV3VmFsdWUK | base64 -d
newValue
otra opción es usar kubectl edit pero si automatizas tu código no puedes usar la opción de edición
kubectl edit secret test-secret