Utilizzo delle mappe di configurazione

Impara come utilizzare le configmap in Code Engine. In Code Engine, puoi archiviare le tue informazioni come coppie chiave - valore nelle mappe di configurazione che possono essere utilizzate dal tuo carico di lavoro della tua applicazione, lavoro o funzione utilizzando le variabili di ambiente.

Cosa sono le configmap e perché dovrei usarle?

In Code Engine, sia i segreti che le mappe di configurazione sono coppie chiave - valore. Quando associate alle variabili di ambiente, le relazioni NAME=VALUE sono impostate in modo che il nome della variabile di ambiente corrisponda alla "chiave" di ogni voce in tali mappe e il valore della variabile di ambiente sia il "valore" di tale chiave.

Una configmap fornisce un metodo per includere informazioni di dati non sensibili alla tua distribuzione. Facendo riferimento ai valori dalla tua configmap come variabili di ambiente, puoi disaccoppiare le informazioni specifiche dalla tua distribuzione e mantenere la tua applicazione, lavoro o funzione portatile. Una configmap contiene informazioni in coppie chiave - valore.

Poiché i segreti e le mappe di configurazione sono entità simili (tranne che i segreti sono archiviati in modo più sicuro), anche il modo in cui si interagisce e si lavora con i segreti e le mappe di configurazione è simile. Per ulteriori informazioni sui segreti, vedi Gestione dei segreti.

Vedo delle mappe di configurazione che non ho creato. Posso eliminarli?

No. Code Engine crea automaticamente le mappe di configurazione istio-ca-root e kube-root-ca nello spazio dei nomi. Code Engine utilizza queste mappe di configurazione internamente. Se elimini queste mappe di configurazione, Code Engine le ricrea automaticamente.

Creazione di mappe di configurazione

Crea le mappe di configurazione con Code Engine.

Creazione di una configmap dalla console

Crea le mappe di configurazione con la console Code Engine.

Prima di iniziare, creare un progetto.

  1. Una volta che il tuo progetto si trova nello stato Attivo, fai clic sul nome del tuo progetto nella pagina ProgettiCode Engine.
  2. Dalla pagina Panoramica, fare clic su Segreti e mappe di configurazione.
  3. Dalla pagina Segreti e mappe di configurazione, fare clic su Crea per creare la propria mappa di configurazione.
  4. Dalla pagina Crea segreto o configmap, completare la seguente procedura:
    1. Fare clic su Configmap e fare clic su Avanti.
    2. Fornire un nome, ad esempio myconfigmap.
    3. Fare clic su Aggiungi coppia chiave - valore. Specificare una o più coppie chiave - valore per questa configmap. Ad esempio, specificare una chiave come key1 con il valore value1 e specificare un'altra chiave come key2 con il valore value2. Notare che è possibile specificare i valori su una o più righe. Il nome che scegli per la tua chiave non deve necessariamente essere lo stesso della tua variabile di ambiente.
    4. Fare clic su Crea per creare la configmap.

Ora che la tua configmap è stata creata dalla console, vai alla pagina Secrets and configmaps per visualizzare un elenco di segreti e configmap definiti. È possibile applicare filtri per personalizzare l'elenco in base alle proprie esigenze.

Crea una configmap con la CLI

Crea mappe di configurazione con la CLI Code Engine.

È possibile popolare una configmap in diversi modi. È possibile popolarlo specificando le coppie chiave - valore direttamente sulla riga comandi oppure è possibile puntare a un file.

Prima di iniziare

Quando si crea (o si aggiorna) una configmap da un file, il formato deve essere --from-file FILE o --from-file KEY=FILE. In Code Engine, quando si utilizza un file per specificare i valori della configmap, tutto il contenuto all'interno del file diventa il valore per la coppia chiave - valore. Quando utilizzi il formato di opzione di --from-file KEY=FILE, KEY è il nome della variabile di ambiente nota al tuo carico di lavoro dell'applicazione, del lavoro o della funzione. Quando utilizzi il formato dell'opzione --from-file FILE, FILE è il nome della variabile di ambiente nota al tuo lavoro, alla tua applicazione o alla tua funzione. Se il file contiene una o più coppie chiave - valore, utilizzare l'opzione --from-env-file per aggiungere una variabile di ambiente per ogni coppia chiave - valore nel file specificato. Le righe nel file specificato che sono vuote o che iniziano con # vengono ignorate.

Creazione di una configmap con la CLI

Creare una configmap con il comando configmap create in uno dei seguenti modi:

  • Creare una configmap direttamente sulla riga comandi utilizzando l'opzione --from-literal nel formato KEY=VALUE. Ad esempio,

    ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshine
    
  • Creare una configmap utilizzando l'opzione --from-file per puntare ad un file. Utilizzando questa opzione, tutto il contenuto del file diventa il valore per la coppia chiave - valore. Per questo esempio, utilizzare un file denominato colors.txt, che contiene il testo blue, green, red.

    • Il seguente esempio utilizza il formato --from-file KEY=FILE con il comando configmap create:

      ibmcloud ce configmap create --name mycolorconfigmap --from-file TARGET=colors.txt
      
    • Il seguente comando di esempio utilizza il formato di --from-file FILE con il comando configmap create. In questo esempio, TARGET (nessuna estensione) è il nome del file, che è uguale al nome della variabile di ambiente nota al lavoro myjob di esempio.

      ibmcloud ce configmap create --name mycolorconfigmap2  --from-file TARGET
      
  • Creare una configmap utilizzando l'opzione --from-env-file per puntare a un file che contiene una o più righe che corrispondono al formato KEY=VALUE. Ogni riga del file specificato viene aggiunta come una coppia chiave - valore. Le righe nel file specificato che sono vuote o che iniziano con # vengono ignorate. Per questo esempio, utilizzare un file denominato colors_multi.txt che contiene le coppie chiave - valore: color1=yellow, color2=orange e color3=purple.

    ibmcloud ce configmap create --name mycolorconfigmapmulti --from-env-file colors_multi.txt
    

Elenco delle mappe di configurazione con la CLI

Ora che la mappa di configurazione è stata creata, utilizzare il comando configmap list per elencare tutte le mappe di configurazione nel progetto oppure utilizzare il comando configmap get per visualizzare i dettagli su una mappa di configurazione specifica. Ad esempio,

ibmcloud ce configmap get --name mycolorconfigmap

Output di esempio

Getting configmap 'mycolorconfigmap'...
OK

Name:          mycolorconfigmap
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           11s
Created:       2020-10-14 14:10:57 -0400 EDT

Data:
---
TARGET: blue, green, red

Aggiornamento delle mappe di configurazione

È possibile modificare le coppie chiave - valore per le configmap esistenti.

Aggiornamento delle configmap dalla console

È possibile aggiornare una configmap esistente e le relative coppie chiave - valore dalla console.

  1. È possibile aggiornare le coppie chiave - valore per le mappe di configurazione definite dalla console in uno dei seguenti modi.

    • Andare alla pagina Segreti e mappe di configurazione per il proprio progetto e individuare la mappa di configurazione che si desidera aggiornare. Fare clic sul nome della configmap che si desidera aggiornare per aprirla.
    • Se alla tua configmap fa riferimento un carico di lavoro dell'applicazione, del lavoro o della funzione, utilizza i link nella tabella delle variabili di ambiente nella scheda Variabili ambientali del tuo carico di lavoro. Questi collegamenti ti portano direttamente alla tua configmap.
  2. Fare clic su Modifica e apportare gli aggiornamenti per la propria configmap.

  3. Fare clic su Salva per salvare le modifiche nella mappa di configurazione.

Se la tua configmap aggiornata è indicata come riferimento da un carico di lavoro di un'applicazione, un lavoro o una funzione, il tuo carico di lavoro deve essere riavviato per rendere effettivi i nuovi dati.

  • App - Dalla pagina della tua app, fai clic su Nuova revisione e quindi su Salva e distribuisci. In alternativa, puoi attendere che la tua applicazione si riduca a zero e quando l'applicazione si ridimensiona, l'applicazione utilizza la configmap aggiornata.
  • Lavori - Dalla pagina per il lavoro, fare clic su Inoltra lavoro per eseguire il lavoro oppure è possibile rieseguire un lavoro. Questa nuova esecuzione del job utilizza la configmap aggiornata.
  • Funzione - La funzione viene riavviata quando viene richiamata di nuovo. È possibile verificare la funzione facendo clic su Verifica funzione dalla pagina della funzione.

Aggiornamento delle mappe di configurazione con la CLI

È possibile aggiornare una configmap esistente e le relative coppie chiave - valore con la CLI.

  1. Per modificare il valore di una coppia chiave - valore in una configmap, utilizzare il comando configmap update. Aggiorniamo la configmap myliteralconfigmap per modificare il valore della chiave TARGET da Sunshine a Stranger.

    ibmcloud ce configmap update --name myliteralconfigmap --from-literal "TARGET=Stranger"
    
  2. Ora che la mappa di configurazione è aggiornata, utilizzare il comando configmap get per visualizzare i dettagli su una mappa di configurazione specifica. Ad esempio,

    ibmcloud ce configmap get --name myliteralconfigmap
    

    Output di esempio

    Getting configmap 'myliteralconfigmap'...
    OK
    
    Name:          myliteralconfigmap
    ID:            abcdefgh-abcd-abcd-abcd-c88e2775388e
    Project Name:  myproject
    Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
    Age:           21m
    Created:       2021-05-14T07:57:11-04:00
    
    Data:
    ---
    TARGET: Stranger
    

Riferimento alle mappe di configurazione

Il carico di lavoro della tua applicazione, del tuo lavoro o della tua funzione può utilizzare e utilizzare le informazioni memorizzate in una mappa di configurazione utilizzando le variabili di ambiente.

Riferimento alle mappe di configurazione dalla console

Puoi utilizzare la console per creare variabili di ambiente per la tua applicazione, il tuo lavoro o il tuo carico di lavoro che fanno riferimento completamente a una mappa di configurazione o a singole chiavi in una mappa di configurazione.

Prima di poter fare riferimento a una configmap, è necessario che esista. Vedere creazione di una configmap.

Dalla console, puoi fare riferimento solo a una singola chiave di una configmap definita per variabile di ambiente. Se è necessario fare riferimento a più di una chiave di una configmap, ripetere i passi per definire un'altra variabile di ambiente che fa riferimento a una chiave diversa.

  1. Per fare riferimento a una configmap definita dalla tua applicazione, lavoro o carico di lavoro della funzione, crea una variabile di ambiente. La variabile di ambiente può fare riferimento completamente a una configmap esistente o a una singola chiave in una configmap esistente. Ad esempio, si faccia riferimento alla mappa di configurazione myconfigmap dall'applicazione myapp. Quando si fa riferimento completamente a una configmap (o segreto), è possibile specificare facoltativamente un prefix. Utilizzando un prefisso come myconfigmap_, ogni chiave ha come prefisso myconfigmap_.

  2. Dopo aver creato le variabili di ambiente, è necessario riavviare l'applicazione, il lavoro o il carico di lavoro della funzione per rendere effettive le modifiche. Per le applicazioni, salva e distribuisci la tua applicazione per aggiornarla con le variabili di ambiente che hai definito. Per lavori e funzioni, il carico di lavoro viene aggiornato la volta successiva che viene chiamato con le variabili di ambiente definite.

  3. Una volta modificato lo stato dell'applicazione in Pronto, è possibile verificare l'applicazione. Fare clic su Applicazione di test, quindi fare clic su Invia richiesta nel riquadro Applicazione di test. Per aprire l'applicazione in una pagina web, fare clic su URL applicazione. In questo myapp esempio, poiché è stato specificato un prefisso per la mappa di configurazione myconfigmap con riferimento completo, tutte le chiavi di questa mappa di configurazione sono indicate come variabili di ambiente e hanno come prefisso myconfigmap_. Ad esempio, queste variabili di ambiente vengono visualizzate come myconfigmap_key1=value1 e myconfigmap_key2=value2.

Per aggiornare una variabile di ambiente che fa riferimento a una configmap, vedi Aggiornamento delle variabili di ambiente e considerazioni per aggiornare le variabili di ambiente.

Per rimuovere una variabile di ambiente che fa riferimento a una configmap, vedi eliminazione delle variabili di ambiente.

Riferimento alle mappe di configurazione con CLI

Per utilizzare le mappe di configurazione con i carichi di lavoro di applicazioni, lavori o funzioni, puoi impostare le variabili di ambiente che fanno riferimento completamente a una mappa di configurazione o fanno riferimento a singole chiavi in una mappa di configurazione con la CLI.

Riferimento alle mappe di configurazione esistenti con CLI

Per utilizzare una mappa di configurazione con un'applicazione, un lavoro o un carico di lavoro della funzione con la CLI, specifica l'opzione --env-from-configmap nei seguenti comandi.

Il seguente esempio descrive come fare riferimento a una mappa di configurazione esistente con un'applicazione utilizzando la CLI.

  1. Utilizzare il comando configmap create per creare le seguenti due mappe di configurazione per questo scenario.

    ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshine
    
    ibmcloud ce configmap create --name myliteralconfigmap2 --from-literal TARGET=Stranger
    
  2. Distribuisci un'applicazione e fai riferimento alla mappa di configurazione myliteralconfigmap. Per questo esempio, crea un'applicazione che utilizza l'immagine hello. Quando una richiesta viene inviata a questa applicazione di esempio, l'applicazione legge la variabile di ambiente TARGET e stampa Hello ${TARGET}. Se questa variabile di ambiente è vuota, viene restituito Hello World. Fare riferimento alla configmap myliteralconfigmap. Per ulteriori informazioni sul codice utilizzato per questo esempio, consultare hello.

    ibmcloud ce app create --name myhelloapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap
    
  3. Chiamare l'applicazione. L'applicazione restituisce Hello Sunshine, che è il valore per la chiave TARGET specificata nella mappa di configurazione myliteralconfigmap.

    curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud
    

    Output di esempio

    Hello Sunshine
    
  4. Aggiornare nuovamente l'app per utilizzare la configmap myliteralconfigmap2.

    Quando aggiorni un'applicazione, un lavoro o una funzione con una variabile di ambiente che fa riferimento completamente a una configmap (o a un segreto) per fare riferimento a una configmap (o a un segreto) differente, i riferimenti completi sovrascrivono altri riferimenti completi nell'ordine in cui sono impostati (l'ultimo set di riferimento sovrascrive il primo set).

    ibmcloud ce app update --name myhelloapp --env-from-configmap myliteralconfigmap2
    

    Output di esempio

    Updating application 'myhelloapp' to latest revision.
    [...]
    Run 'ibmcloud ce application get -n myhelloapp' to check the application status.
    OK
    
    https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud
    
  5. Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce Hello Stranger, che è il valore specificato nella configmap myliteralconfigmap2.

    curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud  
    

    Output di esempio

    Hello Stranger
    
  6. Aggiornare myliteralconfigmap2 per modificare la coppia chiave - valore.

    ibmcloud ce configmap update --name myliteralconfigmap2 --from-literal "TARGET=Happy day"
    

    Eseguire il comando ibmcloud ce configmap get -n myliteralconfigmap2 per visualizzare i dettagli della configmap.

    Output di esempio

    Name:          myliteralconfigmap2
    [...]
    Data:
    ---
    TARGET: Happy day
    
  7. Riavviare l'applicazione per rendere effettivi i nuovi dati.

    ibmcloud ce app update --name myhelloapp
    
  8. Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce Hello Happy day, che è il valore specificato nella configmap myliteralconfigmap2.

    curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud  
    

    Output di esempio

    Hello Happy day
    

Riferimento alle mappe di configurazione che non sono state ancora definite con la CLI

Se una configmap non esiste prima che vi si faccia riferimento, il carico di lavoro dell'applicazione, del lavoro o della funzione non viene distribuito correttamente e un lavoro o una funzione non viene eseguito correttamente fino a quando non viene creata la configmap di riferimento.

Se si sta utilizzando un'applicazione, un lavoro o un carico di lavoro di funzione e la configmap di riferimento non è ancora stata definita, è possibile utilizzare l'opzione --force per evitare la verifica dell'esistenza della configmap di riferimento. L'opzione --force può essere utilizzata con i seguenti comandi.

Quando si utilizza l'opzione --force con questi comandi, l'azione per creare, aggiornare o eseguire il carico di lavoro viene completata; tuttavia, l'applicazione, il lavoro o il carico di lavoro non verranno eseguiti correttamente fino a quando non esiste la configmap a cui si fa riferimento. Se si aggiunge l'opzione --no-wait oltre all'opzione --force al comando, il sistema completa l'azione e non attende che il carico di lavoro venga eseguito correttamente.

Il seguente esempio descrive come fare riferimento a una mappa di configurazione che non è ancora definita con un'applicazione utilizzando la CLI.

  1. Creare una app e fare riferimento alla configmap myliteralconfigmap3 non definita. Per questo esempio, crea un'applicazione Code Engine che utilizza l'immagine icr.io/codeengine/hello. Quando una richiesta viene inviata a questa applicazione di esempio, l'applicazione legge la variabile di ambiente TARGET e stampa Hello ${TARGET}. Se questa variabile di ambiente è vuota, viene restituito Hello World. Fare riferimento alla configmap myliteralconfigmap3. Per ulteriori informazioni sul codice utilizzato per questo esempio, consultare hello.

    Utilizzando l'opzione --no-wait con il comando app create, l'app viene creata e non attende che sia pronta.

    ibmcloud ce app create --name myapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap3 --force --no-wait
    
  2. Utilizzare il comando app get per visualizzare i dettagli dell'esecuzione del lavoro, incluse le informazioni della variabile di ambiente. Nota che l'applicazione è stata creata, ma non è ancora completamente distribuita.

    ibmcloud ce app get --name myapp
    

    Output di esempio

    Name:            myapp
    [...]
    Status Summary:  Application is deploying
    
    Environment Variables:
        Type                      Name                 Value
        ConfigMap full reference  myliteralconfigmap3
    Image:                  icr.io/codeengine/hello
    Resource Allocation:
        CPU:                1
        Ephemeral Storage:  400M
        Memory:             4G
    
    Runtime:
        Concurrency:    100
        Maximum Scale:  10
        Minimum Scale:  0
        Timeout:        300
    
    Conditions:
        Type                 OK     Age  Reason
        ConfigurationsReady  false  10s
        Ready                false  10s  RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready.
        RoutesReady          false  10s  RevisionMissing : Configuration "myapp" is waiting for a Revision to become ready.
    
    Events:
        Type    Reason   Age  Source              Messages
        Normal  Created  12s  service-controller  Created Configuration "myapp"
        Normal  Created  12s  service-controller  Created Route "myapp"
    
    Instances:
        Name                                      Revision      Running  Status   Restarts  Age
        myapp-00001-deployment-566d5c79b9-wttqs  myapp-00001  0/2      Pending  0         11s
    
  3. Creare la configmap.

    ibmcloud ce configmap create --name myliteralconfigmap3 --from-literal TARGET=Everyone
    
  4. Riavviare l'applicazione per rendere effettivi i nuovi dati.

    ibmcloud ce app update --name myapp
    
  5. Chiamare l'applicazione. L'applicazione restituisce Hello Everyone, che è il valore specificato nella configmap myliteralconfigmap3.

    curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud  
    

    Output di esempio

    Hello Everyone
    
  6. Aggiornare l'app in modo che faccia riferimento alla configmap myliteralconfigmap2 esistente. myliteralconfigmap2 è definita con il valore TARGET=Stranger. L'aggiornamento dell'applicazione riavvia l'applicazione per rendere effettivi i nuovi dati.

    Quando si aggiorna un'applicazione o un lavoro con una variabile di ambiente che fa riferimento completamente a una configmap (o segreto) per fare riferimento a una configmap (o segreto) differente, i riferimenti completi sovrascrivono altri riferimenti completi nell'ordine in cui sono impostati (l'ultima serie di riferimento sovrascrive la prima serie).

    ibmcloud ce app update --name myapp --env-from-configmap myliteralconfigmap2
    
  7. Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce Hello Stranger, che è il valore specificato nella configmap myliteralconfigmap2.

    curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloud  
    

    Output di esempio

    Hello Stranger
    

Per scenari più dettagliati su come fare riferimento ai segreti completi e alle mappe di configurazione come variabili di ambiente, sovrascrivendo i riferimenti e rimuovendo i riferimenti nella CLI, vedi Riferimento ai segreti e alle mappe di configurazione.

Eliminazione delle mappe di configurazione

Quando non hai più bisogno di una configmap, puoi eliminarla.

Eliminazione delle mappe di configurazione dalla console

  1. Per eliminare una configmap dalla console,
    1. Vai alla pagina Secrets and configmaps dalla tua Code Engine pagina Progetti.
    2. Fare clic sulla configmap che si desidera eliminare per aprirne la pagina.
    3. Dalla pagina della configmap specifica, fare clic su Azioni> Elimina configmap.
  2. Per cancellare una coppia chiave - valore per una configmap specifica dalla console,
    1. Vai alla pagina Secrets and configmaps dalla tua Code Engine pagina Progetti.
    2. Fare clic sulla configmap che si desidera modificare per aprire la pagina.
    3. Dalla pagina per la configmap specifica, eliminare la coppia chiave - valore che si desidera rimuovere.

È anche possibile eliminare variabili di ambiente definite che fanno riferimento a segreti e mappe di configurazione. Per eliminare una variabile di ambiente definita, dalla scheda Variabili di ambiente della tua applicazione, lavoro o funzione ed eliminare la variabile di ambiente che vuoi eliminare. Dopo aver eliminato una variabile di ambiente definita, assicurati di fare clic su Salva per salvare le modifiche alla tua applicazione, lavoro o funzione. Per ulteriori informazioni, consultare Eliminazione di una variabile di ambiente.

Eliminazione delle mappe di configurazione con CLI

  • Per eliminare una configmap con la CLI, utilizza il comando configmap delete ; ad esempio,

    ibmcloud ce configmap delete --name myliteralconfigmap -f
    

    Output di esempio

    Deleting configmap 'myliteralconfigmap'...
    OK
    

Puoi inoltre eliminare le variabili di ambiente che fanno riferimento a segreti e mappe di configurazione dalla CLI.