ConfigMap e Secret
Gestisca in modo sicuro i dati di configurazione e le informazioni sensibili nei deployment Kubernetes utilizzando ConfigMap e Secret.
ConfigMap e Secret è una lezione DevOps Bootcamp gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento DevOps Bootcamp, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso DevOps Bootcamp include 4 lezioni in totale.
Introduzione a ConfigMap e Secret
Benvenuti! In questa lezione imparerete a gestire i dati di configurazione e le informazioni sensibili in Kubernetes. Esploreremo ConfigMap e Secret, due strumenti essenziali per deployment delle applicazioni flessibili e sicuri.

Perché esternalizzare la configurazione?
Immaginate di inserire direttamente nell'immagine Docker dell'applicazione le credenziali del database o le chiavi API. Questo rende difficili gli aggiornamenti ed espone i dati sensibili.
- Rigidità: le modifiche richiedono la ricostruzione dell'immagine.
- Rischio per la sicurezza: i dati sensibili vengono incorporati nell'immagine.
- Specificità dell'ambiente: ambienti diversi (sviluppo, produzione) richiedono impostazioni diverse.
ConfigMap: dati non sensibili
Un ConfigMap è un oggetto Kubernetes utilizzato per archiviare dati di configurazione non sensibili sotto forma di coppie chiave-valore. Pensatelo come un punto centralizzato per le impostazioni dell'applicazione, ad esempio i livelli di log o gli endpoint API.
Separa la configurazione dal codice dell'applicazione, rendendo i deployment più portabili e facili da gestire.
Definire un ConfigMap
Potete creare un ConfigMap da valori letterali, file o directory. Ecco un semplice esempio definito in un file YAML:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
data:
log_level: "INFO"
api_endpoint: "http://myapi.example.com"ConfigMap come variabili d'ambiente
Una volta creato, un Pod può utilizzare i dati di un ConfigMap come variabili d'ambiente. È un modo comune per passare le impostazioni all'applicazione.
Ecco come un Pod utilizza il nostro my-app-config:
apiVersion: v1
kind: Pod
metadata:
name: configmap-env-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
env:
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-app-config
key: log_level
- name: API_ENDPOINT
valueFrom:
configMapKeyRef:
name: my-app-config
key: api_endpoint
restartPolicy: NeverConfigMap come file montati
In alternativa, i dati di un ConfigMap possono essere montati come file all'interno del container. Ogni coppia chiave-valore diventa un file, con la chiave come nome del file e il valore come contenuto.
È utile per i file di configurazione che l'applicazione deve leggere da un percorso specifico.
apiVersion: v1
kind: Pod
metadata:
name: configmap-file-pod
spec:
containers:
- name: my-container
image: busybox
command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: my-app-config
restartPolicy: NeverSecret: dati sensibili
I Secret sono simili ai ConfigMap, ma sono progettati per dati sensibili come password, chiavi API o certificati TLS. Kubernetes aiuta a gestirli e distribuirli in modo sicuro.
Mentre i ConfigMap archiviano i dati in testo semplice, i Secret sono codificati in base64. Questa operazione NON è una cifratura, ma impedisce l'esposizione accidentale.
Definire un Secret
Quando create un Secret, i valori devono essere codificati in base64. Potete utilizzare echo -n 'my-password' | base64 per codificarli.
Ecco un esempio per la password di un database:
apiVersion: v1
kind: Secret
metadata:
name: db-credentials
type: Opaque
data:
username: YWRtaW4= # base64 of 'admin'
password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'Utilizzare i Secret nei Pod
I Pod utilizzano i Secret in modo molto simile ai ConfigMap: come variabili d'ambiente o file montati. Kubernetes li decodifica automaticamente prima di presentarli al container.
In genere, per motivi di sicurezza, è preferibile utilizzarli come file montati, poiché le variabili d'ambiente possono essere registrate o ispezionate più facilmente.
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: my-app-container
image: busybox
command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
env:
- name: DB_USERNAME
valueFrom:
secretKeyRef:
name: db-credentials
key: username
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: db-credentials
key: password
restartPolicy: NeverBuone pratiche di sicurezza
Ricordate: la codifica base64 non è una cifratura. Per una vera cifratura dei dati inattivi, potrebbe essere necessario un backend per i Secret Kubernetes (come Vault) oppure utilizzare i servizi KMS del cloud provider.
- RBAC: controllate chi può accedere ai Secret.
- Privilegio minimo: concedete ai Pod l'accesso solo ai Secret di cui hanno bisogno.
- File montati: preferite montare i Secret come file anziché utilizzarli come variabili d'ambiente.
Verifica rapida sulla configurazione
Dovete archiviare in Kubernetes una chiave API (sensibile) e un'impostazione per il livello di log (non sensibile) della vostra applicazione.
Quali oggetti Kubernetes dovreste utilizzare rispettivamente?
Riepilogo: ConfigMap e Secret
Ottimo lavoro! Avete imparato a gestire la configurazione delle applicazioni e i dati sensibili in Kubernetes.
- ConfigMap: archiviano coppie chiave-valore non sensibili.
- Secret: archiviano dati sensibili (codificati in base64).
- Entrambi possono essere utilizzati dai Pod come variabili d'ambiente o file montati.
- Seguite sempre le buone pratiche di sicurezza quando gestite informazioni sensibili.
Ora esplorate argomenti avanzati sulla sicurezza, come RBAC e le soluzioni esterne per la gestione dei Secret.
Domande Frequenti
La lezione «ConfigMap e Secret» è gratuita?
Sì — il testo completo di «ConfigMap e Secret» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso DevOps Bootcamp, passa a CoddyKit PRO. Il corso DevOps Bootcamp include 4 lezioni in totale.
Cosa imparerò in «ConfigMap e Secret»?
Gestisca in modo sicuro i dati di configurazione e le informazioni sensibili nei deployment Kubernetes utilizzando ConfigMap e Secret. Eserciti DevOps Bootcamp con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare DevOps Bootcamp?
Non è richiesta alcuna esperienza precedente. DevOps Bootcamp su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «ConfigMap e Secret»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione DevOps Bootcamp?
Sì. Ogni lezione DevOps Bootcamp include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Deployment per app stateless
- Service per l'accesso di rete
- ConfigMap e Secret
- Ingress e routing esterno