In questo lab, configurerai le informazioni di configurazione, sia criptate sia non criptate. Le informazioni di configurazione criptate sono memorizzate come secret. Le informazioni di configurazione non criptate sono memorizzate come oggetti ConfigMap.
Questo approccio evita l'hardcoding di tali informazioni in codebase. Le credenziali (come le chiavi API) appartenenti ai secret non devono mai spostarsi all'interno di repository di codice come GitHub (a meno che non siano criptate prima di entrare, ma anche in questo caso è meglio tenerle separate).
Obiettivi
In questo lab imparerai a:
Creare secret utilizzando il comando kubectl e i file manifest.
Creare oggetti ConfigMap utilizzando il comando kubectl e i file manifest.
Consumare secret nei container utilizzando variabili di ambiente o volumi montati.
Consumare oggetti ConfigMap nei container utilizzando variabili di ambiente o volumi montati.
Configurazione del lab
Accedi a Qwiklabs
Per ciascun lab, riceverai un nuovo progetto Google Cloud e un insieme di risorse per un periodo di tempo limitato senza alcun costo aggiuntivo.
Accedi a Qwiklabs utilizzando una finestra di navigazione in incognito.
Tieni presente la durata dell'accesso al lab (ad esempio, 1:15:00) e assicurati di finire entro quell'intervallo di tempo.
Non è disponibile una funzionalità di pausa. Se necessario, puoi riavviare il lab ma dovrai ricominciare dall'inizio.
Quando è tutto pronto, fai clic su Inizia lab.
Annota le tue credenziali del lab (Nome utente e Password). Le userai per accedere a Google Cloud Console.
Fai clic su Apri console Google.
Fai clic su Utilizza un altro account e copia/incolla le credenziali per questo lab nei prompt.
Se utilizzi altre credenziali, compariranno errori oppure ti verranno addebitati dei costi.
Accetta i termini e salta la pagina di ripristino delle risorse.
Una volta completati i passaggi di accesso iniziali, viene visualizzata la dashboard del progetto.
Attiva Google Cloud Shell
Google Cloud Shell è una macchina virtuale in cui sono caricati strumenti per sviluppatori. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud.
Google Cloud Shell fornisce l'accesso da riga di comando alle risorse Google Cloud.
Nella barra degli strumenti in alto a destra della console Cloud, fai clic sul pulsante Apri Cloud Shell.
Fai clic su Continua.
Bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente. Quando la connessione è attiva, l'autenticazione è già avvenuta e il progetto è impostato sul tuo PROJECT_ID. Ad esempio:
gcloud è lo strumento a riga di comando di Google Cloud. È preinstallato su Cloud Shell e supporta il completamento.
Puoi visualizzare il nome dell'account attivo con questo comando:
In questa attività, dovrai autenticare i container con Google Cloud per accedere ai servizi Google Cloud. Configura un argomento e una sottoscrizione Cloud Pub/Sub, prova ad accedere all'argomento Cloud Pub/Sub da un container in esecuzione in GKE e controlla che la richiesta di accesso non vada a buon fine.
Per accedere correttamente all'argomento Pub/Sub, devi creare un account di servizio con le credenziali e passare tali credenziali tramite secret di Kubernetes.
Prepara un service account senza autorizzazioni
Nella console Google Cloud, nel menu di navigazione (), fai clic su IAM e amministrazione > Service account.
Fai clic su + Crea service account.
Nella casella di testo Nome service account, inserisci no-permissions.
Fai clic su Crea e continua.
Fai clic su Continua e poi su Fine.
Trova l'account di servizio no-permissions nell'elenco e copia l'indirizzo email associato a questo account in un file di testo per utilizzarlo in seguito.
Crea un cluster GKE
Quando crei questo cluster, devi specificare l'account di servizio creato in precedenza. Per mostrare la necessità di account di servizio con le autorizzazioni appropriate, tale account di servizio non dispone di autorizzazioni per altri servizi Google Cloud e pertanto non potrà connettersi all'applicazione di test Cloud Pub/Sub di cui eseguirai il deployment in un secondo momento. Puoi risolvere il problema più tardi nel lab.
In Cloud Shell, digita il comando seguente per creare variabili di ambiente per il nome della zona Google Cloud e del cluster che verranno utilizzati per creare il cluster per questo lab:
export my_zone={{{ project_0.default_zone | ZONE }}}
export my_cluster=standard-cluster-1
Configura il completamento per lo strumento a riga di comando kubectl:
source <(kubectl completion bash)
In Cloud Shell, digita il seguente comando per impostare la variabile di ambiente per il nome del service account, dove [MY-SERVICE-ACCOUNT-EMAIL] rappresenta l'indirizzo email del service account creato in precedenza:
In Cloud Shell, digita questo comando per creare un cluster Kubernetes:
gcloud container clusters create $my_cluster \
--num-nodes 2 --zone $my_zone \
--service-account=$my_service_account
Nota: devi attendere alcuni minuti per il completamento del deployment del cluster.
Per creare un argomento Cloud Pub/Sub denominato echo e una sottoscrizione denominata echo-read associata a tale argomento, esegui i seguenti comandi gcloud:
Esegui il deployment di un'applicazione da leggere da argomenti Cloud Pub/Sub
Crea un deployment con un container in grado di leggere dagli argomenti di Cloud Pub/Sub. Poiché sono necessarie autorizzazioni specifiche per sottoscrizione e lettura, gli argomenti Cloud Pub/Sub che servono a questo container sono richiesti per connettersi correttamente a Cloud Pub/Sub.
Il file manifest di deployment chiamato pubsub.yaml viene fornito automaticamente.
Passa alla directory che contiene i file di esempio per questo lab:
cd ~/ak8s/Secrets/
Esegui il deployment dell'applicazione:
kubectl apply -f pubsub.yaml
Dopo aver completato il deployment dell'applicazione, invia una query ai pod tramite il comando seguente:
kubectl get pods -l app=pubsub
Questo comando filtra l'elenco dei pod, includendo solo quelli con un'etichetta corrispondente ad app: pubsub.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 CrashLoopBackOff 0 6s
Nota: è necessario attendere circa un minuto. L'applicazione viene avviata, ma non avrà esito positivo.
Elenca di nuovo i pod:
kubectl get pods -l app=pubsub
Output:
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 Error 4 2m
Osserva lo stato del pod. Presenta un errore e si è riavviato diverse volte.
Per controllare i log dal pod, esegui il comando seguente:
kubectl logs -l app=pubsub
Il messaggio di errore visualizzato alla fine del log indica che l'applicazione non dispone delle autorizzazioni per inviare query al servizio Cloud Pub/Sub.
StatusCode.PERMISSION_DENIED, User not authorized to perform this action.
Crea le credenziali del service account
Ora creerai un nuovo account di servizio e concederai l'accesso alla sottoscrizione Pub/Sub che l'applicazione di test sta tentando di utilizzare. Anziché cambiare il service account dei nodi del cluster GKE, genererai una chiave JSON per il service account, quindi potrai passare in modo sicuro la chiave JSON al pod tramite secret di Kubernetes.
Nella console Google Cloud, nel menu di navigazione, fai clic su IAM e amministrazione > Service account.
Fai clic su + Crea service account.
Nella casella di testo Nome service account, inserisci pubsub-app e fai clic su Crea e continua.
Nell'elenco a discesa Seleziona un ruolo, scegli Pub/Sub > Sottoscrittore Pub/Sub.
Verifica che il ruolo sia presente nell'elenco e fai clic su Continua, quindi su Fine.
Nella schermata della panoramica del service account, fai clic sui tre puntini sul lato destro del service account pubsub-app, quindi seleziona Gestisci chiavi.
Nel menu a discesa, fai clic su Aggiungi chiave, quindi seleziona Crea nuova chiave.
Seleziona JSON come tipo di chiave, quindi fai clic su Crea.
Un file della chiave JSON contenente le credenziali dell'account di servizio verrà scaricato sul computer. Puoi vedere il file nella barra dei download nella parte inferiore dello schermo. Utilizzerai questo file della chiave per configurare l'applicazione di esempio per l'autenticazione nell'API Cloud Pub/Sub.
Fai clic su Chiudi.
Sul disco rigido, individua la chiave JSON che hai appena scaricato e rinomina il file in credentials.json.
Importa le credenziali come secret
In Cloud Shell, fai clic sull'icona con tre puntini () nella barra degli strumenti di Cloud Shell per visualizzare altre opzioni.
Fai clic su Carica e carica il file credentials.json dalla macchina locale alla VM Cloud Shell, quindi fai clic su Carica.
In Cloud Shell, inserisci il seguente comando per confermare che il file è stato caricato:
ls ~/
Dovresti visualizzare il file delle credenziali caricato insieme alla directory dei file del lab che hai clonato in precedenza.
Per salvare il file della chiave credentials.json in un secret di Kubernetes chiamato pubsub-key, esegui il seguente comando:
Questo comando crea un secret denominato pubsub-key contenente un valore key.json che include i contenuti della chiave privata scaricata dalla console Google Cloud.
Rimuovi il file credentials.json dal computer:
rm -rf ~/credentials.json
Configura l'applicazione con il secret
Ora aggiorna il deployment per includere le seguenti modifiche:
Aggiungi un volume alla specifica del pod. Questo volume contiene il secret.
Il volume del secret è montato nel container dell'applicazione.
La variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS è impostata in modo da puntare al file della chiave nel montaggio del volume del secret.
La variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS viene riconosciuta automaticamente dalle librerie client di Cloud, in questo caso il client Cloud Pub/Sub per Python.
Ti è stato fornito il file di deployment aggiornato, chiamato pubsub-secret.yaml.
Entro pochi secondi, il messaggio dovrebbe essere ritirato dall'applicazione e stampato nello stream di output.
Per controllare i log dal pod di cui è stato eseguito il deployment, esegui il comando seguente:
kubectl logs -l app=pubsub
L'output dovrebbe essere simile all'esempio seguente.
Output:
Pulling messages from Pub/Sub subscription...
[2018-12-17 22:01:06.860378] Received message: ID=328977244395410 Data=b'Hello, world!'
[2018-12-17 22:01:06.860736] Processing: 328977244395410
[2018-12-17 22:01:09.863973] Processed: 328977244395410
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Utilizza i secret
Attività 2. Utilizza oggetti ConfigMap
Gli oggetti ConfigMap associano file di configurazione, argomenti della riga di comando, variabili di ambiente, numeri di porta e altri elementi di configurazione nei container dei pod e nei componenti di sistema al runtime.
Gli oggetti ConfigMap ti consentono di separare le configurazioni dai pod e dai componenti. Tuttavia, gli oggetti ConfigMap non sono criptati, pertanto sono inappropriati per le credenziali. Questa è la differenza tra secret e oggetti ConfigMap: i secret sono criptati e sono quindi più adatti a informazioni riservate o sensibili, come le credenziali.
Gli oggetti ConfigMap sono più adatti per informazioni di configurazione generali come i numeri di porta.
Utilizza il comando kubectl per creare oggetti ConfigMap
Puoi utilizzare kubectl per creare oggetti ConfigMap seguendo il pattern kubectl create configmap [NAME] [DATA] e aggiungendo un flag per il file (--from-file) o un valore letterale (--from-literal).
Inizia con un semplice valore letterale nel seguente comando kubectl:
Utilizza i file manifest per creare oggetti ConfigMap
Puoi anche utilizzare un file di configurazione YAML per creare oggetti ConfigMap. Il file config-map-3.yaml contiene la definizione di un oggetto ConfigMap chiamata sample3. Utilizzerai questo oggetto ConfigMap in un secondo momento per illustrare due diversi modi per esporre i dati all'interno di un container.
Ora hai a disposizione alcune informazioni di configurazione non secret, non criptate, correttamente separate dalla tua applicazione e disponibili per il cluster. Hai eseguito questa attività utilizzando oggetti ConfigMap in tre modi diversi per illustrare le varie opzioni, ma nella pratica scegli un solo metodo, molto probabilmente l'approccio al file di configurazione YAML. I file di configurazione forniscono un record dei valori che hai memorizzato per consentirti di ripetere facilmente la procedura in futuro.
Ora imparerai come accedere a queste informazioni dalla tua applicazione.
Utilizza le variabili di ambiente per consumare oggetti ConfigMap nei container
Per accedere agli oggetti ConfigMap dall'interno dei container utilizzando le variabili di ambiente, è necessario aggiornare la definizione del pod in modo da includere uno o più elementi configMapKeyRefs.
Il file pubsub-configmap.yaml è una versione aggiornata del deployment della demo di Cloud Pub/Sub che include la seguente impostazione env: aggiuntiva alla fine del file per importare variabili di ambiente dall'oggetto ConfigMap al container.
Per applicare nuovamente il file di configurazione aggiornato, esegui il comando seguente:
kubectl apply -f pubsub-configmap.yaml
Ora la tua applicazione ha accesso a una variabile di ambiente chiamata INSIGHTS, che ha il valore testAllTheThings.
Per verificare che la variabile di ambiente abbia il valore corretto, devi ottenere l'accesso della shell al pod, il che significa che ti serve il nome del pod. Per ottenere il nome del pod, esegui il comando seguente:
kubectl get pods
L'output dovrebbe essere simile all'esempio seguente.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-77df8f8c6-krfl2 1/1 Running 0 4m
Per avviare la sessione shell, esegui il comando seguente, sostituendo il nome del pod con [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh
Esempio:
kubectl exec -it pubsub-77df8f8c6-krfl2 -- sh
Per stampare un elenco di variabili di ambiente, esegui il comando seguente:
Per uscire dalla sessione shell del container, esegui il comando seguente:
exit
Utilizza i volumi montati per consumare oggetti ConfigMap nei container
Puoi completare un volume con i dati di oggetti ConfigMap invece di (o in aggiunta a) memorizzarli in una variabile di ambiente.
In questo deployment, l'oggetto ConfigMap denominato sample-3 che hai creato in precedenza in questa attività viene aggiunto anche come volume denominato config-3 nelle specifiche del pod. Il volume config-3 viene quindi montato all'interno del container sul percorso /etc/config. Viene configurato anche il metodo originale che utilizza le variabili di ambiente per importare oggetti ConfigMap.
Ti è stato fornito il file di deployment aggiornato, chiamato pubsub-configmap2.yaml.
Applica di nuovo il file di configurazione aggiornato:
kubectl apply -f pubsub-configmap2.yaml
Riconnettiti alla sessione shell del container per verificare se il valore nell'oggetto ConfigMap è accessibile. I nomi dei pod sono cambiati. Per ottenere il nome del pod, esegui il comando seguente:
kubectl get pods
L'output dovrebbe essere simile all'esempio seguente.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-747cf8c545-ngsrf 1/1 Running 0 30s
pubsub-df6bc7b87-vb8cz 1/1 Terminating 0 4m
Per avviare la sessione shell, esegui il comando seguente, sostituendo il nome del pod con [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh
Esempio:
kubectl exec -it pubsub-747cf8c545-ngsrf -- sh
Vai alla cartella appropriata:
cd /etc/config
Elenca i file nella cartella:
Devono essere elencati i nomi file come chiavi da sample3.
ls
Output:
airspeed meme
Per visualizzare i contenuti di uno dei file, esegui il comando seguente:
cat airspeed
Output:
africanOrEuropean#
Nota: il valore airspeed non includeva un ritorno a capo, pertanto il prompt dei comandi (il simbolo \#) si trova alla fine del valore restituito.
Per uscire dalla shell del container, esegui il comando seguente:
exit
Fai clic su Controlla i miei progressi per verificare l'obiettivo.
Utilizza oggetti ConfigMap
Termina il lab
Una volta completato il lab, fai clic su Termina lab. Google Cloud Skills Boost rimuove le risorse che hai utilizzato ed esegue la pulizia dell'account.
Avrai la possibilità di inserire una valutazione in merito alla tua esperienza. Seleziona il numero di stelle applicabile, inserisci un commento, quindi fai clic su Invia.
Il numero di stelle corrisponde alle seguenti valutazioni:
1 stella = molto insoddisfatto
2 stelle = insoddisfatto
3 stelle = esperienza neutra
4 stelle = soddisfatto
5 stelle = molto soddisfatto
Se non vuoi lasciare un feedback, chiudi la finestra di dialogo.
Per feedback, suggerimenti o correzioni, utilizza la scheda Assistenza.
Copyright 2020 Google LLC Tutti i diritti riservati. Google e il logo Google sono marchi di Google LLC. Tutti gli altri nomi di società e prodotti sono marchi delle rispettive società a cui sono associati.
I lab creano un progetto e risorse Google Cloud per un periodo di tempo prestabilito
I lab hanno un limite di tempo e non possono essere messi in pausa. Se termini il lab, dovrai ricominciare dall'inizio.
In alto a sinistra dello schermo, fai clic su Inizia il lab per iniziare
Utilizza la navigazione privata
Copia il nome utente e la password forniti per il lab
Fai clic su Apri console in modalità privata
Accedi alla console
Accedi utilizzando le tue credenziali del lab. L'utilizzo di altre credenziali potrebbe causare errori oppure l'addebito di costi.
Accetta i termini e salta la pagina di ripristino delle risorse
Non fare clic su Termina lab a meno che tu non abbia terminato il lab o non voglia riavviarlo, perché il tuo lavoro verrà eliminato e il progetto verrà rimosso
Questi contenuti non sono al momento disponibili
Ti invieremo una notifica via email quando sarà disponibile
Bene.
Ti contatteremo via email non appena sarà disponibile
Un lab alla volta
Conferma per terminare tutti i lab esistenti e iniziare questo
Utilizza la navigazione privata per eseguire il lab
Utilizza una finestra del browser in incognito o privata per eseguire questo lab. In questo modo eviterai eventuali conflitti tra il tuo account personale e l'account Studente, che potrebbero causare addebiti aggiuntivi sul tuo account personale.
Architecting with Google Kubernetes Engine: Working with Kubernetes Engine Secrets and ConfigMaps
Durata:
Configurazione in 0 m
·
Accesso da 60 m
·
Completamento in 60 m