0Pricing
Kubernetes Basics · Lección

Secrets para datos confidenciales

Almacene y administre de forma segura información confidencial, como contraseñas y claves de API, mediante Secrets.

Secrets para datos confidenciales es una lección gratuita de Kubernetes Basics en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kubernetes Basics, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kubernetes Basics incluye 4 lecciones en total.

Protección de información confidencial

Al desarrollar aplicaciones, a menudo se trabaja con información confidencial, como contraseñas de bases de datos, claves de API o certificados privados.

¡Almacenar estos datos directamente en el código de la aplicación o en archivos de configuración supone un gran riesgo de seguridad! Esto puede provocar filtraciones de datos y dejar su sistema expuesto.

Introducción a Kubernetes Secrets

Kubernetes Secrets son objetos diseñados para almacenar datos confidenciales de forma segura dentro de su clúster.

Le permiten mantener la información confidencial separada de las definiciones de sus Pods y del código de la aplicación, lo que hace que las implementaciones sean más seguras y fáciles de gestionar.

  • Separación: Mantenga los datos confidenciales fuera de las imágenes de contenedor y del YAML de los Pods.
  • Accesibilidad: Los Pods pueden consumirlos como variables de entorno o archivos montados.

Secrets frente a ConfigMaps

Es posible que recuerde los ConfigMaps de una lección anterior, que se utilizan para datos de configuración no confidenciales.

Los Secrets son similares, pero están destinados específicamente a datos confidenciales. Ambos almacenan pares clave-valor, pero los Secrets están diseñados para manejar información sensible.

  • ConfigMaps: Para configuración general no confidencial (por ejemplo, niveles de registro y endpoints de API).
  • Secrets: Para datos confidenciales (por ejemplo, contraseñas, tokens y claves privadas).

Recuerde que los Secrets están codificados en base64, ¡pero no cifrados de forma predeterminada!

Crear un Secret a partir de un literal

La forma más sencilla de crear un Secret es a partir de un valor literal mediante kubectl create secret generic.

Esto resulta útil para piezas de datos confidenciales pequeñas y únicas, como una contraseña sencilla.

kubectl create secret generic my-db-secret \
  --from-literal=username=admin \
  --from-literal=password=SuperSecretP@ssw0rd!

Crear un Secret a partir de archivos

Para datos confidenciales más grandes o de varias líneas, como una clave privada o un archivo de configuración completo, es mejor crear un Secret a partir de archivos.

Primero, cree los archivos localmente y, después, haga referencia a ellos. Kubernetes leerá el contenido de los archivos y lo almacenará.

# Create local files first
echo "my-api-key-12345" > api-key.txt
echo "my-token-abcde" > auth-token.txt

# Create the Secret
kubectl create secret generic app-credentials \
  --from-file=api-key.txt \
  --from-file=auth-token.txt

Usar Secrets como variables de entorno

Los Pods pueden consumir datos de un Secret inyectándolos directamente en sus variables de entorno. Esto es habitual para pares clave-valor sencillos.

Puede hacer referencia a claves individuales de un Secret o a todas ellas mediante envFrom.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-env
spec:
  containers:
  - name: my-app
    image: nginx:latest
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: my-db-secret
          key: password

Usar Secrets como archivos montados

Para archivos confidenciales, como certificados y claves privadas, o cuando una aplicación espera recibir la configuración desde rutas de archivo específicas, puede montar Secrets como archivos dentro de un Pod.

Cada clave del Secret se convierte en un archivo en el directorio montado, cuyo contenido es el valor de dicha clave.

apiVersion: v1
kind: Pod
metadata:
  name: my-app-pod-vol
spec:
  containers:
  - name: my-app
    image: nginx:latest
    volumeMounts:
    - name: app-secret-volume
      mountPath: "/etc/secrets"
      readOnly: true
  volumes:
  - name: app-secret-volume
    secret:
      secretName: app-credentials

Seguridad de sus Secrets

Aunque los Secrets protegen los datos frente a una inspección superficial, no son una solución infalible. Recuerde estos puntos:

  • Codificación base64: Los Secrets están codificados en base64, no cifrados. Cualquiera que tenga acceso al Secret puede decodificarlo.
  • RBAC: Utilice el control de acceso basado en roles (RBAC) para restringir quién puede leer, crear o modificar Secrets.
  • Cifrado en reposo: Para obtener una seguridad real, habilite el cifrado en reposo de los datos de etcd (el almacén de respaldo de Kubernetes). Los proveedores de nube suelen ofrecer esta opción.

Actualizar Secrets

Si sus datos confidenciales cambian, deberá actualizar el Secret. Basta con volver a ejecutar kubectl create secret con los nuevos valores para actualizarlo, o utilizar kubectl apply -f con un YAML actualizado.

Sin embargo, los Pods en ejecución que consumen el Secret no detectarán automáticamente los cambios. Para aplicar las modificaciones, normalmente deberá reiniciar o volver a implementar los Pods que utilizan el Secret.

Comprobación rápida: Secrets

Imagine que tiene una clave privada de API a la que su aplicación debe acceder. ¿Qué método es el más seguro y adecuado para almacenar y proporcionar esta clave a un Pod de Kubernetes?

Resumen: Secrets para datos confidenciales

¡Buen trabajo! ¡Ha aprendido a gestionar datos confidenciales en Kubernetes!

  • Los Secrets almacenan información confidencial, como contraseñas y claves de API.
  • Están codificados en base64 y pueden consumirse como variables de entorno o archivos montados.
  • Aplique siempre RBAC y considere el cifrado en reposo para obtener la máxima seguridad.
  • Recuerde que los Pods deben reiniciarse para detectar las actualizaciones de los Secrets.

Preguntas frecuentes

¿La lección «Secrets para datos confidenciales» es gratis?

Sí — el texto completo de «Secrets para datos confidenciales» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kubernetes Basics, actualiza a CoddyKit PRO. El curso de Kubernetes Basics incluye 4 lecciones en total.

¿Qué aprenderé en «Secrets para datos confidenciales»?

Almacene y administre de forma segura información confidencial, como contraseñas y claves de API, mediante Secrets. Practicas Kubernetes Basics con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kubernetes Basics?

No se requiere experiencia previa. Kubernetes Basics en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Secrets para datos confidenciales»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kubernetes Basics?

Sí. Cada lección de Kubernetes Basics incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. ConfigMaps para la configuración
  2. Secrets para datos confidenciales
  3. Volúmenes persistentes y solicitudes de almacenamiento
  4. StorageClasses y aprovisionamiento dinámico
← Volver a Kubernetes Basics