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.
- Una volta che il tuo progetto si trova nello stato Attivo, fai clic sul nome del tuo progetto nella pagina ProgettiCode Engine.
- Dalla pagina Panoramica, fare clic su Segreti e mappe di configurazione.
- Dalla pagina Segreti e mappe di configurazione, fare clic su Crea per creare la propria mappa di configurazione.
- Dalla pagina Crea segreto o configmap, completare la seguente procedura:
- Fare clic su Configmap e fare clic su Avanti.
- Fornire un nome, ad esempio
myconfigmap. - Fare clic su Aggiungi coppia chiave - valore. Specificare una o più coppie chiave - valore per questa configmap. Ad esempio, specificare una chiave come
key1con il valorevalue1e specificare un'altra chiave comekey2con il valorevalue2. 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. - 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
- Imposta il tuo ambiente CLICode Engine.
- Creare e utilizzare un progetto.
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-literalnel formatoKEY=VALUE. Ad esempio,ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshine -
Creare una configmap utilizzando l'opzione
--from-fileper 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 denominatocolors.txt, che contiene il testoblue, green, red.-
Il seguente esempio utilizza il formato
--from-file KEY=FILEcon il comandoconfigmap create:ibmcloud ce configmap create --name mycolorconfigmap --from-file TARGET=colors.txt -
Il seguente comando di esempio utilizza il formato di
--from-file FILEcon il comandoconfigmap create. In questo esempio,TARGET(nessuna estensione) è il nome del file, che è uguale al nome della variabile di ambiente nota al lavoromyjobdi esempio.ibmcloud ce configmap create --name mycolorconfigmap2 --from-file TARGET
-
-
Creare una configmap utilizzando l'opzione
--from-env-fileper puntare a un file che contiene una o più righe che corrispondono al formatoKEY=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 denominatocolors_multi.txtche contiene le coppie chiave - valore:color1=yellow,color2=orangeecolor3=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.
-
È 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.
-
Fare clic su Modifica e apportare gli aggiornamenti per la propria configmap.
-
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.
-
Per modificare il valore di una coppia chiave - valore in una configmap, utilizzare il comando
configmap update. Aggiorniamo la configmapmyliteralconfigmapper modificare il valore della chiaveTARGETdaSunshineaStranger.ibmcloud ce configmap update --name myliteralconfigmap --from-literal "TARGET=Stranger" -
Ora che la mappa di configurazione è aggiornata, utilizzare il comando
configmap getper visualizzare i dettagli su una mappa di configurazione specifica. Ad esempio,ibmcloud ce configmap get --name myliteralconfigmapOutput 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.
-
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
myconfigmapdall'applicazionemyapp. Quando si fa riferimento completamente a una configmap (o segreto), è possibile specificare facoltativamente unprefix. Utilizzando un prefisso comemyconfigmap_, ogni chiave ha come prefissomyconfigmap_. -
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.
-
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
myappesempio, poiché è stato specificato un prefisso per la mappa di configurazionemyconfigmapcon riferimento completo, tutte le chiavi di questa mappa di configurazione sono indicate come variabili di ambiente e hanno come prefissomyconfigmap_. Ad esempio, queste variabili di ambiente vengono visualizzate comemyconfigmap_key1=value1emyconfigmap_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.
-
Utilizzare il comando
configmap createper creare le seguenti due mappe di configurazione per questo scenario.ibmcloud ce configmap create --name myliteralconfigmap --from-literal TARGET=Sunshineibmcloud ce configmap create --name myliteralconfigmap2 --from-literal TARGET=Stranger -
Distribuisci un'applicazione e fai riferimento alla mappa di configurazione
myliteralconfigmap. Per questo esempio, crea un'applicazione che utilizza l'immaginehello. Quando una richiesta viene inviata a questa applicazione di esempio, l'applicazione legge la variabile di ambienteTARGETe stampaHello ${TARGET}. Se questa variabile di ambiente è vuota, viene restituitoHello World. Fare riferimento alla configmapmyliteralconfigmap. Per ulteriori informazioni sul codice utilizzato per questo esempio, consultarehello.ibmcloud ce app create --name myhelloapp --image icr.io/codeengine/hello --env-from-configmap myliteralconfigmap -
Chiamare l'applicazione. L'applicazione restituisce
Hello Sunshine, che è il valore per la chiaveTARGETspecificata nella mappa di configurazionemyliteralconfigmap.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudOutput di esempio
Hello Sunshine -
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 myliteralconfigmap2Output 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 -
Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce
Hello Stranger, che è il valore specificato nella configmapmyliteralconfigmap2.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudOutput di esempio
Hello Stranger -
Aggiornare
myliteralconfigmap2per modificare la coppia chiave - valore.ibmcloud ce configmap update --name myliteralconfigmap2 --from-literal "TARGET=Happy day"Eseguire il comando
ibmcloud ce configmap get -n myliteralconfigmap2per visualizzare i dettagli della configmap.Output di esempio
Name: myliteralconfigmap2 [...] Data: --- TARGET: Happy day -
Riavviare l'applicazione per rendere effettivi i nuovi dati.
ibmcloud ce app update --name myhelloapp -
Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce
Hello Happy day, che è il valore specificato nella configmapmyliteralconfigmap2.curl https://myhelloapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudOutput 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.
-
Creare una app e fare riferimento alla configmap
myliteralconfigmap3non definita. Per questo esempio, crea un'applicazione Code Engine che utilizza l'immagineicr.io/codeengine/hello. Quando una richiesta viene inviata a questa applicazione di esempio, l'applicazione legge la variabile di ambienteTARGETe stampaHello ${TARGET}. Se questa variabile di ambiente è vuota, viene restituitoHello World. Fare riferimento alla configmapmyliteralconfigmap3. Per ulteriori informazioni sul codice utilizzato per questo esempio, consultarehello.Utilizzando l'opzione
--no-waitcon il comandoapp 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 -
Utilizzare il comando
app getper 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 myappOutput 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 -
Creare la configmap.
ibmcloud ce configmap create --name myliteralconfigmap3 --from-literal TARGET=Everyone -
Riavviare l'applicazione per rendere effettivi i nuovi dati.
ibmcloud ce app update --name myapp -
Chiamare l'applicazione. L'applicazione restituisce
Hello Everyone, che è il valore specificato nella configmapmyliteralconfigmap3.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudOutput di esempio
Hello Everyone -
Aggiornare l'app in modo che faccia riferimento alla configmap
myliteralconfigmap2esistente.myliteralconfigmap2è definita con il valoreTARGET=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 -
Richiamare di nuovo l'applicazione. Questa volta, l'applicazione restituisce
Hello Stranger, che è il valore specificato nella configmapmyliteralconfigmap2.curl https://myapp.d484a5d6-d10d.us-south.codeengine.appdomain.cloudOutput 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
- Per eliminare una configmap dalla console,
- Vai alla pagina Secrets and configmaps dalla tua Code Engine pagina Progetti.
- Fare clic sulla configmap che si desidera eliminare per aprirne la pagina.
- Dalla pagina della configmap specifica, fare clic su Azioni> Elimina configmap.
- Per cancellare una coppia chiave - valore per una configmap specifica dalla console,
- Vai alla pagina Secrets and configmaps dalla tua Code Engine pagina Progetti.
- Fare clic sulla configmap che si desidera modificare per aprire la pagina.
- 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 -fOutput di esempio
Deleting configmap 'myliteralconfigmap'... OK
Puoi inoltre eliminare le variabili di ambiente che fanno riferimento a segreti e mappe di configurazione dalla CLI.