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-secretExercicis Pràctics
Exercici 1: Creació i Utilització de Secrets
-
Crea un Secret anomenat
db-secretamb les següents dades:username:dbuserpassword: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: passwordAplica el manifest del Pod:
Exercici 2: Muntar un Secret com a Volum
-
Crea un Secret anomenat
app-secretamb 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-secretAplica 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' | base64per 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
