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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, passa a CoddyKit PRO. Il corso Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?
Non è richiesta alcuna esperienza precedente. Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?
Sì. Ogni lezione Docker & DevOps Fundamentals 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