Introducció
En Kubernetes, els Secrets són objectes que permeten emmagatzemar i gestionar informació sensible, com ara contrasenyes, tokens OAuth, i claus SSH. Utilitzar Secrets és una pràctica recomanada per evitar incloure informació sensible directament en els manifests de les aplicacions o en les imatges de contenidors.
Conceptes Clau
- Secret: Un objecte de Kubernetes que conté una petita quantitat de dades sensibles com contrasenyes, tokens o claus.
- Base64: Els Secrets s'emmagatzemen en format Base64 per a la seva codificació.
- Tipus de Secrets: Kubernetes suporta diversos tipus de Secrets, com ara
Opaque
,kubernetes.io/service-account-token
,kubernetes.io/dockercfg
, etc.
Creació de Secrets
- Creació de Secrets des de fitxers
Pots crear un Secret a partir d'un fitxer que contingui les dades sensibles.
- Creació de Secrets des de literals
També pots crear Secrets directament des de la línia de comandes utilitzant literals.
kubectl create secret generic my-secret --from-literal=username=admin --from-literal=password=secret
- Creació de Secrets amb un manifest YAML
Pots definir un Secret en un fitxer YAML i aplicar-lo al clúster.
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: username: YWRtaW4= # admin en Base64 password: c2VjcmV0 # secret en Base64
Aplica el manifest al clúster:
Accés als Secrets
- Utilització de Secrets com a Variables d'Entorn
Pots utilitzar Secrets com a variables d'entorn en els teus Pods.
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image env: - name: USERNAME valueFrom: secretKeyRef: name: my-secret key: username - name: PASSWORD valueFrom: secretKeyRef: name: my-secret key: password
- Utilització de Secrets com a Volums
Pots muntar Secrets com a volums en els teus Pods.
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image volumeMounts: - name: secret-volume mountPath: /etc/secret readOnly: true volumes: - name: secret-volume secret: secretName: my-secret
Exercicis Pràctics
Exercici 1: Creació i Utilització de Secrets
-
Crea un Secret anomenat
db-secret
amb les següents dades:username
:dbuser
password
:dbpassword
-
Defineix un Pod que utilitzi aquestes dades com a variables d'entorn.
Solució
- Creació del Secret:
kubectl create secret generic db-secret --from-literal=username=dbuser --from-literal=password=dbpassword
- Definició del Pod:
apiVersion: v1 kind: Pod metadata: name: db-pod spec: containers: - name: db-container image: my-db-image env: - name: DB_USERNAME valueFrom: secretKeyRef: name: db-secret key: username - name: DB_PASSWORD valueFrom: secretKeyRef: name: db-secret key: password
Aplica el manifest del Pod:
Exercici 2: Muntar un Secret com a Volum
-
Crea un Secret anomenat
app-secret
amb les següents dades:config
:appconfig
-
Defineix un Pod que munti aquest Secret en el directori
/etc/app-secret
.
Solució
- Creació del Secret:
- Definició del Pod:
apiVersion: v1 kind: Pod metadata: name: app-pod spec: containers: - name: app-container image: my-app-image volumeMounts: - name: secret-volume mountPath: /etc/app-secret readOnly: true volumes: - name: secret-volume secret: secretName: app-secret
Aplica el manifest del Pod:
Errors Comuns i Consells
- Error de codificació Base64: Assegura't que les dades en els Secrets estiguin codificades en Base64. Pots utilitzar la comanda
echo -n 'data' | base64
per codificar les dades. - Permisos insuficients: Verifica que el servei o el Pod tingui els permisos necessaris per accedir als Secrets.
- Muntatge incorrecte: Assegura't que el camí de muntatge del volum és correcte i que el Pod té accés de lectura si és necessari.
Conclusió
Els Secrets són una eina poderosa en Kubernetes per gestionar informació sensible de manera segura. Hem après a crear Secrets, utilitzar-los com a variables d'entorn i muntar-los com a volums en els Pods. Aquests conceptes són fonamentals per mantenir la seguretat i la integritat de les aplicacions desplegades en Kubernetes.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster