Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 2.08 KB

secrets.md

File metadata and controls

59 lines (48 loc) · 2.08 KB

Despliegues parametrizados: Secrets

Cuando en un variable de entorno indicamos una información sensible, como por ejemplo, una contraseña o una clave ssh, es mejor utilizar un nuevo recurso de Kubernetes llamado Secret.

Los Secrets permiten guardar información sensible que será codificada o cifrada.

Hay distintos tipos de Secret, en este curso vamos a usar los genéricos y los vamos a crear a partir de un literal. Por ejemplo para guardar la contraseña del usuario root de una base de datos, crearíamos un Secret de la siguiente manera:

kubectl create secret generic mariadb --from-literal=password=my-password

Podemos obtener información de los Secret que hemos creado con las instrucciones:

kubectl get secret
kubectl describe secret mariadb

Veamos a continuación cómo quedaría un despliegue que usa el valor de un Secret para inicializar una variable de entorno. Vamos a usar el fichero mariadb-deployment-secret.yaml y el fragmento donde definimos las variables de entorno quedaría:

...
    spec:
      containers:
        - name: mariadb
          image: mariadb
          ports:
            - containerPort: 3306
              name: db-port
          env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mariadb
                  key: password

Observamos como al indicar las variables de entorno (sección env) seguimos indicado el nombre (name) pero el valor se indica con un valor de un Secret (valueFrom: - secretKeyRef:), indicando el nombre del Secret (name) y la clave correspondiente. (key).

Nota: Por defecto, k8s no cifra el valor de los Secrets, simplemente los codifica en base64. El cifrado de los Secrets requiere configuraciones adicionales que se detallan en Encrypting Secret Data at Rest

Vídeo

https://www.youtube.com/watch?v=lckojEFiUiw