Introducción
En este laboratorio, aprenderá a utilizar los Kubernetes Secrets (Secretos de Kubernetes) para gestionar de forma segura información sensible como contraseñas, claves API y otros datos confidenciales. Creará un secreto, lo utilizará en su aplicación y verificará que la aplicación está configurada correctamente. Cada paso se basa en el anterior, así que asegúrese de seguir las instrucciones con atención.
Iniciar el Clúster Minikube
Antes de crear recursos, necesita un clúster de Kubernetes en ejecución. Minikube es un entorno ligero de Kubernetes que se ejecuta en su máquina local.
Navegue a su directorio de trabajo:
Abra la terminal y navegue a la carpeta del proyecto por defecto:
cd /home/labex/projectIniciar Minikube:
Inicie Minikube para inicializar un clúster de Kubernetes:
minikube start- Este comando configura un clúster de Kubernetes de un solo nodo en su máquina local.
- Minikube puede tardar unos minutos en iniciarse, dependiendo del rendimiento de su sistema.
Verificar que Minikube se está ejecutando:
Compruebe el estado del clúster Minikube:
minikube status- Busque componentes como
kubeletyapiserverlistados comoRunning(En ejecución). - Si el clúster no se está ejecutando, vuelva a ejecutar
minikube start.
- Busque componentes como
Si encuentra problemas al iniciar Minikube. Use minikube delete para restablecer el entorno si es necesario.
Crear un Secreto (Secret)
En este paso, creará un Kubernetes Secret (Secreto de Kubernetes) que contiene una contraseña de base de datos.
Cree un archivo llamado my-secret.yaml en el directorio /home/labex/project con el siguiente contenido:
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
password: dXNlcm5hbWU6cGFzc3dvcmQ=
En este archivo, especificamos el nombre del Secret (my-secret), el tipo de datos que contiene (Opaque) y los datos reales en formato codificado en Base64.
Aplique el Secret a su clúster ejecutando el siguiente comando:
kubectl apply -f my-secret.yaml
Verifique que el Secret se creó ejecutando el siguiente comando:
kubectl get secrets
Debería ver el Secret my-secret listado.
Usar el Secreto (Secret) en su Aplicación
En este paso, modificará su aplicación para usar el Secret my-secret para recuperar la contraseña de la base de datos.
Cree un archivo llamado my-app.yaml en el directorio /home/labex/project con el siguiente contenido:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
env:
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: my-secret
key: password
En este archivo, especificamos el nombre del Deployment (Despliegue) (my-app), la imagen a usar (my-image) y la variable de entorno a configurar (DATABASE_PASSWORD). También usamos un secretKeyRef para recuperar la clave password del Secret my-secret.
Aplique el Deployment a su clúster ejecutando el siguiente comando:
kubectl apply -f my-app.yaml
Verifique que el Deployment se creó ejecutando el siguiente comando:
kubectl get deployments
Debería ver el Deployment my-app listado.
Verificar la Configuración
En este paso, verificará que su aplicación esté configurada correctamente con la contraseña de la base de datos del Secret my-secret.
Encuentre el nombre del pod que ejecuta su aplicación ejecutando el siguiente comando:
kubectl get pods -l app=my-app
Debería ver un solo pod ejecutando su aplicación. Anote el nombre del pod.
A continuación, ejecute el siguiente comando para abrir una sesión de shell en el contenedor que ejecuta su aplicación:
kubectl exec -it pod-name -- /bin/sh
Reemplace <pod-name> con el nombre real del pod que anotó anteriormente.
Una vez que esté en la sesión de shell, ejecute el siguiente comando para imprimir el valor de la variable de entorno DATABASE_PASSWORD:
echo $DATABASE_PASSWORD
Debería ver la contraseña de la base de datos que se recuperó del Secret my-secret.
Montar el Secreto (Secret) como un Volumen en un Pod
Ahora que hemos creado el secret, podemos montarlo como un volumen en un pod. Crearemos un pod simple que lee el valor del secret desde el volumen montado y lo muestra en la consola.
Cree un archivo llamado pod.yaml en el directorio /home/labex/project con el siguiente contenido:
apiVersion: v1
kind: Pod
metadata:
name: secret-pod
spec:
containers:
- name: secret-container
image: nginx
volumeMounts:
- name: secret-volume
mountPath: /etc/secret-volume
volumes:
- name: secret-volume
secret:
secretName: my-secret
Aplique la configuración del pod:
kubectl apply -f pod.yaml
Verificar el Secreto (Secret) como un Volumen en un Pod
En este paso, verificará que su aplicación está configurada correctamente con la contraseña de la base de datos desde el Secret my-secret.
Primero, ejecute el siguiente comando para abrir una sesión de shell en el contenedor que ejecuta su aplicación:
kubectl exec -it secret-pod -- sh
Una vez que esté en la sesión de shell, ejecute el siguiente comando para imprimir el valor:
cat /etc/secret-volume/password
La salida debería ser el valor del secret.
Resumen
En este laboratorio, aprendimos cómo usar los secretos de Kubernetes para almacenar información sensible y cómo usarlos en un pod. Los secretos proporcionan una forma segura de gestionar información sensible y deben usarse siempre que sea posible para evitar exponer secretos en texto plano.


