Skip to content

Cum să gestionezi secretele cu Secret în Kubernetes

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să gestionezi secretele cu Secret în Kubernetes. We cover key concepts, practical examples, and best practices.

Problema

Aplicațiile tale au nevoie de parole, token-uri de acces și chei API, dar nu vrei să le stochezi în plain text în cod sau în ConfigMap-uri.

Soluția Pas cu Pas

1. Creează un Secret din linia de comandă

kubectl create secret generic db-secret \
  --from-literal=username=admin \
  --from-literal=password=s3cret!

Output:

secret/db-secret created

2. Creează un Secret din fișier

echo -n "admin" > ./username.txt
echo -n "s3cret!" > ./password.txt
kubectl create secret generic db-secret --from-file=./username.txt --from-file=./password.txt

3. Creează un Secret din YAML

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=  # base64("admin")
  password: czNjcmV0IQ==  # base64("s3cret!")
kubectl apply -f secret.yaml

4. Montează Secret ca variabile de mediu

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

5. Montează Secret ca volum

spec:
  containers:
  - name: app
    image: my-app:latest
    volumeMounts:
    - name: secret-volume
      mountPath: /etc/secrets
      readOnly: true
  volumes:
  - name: secret-volume
    secret:
      secretName: db-secret

6. Citește Secret-ul

kubectl get secret db-secret -o jsonpath='{.data.password}' | base64 --decode

Output:

s3cret!

Prevenție

  • Activează criptarea la nivel de etcd pentru Secrets.
  • Folosește un tool extern (Sealed Secrets, External Secrets Operator, Vault) pentru management avansat.
  • Nu face commit la Secrets în Git. Folosește sops sau helm-secrets.
  • Restricționează accesul la Secrets cu RBAC.

Greșeli Comune

  1. Valori ne-encode în YAMLdata necesită valori base64, stringData acceptă text simplu.
  2. Commit în Git — Secrets în repositorii sunt un risc major de securitate.
  3. Secret prea mare — Limita este 1 MB. Pentru fișiere mari, folosește un volum extern.
  4. Fără criptare etcd — Secrets sunt stocați în plain text în etcd dacă nu e configurată criptarea.
  5. Acces nere strâns — Oricine cu acces la API poate citi Secrets din namespace-ul respectiv.

Exercițiu

Creează un Secret cu trei perechi cheie-valoare, montează-l ca variabile de mediu într-un Pod și verifică valorile cu kubectl exec.

FAQ

### Cum decodez valorile unui Secret?

Folosește kubectl get secret <nume> -o jsonpath='{.data.<cheie>}' | base64 --decode.

Ce tipuri de Secrets există?

Opaque (generic), kubernetes.io/dockerconfigjson (pentru registry-uri Docker), kubernetes.io/tls (certificate TLS), kubernetes.io/service-account-token.

Cum criptez Secrets în tranzit?

Kubernetes criptează automat traficul API prin TLS. Pentru criptarea în repaus, configurează encryption-provider-config în API server.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează seamless cu Kubernetes pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro