ConfigMap

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

In questa pagina viene descritto l'oggetto ConfigMap di Kubernetes e il suo utilizzo in Google Kubernetes Engine (GKE).

Panoramica

Gli oggetti ConfigMap associano elementi di configurazione non sensibili come file di configurazione, argomenti della riga di comando e variabili di ambiente ai container del pod e ai componenti di sistema al runtime.

Un ConfigMap separa le configurazioni dal pod e dai componenti, il che aiuta a mantenere i tuoi carichi di lavoro portatili. In questo modo è facile modificare e gestire le configurazioni ed evitare dati di configurazione hardcoded sulle specifiche dei pod.

Crea un ConfigMap

Puoi creare un ConfigMap utilizzando il seguente comando:

kubectl create configmap NAME DATA

Sostituisci quanto segue:

  • NAME: il nome dell'oggetto ConfigMap.
  • DATA: i dati di configurazione di ConfigMap, che possono essere uno dei seguenti:

    • un percorso a una directory contenente uno o più file di configurazione, indicati utilizzando il flag --from-file.
    • coppie chiave-valore, ciascuna specificata utilizzando i flag --from-literal.

Per scoprire di più su kubectl create, consulta la documentazione di riferimento.

Puoi anche creare un ConfigMap definendo un oggetto ConfigMap in un file manifest YAML e eseguendo il deployment dell'oggetto utilizzando kubectl create -f FILE_NAME.

Crea un ConfigMap da file

Per creare un ConfigMap da uno o più file, utilizza --from-file. Puoi specificare i file in qualsiasi formato di testo normale, ad esempio .properties, .txt o .env, a condizione che i file contengano coppie chiave-valore.

Come best practice, archivia i tuoi file ConfigMap in Git. In questo modo, puoi sfruttare una pipeline di integrazione e distribuzione continue (CI/CD).

Per passare un singolo file o più file, esegui il comando seguente:

kubectl create configmap NAME \
    --from-file FILE_PATH_1 \
    --from-file FILE_PATH_2

Sostituisci quanto segue:

  • NAME: il nome dell'oggetto ConfigMap.
  • FILE_PATH_1: il percorso del file, ad esempio path/to/file.properties.
  • FILE_PATH_2: il percorso di un secondo file, ad esempio path/to/file2.properties.

Per passare in una directory che contiene più file, esegui questo comando:

kubectl create configmap NAME \
    --from-file DIRECTORY

Sostituisci quanto segue:

  • NAME: il nome dell'oggetto ConfigMap.
  • DIRECTORY: il percorso della directory, ad esempio path/to/directory.

Quando crei un ConfigMap basato sui file, il valore predefinito della chiave è basename del percorso file e il valore predefinito dei contenuti del file. Puoi anche specificare una chiave alternativa.

Quando crei un ConfigMap basato su directory, ogni file con un nome di base che rappresenta una chiave valida nella directory viene pacchettizzato nell'oggetto ConfigMap. kubectl ignora i file non regolari, come simboli, dispositivi e barre verticali. kubectl ignora anche le sottodirectory perché kubectl create configmap non si ripete in sottodirectory.

Ad esempio, il seguente comando crea un ConfigMap chiamato game-data da una directory, game-configs, che contiene due file properties: game.properties e ui.properties:

kubectl create configmap game-data \
    --from-file game-configs/

L'esecuzione di kubectl get configmap game-data -o yaml restituisce il seguente output:

apiVersion: v1
data:
  game.properties: |
    enemies=aliens
    lives=3
    ...
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    ...
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: game-data
  namespace: default
  resourceVersion: ...
  selfLink: /api/v1/namespaces/default/configmaps/game-data
  uid: ...

Creare un ConfigMap da valori letterali

Per creare un ConfigMap da valori letterali, utilizza --from-literal.

Ad esempio, il seguente comando crea un ConfigMap denominato LITERAL_DATA con due coppie chiave-valore:

kubectl create configmap LITERAL_DATA \
    --from-literal key1=VALUE_1 \
    --from-literal key2=VALUE_2

Devi specificare --from-literal per ogni coppia chiave-valore.

L'esecuzione di kubectl get configmap literal-data -o yaml restituisce il seguente output:

apiVersion: v1
data:
  key1: VALUE_1
  key2: VALUE_2
kind: ConfigMap
metadata:
  creationTimestamp: ...
  name: LITERAL_DATA
  namespace: default
  resourceVersion: ....
  selfLink: /api/v1/namespaces/default/configmaps/literal-data
  uid: ...

Uso di un ConfigMap

Per utilizzare un ConfigMap con i tuoi carichi di lavoro, puoi specificare una variabile di ambiente che faccia riferimento ai valori di ConfigMap o montare un volume contenente ConfigMap. Per ulteriori informazioni, consulta la sezione Configurare un pod per l'uso di un ConfigMap.

Passaggi successivi