I segreti di Kubernetes sono segreti quanto la cronologia del tuo browser. Sono memorizzati in testo semplice, visibili a chiunque abbia accesso al cluster, e non parliamo nemmeno dell'incubo del controllo delle versioni. Ecco che entrano in gioco i Sealed Secrets, il mago della crittografia che renderà i tuoi dati sensibili davvero... sensibili.

Perché è importante?

  • Crittografa i tuoi segreti prima che arrivino al controllo delle versioni
  • Decrittografali automaticamente nel tuo cluster
  • Dormi sonni tranquilli sapendo che le tue chiavi API non vagano per internet

Alla fine di questo articolo, sigillerai i segreti come un professionista, impressionando i tuoi colleghi e forse ottenendo quella promozione. (Ok, non posso promettere la promozione, ma i tuoi segreti saranno sicuramente più sicuri.)

Sealed Secrets: La Storia delle Origini del Supereroe

I segreti di Kubernetes, ma con un mantello e una maschera. Questo è essenzialmente ciò che sono i Sealed Secrets. Sono segreti di Kubernetes crittografati gestiti dal controller Sealed Secrets. Pensalo come la tua guardia del corpo personale per i dati sensibili.

Perché i Sealed Secrets sono il Batman di Kubernetes:

  • Possono stare tranquillamente nel tuo repository Git senza esporsi
  • Solo il tuo cluster Kubernetes può vedere cosa c'è dentro
  • Sono come i normali segreti di Kubernetes, ma con superpoteri

Installare il Controller Sealed Secrets: Il Tuo Nuovo Migliore Amico

Prima di iniziare a sigillare segreti come se non ci fosse un domani, dobbiamo installare il controller Sealed Secrets.

Prerequisiti:

  • Un cluster Kubernetes (se non ne hai uno, cosa ci fai qui?)
  • kubectl configurato e pronto all'uso

Iniziamo con Helm:


# Aggiungi il repository Sealed Secrets
helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets

# Aggiorna i tuoi repository
helm repo update

# Installa Sealed Secrets
helm install sealed-secrets sealed-secrets/sealed-secrets

Boom! Il tuo cluster è ora dotato di un superpotere per sigillare i segreti. Assicurati che sia attivo e funzionante:


kubectl get pods -n kube-system | grep sealed-secrets

Se vedi un pod in esecuzione, datti una pacca sulla spalla. Sei ufficialmente nel business della sigillatura dei segreti.

Creare e Crittografare un Sealed Secret: Spionaggio 101

Ora che abbiamo allestito il nostro covo segreto, è tempo di iniziare a creare alcuni documenti classificati. Ma prima, abbiamo bisogno degli strumenti giusti.

Passo 1: Installa kubeseal

kubeseal è il tuo aiutante per la crittografia. Installalo così:


wget https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.18.1/kubeseal-linux-amd64 -O kubeseal
sudo install -m 755 kubeseal /usr/local/bin/kubeseal

Passo 2: Crea un Segreto

Creiamo una password super-segreta per il database:


apiVersion: v1
kind: Secret
metadata:
  name: my-database-secret
type: Opaque
stringData:
  DB_PASSWORD: "supersecretpassword123"

Salva questo come secret.yaml. Ma ricorda, questo file è sicuro quanto una cassaforte di cartapesta.

Passo 3: Sigilla quel Segreto!

È ora di mettere quel segreto in un caveau:


kubeseal --format yaml < secret.yaml > sealed-secret.yaml

Voilà! Ora hai un sealed-secret.yaml che puoi inviare a Git senza paura. È come se il tuo segreto avesse ottenuto la sua armatura di Iron Man.

Distribuire i Sealed Secrets: Missione Impossibile

Ora che abbiamo sigillato il nostro segreto, distribuiamolo al nostro cluster. È come inviare un documento classificato attraverso il territorio nemico.


kubectl apply -f sealed-secret.yaml

Il controller Sealed Secrets entra in azione, decrittografa il tuo segreto e crea un normale Secret di Kubernetes. Magia!

Per verificare, esegui:


kubectl get secrets

Dovresti vedere il tuo segreto decrittografato pronto per essere utilizzato dalle tue applicazioni. Missione compiuta!

Gestire i Sealed Secrets tra Ambienti: Segretezza Multiversale

Diversi ambienti, diversi segreti. È come avere identità segrete separate per il lavoro e la tua vita da supereroe.

Il Multiverso della Follia (o semplicemente i tuoi diversi ambienti)

  • Dev: Dove gli errori accadono, ma va bene
  • Staging: La prova generale per i tuoi segreti
  • Produzione: Dove avviene la magia (e dove gli errori non sono assolutamente accettabili)

Per gestire questo, vorrai chiavi di crittografia diverse per ogni ambiente. Ecco come:


# Per Dev
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > dev-pub-cert.pem

# Per Staging
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > staging-pub-cert.pem

# Per Produzione
kubeseal --fetch-cert --controller-name=sealed-secrets-controller --controller-namespace=kube-system > prod-pub-cert.pem

Ora, quando sigilli segreti per diversi ambienti:


# Per Dev
kubeseal --format yaml --cert dev-pub-cert.pem < secret.yaml > dev-sealed-secret.yaml

# Per Staging
kubeseal --format yaml --cert staging-pub-cert.pem < secret.yaml > staging-sealed-secret.yaml

# Per Produzione
kubeseal --format yaml --cert prod-pub-cert.pem < secret.yaml > prod-sealed-secret.yaml

Ogni ambiente ottiene il suo segreto crittografato in modo unico. È come avere una stretta di mano segreta diversa per ciascuno dei tuoi team di supereroi.

Ruotare Segreti e Chiavi: Il Cerchio della Vita (Segreta)

Anche i supereroi devono cambiare costume a volte. Lo stesso vale per i tuoi segreti e le chiavi di crittografia.

Quando ruotare:

  • Regolarmente, come parte delle tue migliori pratiche di sicurezza
  • Quando sospetti una violazione
  • Quando Dave dell'operativo pubblica accidentalmente le chiavi su Slack (Classico Dave)

Come ruotare un segreto:

  1. Aggiorna il tuo YAML originale del Segreto
  2. Sigillalo di nuovo con kubeseal
  3. Applica il nuovo Sealed Secret al tuo cluster

Esempio: Ruotare una password del database


apiVersion: v1
kind: Secret
metadata:
  name: my-database-secret
type: Opaque
stringData:
  DB_PASSWORD: "evenmoresecretpassword456"

kubeseal --format yaml < updated-secret.yaml > updated-sealed-secret.yaml
kubectl apply -f updated-sealed-secret.yaml

Le tue applicazioni utilizzeranno ora la nuova password senza alcun tempo di inattività. Operatore impeccabile!

Migliori Pratiche: Il Codice del Supereroe

Ecco le tue per i Sealed Secrets:

  • Mai, mai commettere segreti in testo semplice al controllo delle versioni (ti sto guardando, stagista)
  • Ruota le tue chiavi di crittografia regolarmente, come ruoti le gomme (ma più spesso)
  • Usa RBAC per controllare chi può crittografare/decrittografare i segreti (non tutti devono essere Nick Fury)
  • Monitora l'uso dei segreti con i log di audit di Kubernetes (fidati, ma verifica)

Strumenti e Alternative: Scegliere il Tuo Superpotere

I Sealed Secrets non sono l'unico eroe in città. Diamo un'occhiata ad alcuni altri contendenti:

  • HashiCorp Vault: Il coltellino svizzero della gestione dei segreti
  • AWS Secrets Manager: Per quando sei tutto su AWS
  • Azure Key Vault: La risposta di Microsoft a "dove metto i miei segreti?"

I Sealed Secrets brillano per la loro semplicità e approccio nativo a Kubernetes. Ma come scegliere tra Iron Man e Capitan America, lo strumento migliore dipende dalle tue esigenze specifiche.

Risoluzione dei Problemi: Quando i Tuoi Superpoteri Falliscono

Anche i supereroi hanno giornate no. Ecco come affrontare i problemi comuni con i Sealed Secrets:

Il segreto non si decrittografa?


kubectl get sealedsecrets
kubectl get events --field-selector involvedObject.kind=SealedSecret

Il controller si comporta male?


kubectl logs deployment/sealed-secrets-controller -n kube-system

Chiavi non corrispondenti?

Assicurati di utilizzare la chiave pubblica giusta per il cluster giusto. È come assicurarsi di essere nell'universo giusto prima di provare a sollevare il martello di Thor.

Conclusione: Con Grande Potere Deriva Grande Crittografia

I Sealed Secrets trasformano l'incubo della gestione dei segreti di Kubernetes in un sogno. È sicuro, è scalabile e ti permette di dormire la notte sapendo che i tuoi segreti sono davvero segreti.

Ricorda:

  • Sigilla i tuoi segreti prima che tocchino il controllo delle versioni
  • Usa chiavi diverse per ambienti diversi
  • Ruota regolarmente
  • Monitora e verifica

Ora vai e sigilla quei segreti! Il tuo cluster (e la tua pressione sanguigna) ti ringrazieranno.

Per ulteriori informazioni, consulta la documentazione ufficiale di Sealed Secrets. E ricorda, con grandi segreti viene grande responsabilità!