Questo è il quarto tutorial di un percorso di apprendimento che ti insegna come modularizzare e containerizzare un'app monolitica.
Il percorso di apprendimento è costituito dai seguenti tutorial:
- Panoramica
- Informazioni sul monolite
- Modularizza il monolite
- Preparare l'app modulare per la containerizzazione
- Containerizza l'app modulare (questo tutorial)
- Esegui il deployment dell'app in un cluster GKE
Nel tutorial precedente, Prepara l'app modulare per la containerizzazione, hai visto quali modifiche dovevano essere apportate alla versione modulare dell'app Cymbal Books per prepararla alla containerizzazione. In questo tutorial, containerizzi l'app.
Costi
Puoi completare questo tutorial senza incorrere in alcun addebito. Tuttavia, seguendo i passaggi del tutorial successivo di questa serie, verranno addebitati costi sul tuo accountGoogle Cloud . I costi iniziano quando abiliti GKE ed esegui il deployment dell'app Cymbal Books in un cluster GKE. Questi costi includono gli addebiti per cluster per GKE, come descritto nella pagina dei prezzi, e gli addebiti per l'esecuzione delle VM di Compute Engine.
Per evitare addebiti non necessari, assicurati di disabilitare GKE o eliminare il progetto al termine di questo tutorial.
Prima di iniziare
Prima di iniziare questo tutorial, assicurati di aver completato i tutorial precedenti della serie. Per una panoramica dell'intera serie e link a tutorial specifici, consulta Learning Path: Transform a monolith into a GKE app - Overview.
Configura l'ambiente
In questa sezione configurerai un ambiente in cui inserire in un container l'app modulare. Nello specifico, eseguirai i seguenti passaggi:
- Seleziona o crea un Google Cloud progetto
- Abilita le API necessarie
- Collega Cloud Shell al tuo progetto Google Cloud
- Impostare le variabili di ambiente predefinite
- Crea un repository in Artifact Registry
- Configura Docker per Artifact Registry
- Ottenere il codice del tutorial
Seleziona o crea un Google Cloud progetto
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
Abilita le API necessarie
Per lavorare con le immagini container e Kubernetes nel tuo progetto Google Cloud , devi abilitare le seguenti API:
- API Artifact Registry: questa API abilita Artifact Registry, un servizio per l'archiviazione e la gestione delle immagini container.
- API Kubernetes Engine: questa API fornisce l'accesso a GKE.
Per abilitare queste API, visita la pagina Abilita le API nella console Google Cloud .
Connetti Cloud Shell al tuo progetto Google Cloud
Ora che hai configurato il progetto Google Cloud , devi avviare un'istanza di Cloud Shell e connetterla al progetto Google Cloud. Cloud Shell è uno strumento a riga di comando che ti consente di creare e gestire le risorse di un progetto direttamente dal browser. Cloud Shell include
due strumenti importanti preinstallati: la gcloud CLI
e la kubectl
CLI. In questo
tutorial, utilizzerai gcloud CLI per interagire con Google Cloud e nel
tutorial successivo utilizzerai l'interfaccia a riga di comando kubectl
per gestire l'app Cymbal Books
in esecuzione su GKE.
Per connettere un'istanza Cloud Shell al tuo Google Cloud progetto, segui questi passaggi:
Vai alla Google Cloud console:
Nella console, fai clic sul pulsante Attiva Cloud Shell:
Una sessione di Cloud Shell si apre in un frame nella parte inferiore della console.
Imposta il progetto predefinito in Google Cloud CLI utilizzando il seguente comando:
gcloud config set project PROJECT_ID
Sostituisci
PROJECT_ID
con l'ID progetto del progetto che hai creato o selezionato nella sezione precedente, Seleziona o crea Google Cloud progetto. Un ID progetto è una stringa univoca che distingue il tuo progetto da tutti gli altri progetti in Google Cloud. Per individuare l'ID progetto, vai al selettore dei progetti. In questa pagina puoi visualizzare gli ID progetto di ciascuno dei tuoi Google Cloud progetti.
Imposta le variabili di ambiente predefinite
Per semplificare i comandi che esegui durante questo tutorial, ora imposta alcune variabili di ambiente in Cloud Shell. Queste variabili memorizzano valori come
l'ID progetto, la regione del repository e il tag immagine. Dopo aver definito queste variabili, puoi riutilizzarle in più comandi facendo riferimento al nome della variabile (ad esempio, $REPOSITORY_NAME
) anziché digitare o sostituire i valori ogni volta. Questo approccio rende il tutorial più facile da seguire e riduce
il rischio di errori.
Per configurare l'ambiente con Cloud Shell, segui questi passaggi:
export PROJECT_ID=$(gcloud config get project)
export REPOSITORY_REGION=REPOSITORY_REGION
export REPOSITORY_NAME=REPOSITORY_NAME
export REPOSITORY_DESCRIPTION="REPOSITORY_DESCRIPTION"
export TAG=TAG
Sostituisci quanto segue:
REPOSITORY_REGION
: la regione in cui vuoi che venga ospitato il tuo repository Artifact Registry. Ad esempio,us-central1
(Iowa),us-west1
(Oregon) oeurope-west1
(Belgio). Per un elenco completo delle regioni, consulta Regioni e zone.REPOSITORY_NAME
: il nome del repository. Ad esempio,book-review-service-repo
.REPOSITORY_DESCRIPTION
: una breve descrizione dello scopo del repository. Ad esempio,"Repository for storing Docker images for the book review service"
.TAG
: il tag che vuoi applicare a un'immagine. Un tag è un'etichetta che puoi collegare a una versione specifica di un'immagine container. Puoi utilizzare convenzioni di denominazione dei tag come queste per indicare chiaramente le diverse versioni di un'immagine:v1
v1.2.3
- Un tag descrittivo, ad esempio
feature-x-dev
- Un tag che indica l'ambiente, ad esempio
test
Crea un repository in Artifact Registry
A questo punto, crea un repository in Artifact Registry. Un repository è una posizione di archiviazione in cui conservare le immagini container. Quando crei un'immagine container, devi archiviarla da qualche parte in modo che possa essere sottoposta a deployment in un cluster Kubernetes. Artifact Registry ti consente di creare e gestire questi repository all'interno del tuo progetto Google Cloud .
Per creare un repository in Artifact Registry, esegui questo comando:
gcloud artifacts repositories create ${REPOSITORY_NAME} \
--repository-format=docker \
--location=${REPOSITORY_REGION} \
--description="${REPOSITORY_DESCRIPTION}"
L'output riuscito del comando è simile al seguente:
Waiting for operation [...] to complete...done.
Created repository [book-review-service-repo].
Configura Docker per Artifact Registry
Successivamente, configura Docker in modo che possa comunicare in modo sicuro con Artifact Registry diGoogle Cloud. Docker è uno strumento che puoi utilizzare per pacchettizzare ed eseguire software in modo coerente in ambienti diversi. Scopri di più su come funziona Docker nella sezione successiva. Per ora, devi configurarlo in modo che possa connettersi ad Artifact Registry.
Se non configuri Docker in questo modo, non puoi eseguire il push delle immagini container in Artifact Registry (un'attività che svolgerai più avanti in questo tutorial). Inoltre, non puoi estrarre le immagini container da Artifact Registry ed eseguirne il deployment in un cluster GKE (un'attività che svolgerai nel tutorial successivo).
Per configurare Docker per l'autenticazione con Artifact Registry, esegui questo comando:
gcloud auth configure-docker ${REPOSITORY_REGION}-docker.pkg.dev
Ottenere il codice del tutorial
Ora che l'ambiente Cloud Shell è configurato, devi scaricare il codice del tutorial in Cloud Shell. Anche se in precedenza hai clonato il repository sulla tua macchina locale, devi clonarlo di nuovo qui sulla tua istanza di Cloud Shell.
Sebbene sia possibile completare questo tutorial sulla tua macchina locale, dovresti
installare e configurare manualmente diversi strumenti come Docker, kubectl
e gcloud CLI. L'utilizzo di Cloud Shell è più semplice perché è
preconfigurato con tutti questi strumenti.
Nell'istanza di Cloud Shell, esegui questo comando per clonare il repository GitHub:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git
Nozioni di base sulla containerizzazione: immagini container, container e Dockerfile
Ora che hai configurato l'ambiente e scaricato il codice containerizzato, puoi containerizzare l'app. La containerizzazione dell'app consiste nell'utilizzare un Dockerfile per pacchettizzare ogni modulo di Cymbal Books (home page, dettagli del libro, immagini e recensioni del libro) in un'immagine container. Quando l'applicazione viene deployata nel cluster GKE, Kubernetes utilizza queste immagini container per creare container in esecuzione nel cluster.
Le sezioni seguenti spiegano questi concetti in dettaglio.
Che cos'è la containerizzazione?
La containerizzazione pacchettizza un modulo e tutte le sue dipendenze, come librerie e file di configurazione, in un'unità chiamata immagine container. Gli sviluppatori utilizzano questa immagine container per creare ed eseguire container in qualsiasi ambiente, dal laptop di uno sviluppatore a un server di test o a un cluster Kubernetes di produzione.
Che cosa sono le immagini container?
Un'immagine container contiene tutti i file necessari per eseguire un'applicazione. Questi file includono il codice dell'applicazione, le librerie di sistema, l'ambiente di runtime (ad esempio, l'interprete Python), i dati statici e qualsiasi altra dipendenza.
In questo tutorial, creerai un'immagine container per ogni modulo dell'app di recensioni di libri.
Che cos'è un container?
Un container è un ambiente isolato in cui viene eseguito il codice di un'immagine container.
Puoi creare container in due modi: utilizzando il comando docker run
per
i test durante lo sviluppo o eseguendo il deployment delle immagini container in un cluster
Kubernetes.
Nella versione containerizzata dell'app Cymbal Books, ogni modulo dell'app modulare viene eseguito nel proprio container:
- Il contenitore della home page esegue il modulo della home page e gestisce le richieste a
/
. - Il container dei dettagli del libro esegue il modulo dei dettagli del libro e gestisce i dati per endpoint come
/book/1
o/book/3
. - Il contenitore delle recensioni di libri esegue il modulo delle recensioni di libri e gestisce le richieste
agli endpoint come
/book/2/reviews
. - Il container delle immagini esegue il modulo delle immagini e pubblica le immagini di copertina dei libri per endpoint come
/images/fungi_frontier.jpg
.
Uno dei principali vantaggi dei container è che Kubernetes può crearne automaticamente altri quando necessario. Ad esempio, se numerosi utenti leggono recensioni di libri, Kubernetes può avviare altri container di recensioni di libri per gestire il carico.
Per implementare lo scaling in un'app modulare che non utilizza container, devi scrivere codice personalizzato per avviare nuove istanze di un modulo e distribuire il traffico tra queste. Con Kubernetes, questa funzionalità di scalabilità è integrata: non devi scrivere codice di scalabilità personalizzato.
Che cosa sono i Dockerfile?
Un Dockerfile è uno script che definisce come creare un pacchetto di un modulo in un'immagine container. In questo tutorial non devi creare Dockerfile, perché sono
già forniti nel repository GitHub che hai clonato in precedenza. La directory di ogni modulo nella tua copia locale di
kubernetes-engine-samples/quickstarts/monolith-to-microservices/containerized/
contiene il proprio Dockerfile.
Ad esempio, puoi trovare il Dockerfile del modulo home_app
nella tua istanza di Cloud Shell all'indirizzo kubernetes-engine-samples/quickstarts/monolith-to-microservices/containerized/home_app/Dockerfile
.
Questo Dockerfile ha il seguente aspetto:
# Dockerfile for home_app
FROM python:3.9-slim #line 1
WORKDIR /app #line 2
COPY requirements.txt . #line 3
RUN pip install --no-cache-dir -r requirements.txt #line 4
COPY home_app.py . #line 5
COPY templates/ ./templates/ #line 6
COPY static/ ./static/ #line 7
CMD ["python", "home_app.py"] #line 8
Questo Dockerfile esegue i seguenti passaggi per creare l'immagine container per
il modulo home_app
:
- Riga 1:
FROM python:3.9-slim
scarica un interprete Python 3.9 e i relativi file richiesti nell'immagine del container. Questi file consentono l'esecuzione del modulo. - Riga 2:
WORKDIR /app
crea una directory denominata/app
all'interno del container e la imposta come directory di lavoro corrente. Tutti i comandi eseguiti all'interno del container verranno eseguiti da questa directory. - Righe 3 e 4:
COPY requirements.txt .
copia il filerequirements.txt
dalla tua macchina locale nella directory/app
dell'immagine container. Il filerequirements.txt
elenca tutte le librerie Python di cuihome_app.py
ha bisogno. La rigaRUN pip install
installa queste librerie nell'immagine container. - Righe da 5 a 7: i comandi
COPY
che compaiono in queste righe copiano il codice del modulo (home_app.py
) e i relativi file di supporto (modelli e asset statici) nella directory/app
all'interno dell'immagine container. - Riga 8:
CMD
specifica il comando predefinito che Docker esegue all'avvio del container. In questo Dockerfile,CMD ["python", "home_app.py"]
indica a Docker di utilizzare l'interprete Python per eseguire automaticamente il modulohome_app.py
all'avvio del container.
In che modo la containerizzazione può imporre un isolamento più rigoroso dei dati
Le righe da 5 a 7 del Dockerfile, descritte nella sezione precedente, mostrano come la containerizzazione possa imporre un isolamento dei dati più rigoroso rispetto alla versione modulare dell'app. In un tutorial precedente, nella sezione Concedi a ogni modulo l'accesso solo ai dati di cui ha bisogno, hai appreso che la versione modulare dell'app organizza i dati in directory separate, ma i moduli condividono comunque lo stesso file system e potrebbero potenzialmente accedere ai dati degli altri.
Qui, nella versione containerizzata dell'app, il container di ogni modulo include
solo i file necessari. Ad esempio, se il modulo home_app
non ha bisogno
di accedere ai dati delle recensioni di libri, questi dati semplicemente non esistono all'interno del
container home_app
. Per impostazione predefinita, un container non può accedere ai file di un altro container, a meno che non sia configurato esplicitamente per farlo. In questo modo, ogni modulo è completamente isolato e si impedisce l'accesso accidentale o non autorizzato ai dati.
Nella sezione successiva vedrai come il comando docker build
prende un Dockerfile
come input e segue le istruzioni nel Dockerfile per creare un'immagine
container.
Crea immagini container utilizzando Docker
In questa sezione, crei immagini container Docker per ciascuno dei moduli di recensione di libri ed esegui il push nel repository Artifact Registry. Utilizzerai queste immagini container in un tutorial successivo per eseguire il deployment ed eseguire l'app di esempio Cymbal Books in Kubernetes.
Vai alla directory radice dell'applicazione containerizzata:
cd kubernetes-engine-samples/quickstarts/monolith-to-microservices/containerized/
Crea le immagini container utilizzando il comando
docker build
:docker build -t ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/home-app:${TAG} ./home_app docker build -t ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-details-app:${TAG} ./book_details_app docker build -t ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-reviews-app:${TAG} ./book_reviews_app docker build -t ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/images-app:${TAG} ./images_app
Visualizza le immagini container create all'interno dell'istanza Cloud Shell:
docker images
Controlla che nell'elenco siano presenti le seguenti immagini:
home-app
book-details-app
book-reviews-app
images-app
Se sono elencate tutte e quattro le immagini, hai creato correttamente le immagini container.
Testare i container in Cloud Shell
Per verificare che le immagini container siano create correttamente, puoi eseguirle come container e testare i relativi endpoint in Cloud Shell.
I container book_details_app
, book_reviews_app
e images_app
possono essere
testati singolarmente perché non devono comunicare tra loro.
Tuttavia, testare il container home_app
utilizzando Docker è difficile perché
home_app
è configurato per trovare gli altri container che utilizzano nomi di servizio
come http://book-details-service:8081
.
Sebbene sia possibile testare il container home_app
trovando l'indirizzo IP di ogni container e configurando home_app
per utilizzarli anziché i nomi dei servizi, questo approccio richiede molto impegno. È invece consigliabile posticipare il test del container home_app
dopo il deployment dell'applicazione in un cluster Kubernetes. Dopo che l'app è sul cluster, puoi determinare se il modulo Home funziona correttamente.
Per testare i contenitori:
Avvia i container
book_details_app
,book_reviews_app
eimages_app
:docker run -d -p 8081:8080 ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-details-app:${TAG} docker run -d -p 8082:8080 ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-reviews-app:${TAG} docker run -d -p 8083:8080 ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/images-app:${TAG}
Controlla che i container siano in esecuzione elencando tutti i container attivi:
docker ps
L'output di questo comando dovrebbe mostrare tre container in esecuzione, con lo stato
Up
:CONTAINER ID IMAGE PORTS STATUS a1b2c3d4e5f6 REGION/.../details 0.0.0.0:8081->8080/tcp Up g7h8i9j0k1l2 REGION/.../reviews 0.0.0.0:8082->8080/tcp Up m3n4o5p6q7r8 REGION/.../images 0.0.0.0:8083->8080/tcp Up
Per testare gli endpoint del container
book_details_app
, utilizza i seguenti comandicurl
:curl http://localhost:8081/books curl http://localhost:8081/book/1 curl http://localhost:8081/book/2 curl http://localhost:8081/book/3
Ognuno di questi comandi restituisce i dati in formato JSON. Ad esempio, l'output del comando
curl http://localhost:8081/book/1
ha questo aspetto:{"author":"Aria Clockwork","description":"In a world where time is a tangible substance, a young clockmaker discovers she can manipulate the fabric of time itself, leading to unforeseen consequences in her steampunk-inspired city.","id":1,"image_url":"zephyrs_timepiece.jpg","title":"Zephyr's Timepiece","year":2023}
Recupera le recensioni dei libri dal contenitore
book_reviews_app
utilizzando questo comandocurl
:curl http://localhost:8082/book/1/reviews
Questo comando restituisce un elenco di 20 recensioni del libro 1 in formato JSON. Ecco un esempio di recensione dell'elenco:
{ "content": "The concept of time as a tangible substance is brilliantly explored in 'Zephyr's Timepiece'.", "rating": 5 }
Testa il container
images_app
:Fai clic sul pulsante
**Web Preview**
.Seleziona Cambia porta e inserisci 8083. Si apre una finestra del browser con un URL simile a questo:
https://8083-your-instance-id.cs-your-region.cloudshell.dev/?authuser=0
Rimuovi
?authuser=0
alla fine dell'URL e aggiungi il percorso di un file immagine, ad esempio/images/fungi_frontier.jpg
. Di seguito è riportato un esempio:https://8083-your-instance-id.cs-your-region.cloudshell.dev/images/fungi_frontier.jpg
Dovresti vedere l'immagine di copertina del libro Fungi Frontier visualizzata nel browser.
Dopo il test, arresta i container per rilasciare le risorse:
Elenca i container in esecuzione e trova i relativi ID container:
docker ps
Arresta ogni container:
docker stop CONTAINER_ID
Sostituisci
CONTAINER_ID
con l'ID del contenitore che vuoi arrestare.
Esegui il push delle immagini container in Artifact Registry
Prima di poter eseguire il deployment della tua app in un cluster Kubernetes, le immagini container devono essere archiviate in una posizione a cui il cluster può accedere. In questo passaggio, esegui il push delle immagini nel repository Artifact Registry creato in precedenza. Nel tutorial successivo, esegui il deployment di queste immagini dal repository Artifact Registry a un cluster GKE:
Per eseguire il push delle immagini container in Artifact Registry, esegui questi comandi:
docker push ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/home-app:${TAG} docker push ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-details-app:${TAG} docker push ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-reviews-app:${TAG} docker push ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/images-app:${TAG}
Dopo aver eseguito il push delle immagini, verifica che siano state caricate correttamente elencandole:
gcloud artifacts docker images list ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}
Dovresti vedere un output simile al seguente:
Listing items under project ${PROJECT_ID}, location ${REPOSITORY_REGION}, repository ${REPOSITORY_NAME}. IMAGE: ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-details-app DIGEST: sha256:f7b78f44d70f2eedf7f7d4dc72c36070e7c0dd05daa5f473e1ebcfd1d44b95b1 CREATE_TIME: 2024-11-14T00:38:53 UPDATE_TIME: 2024-11-14T00:38:53 SIZE: 52260143 IMAGE: ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/book-reviews-app DIGEST: sha256:875ac8d94ef54db2ff637e49ad2d1c50291087623718b854a34ad657748fac86 CREATE_TIME: 2024-11-14T00:39:04 UPDATE_TIME: 2024-11-14T00:39:04 SIZE: 52262041 IMAGE: ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/home-app DIGEST: sha256:70ddc54ffd683e2525d87ee0451804d273868c7143d0c2a75ce423502c10638a CREATE_TIME: 2024-11-14T00:33:56 UPDATE_TIME: 2024-11-14T00:33:56 SIZE: 52262412 IMAGE: ${REPOSITORY_REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY_NAME}/images-app DIGEST: sha256:790f0d8c2f83b09dc3b431c4c04d7dc68254fecc76c48f00a83babc2a5dc0484 CREATE_TIME: 2024-11-14T00:39:15 UPDATE_TIME: 2024-11-14T00:39:15 SIZE: 53020815
L'output include i seguenti dettagli per ogni immagine:
- IMAGE: il percorso del repository e il nome dell'immagine.
- DIGEST: un identificatore univoco per l'immagine.
- CREATE_TIME o UPDATE_TIME: data di creazione o ultima modifica dell'immagine.
- SIZE: le dimensioni dell'immagine in byte.
Aggiorna il manifest di Kubernetes con i percorsi delle immagini container
Come hai appreso nel tutorial precedente, Preparare l'app modulare per la containerizzazione, un manifest Kubernetes è un file YAML che definisce come viene eseguita l'app in un cluster Kubernetes. Include dettagli come:
- I moduli della tua app (ad esempio,
home-app
,book-details-app
) - Percorsi delle immagini container
- Dettagli di configurazione, come i limiti delle risorse
- Definizioni di servizio per il routing delle richieste tra i moduli
In questa sezione, aggiorni lo stesso file manifest che hai esaminato nel
tutorial precedente. Questo file è kubernetes-manifest.yaml
e contiene
valori segnaposto per i percorsi delle immagini. Devi sostituire questi segnaposto
con i percorsi effettivi delle immagini container di cui hai eseguito il push nel repository Artifact Registry
nella sezione precedente.
Per aggiornare il file manifest di Kubernetes kubernetes-manifest.yaml
, segui questi
passaggi:
In Cloud Shell, vai alla directory
containerized/
, che contiene il file manifest Kuberneteskubernetes-manifest.yaml
:cd kubernetes-engine-samples/quickstarts/monolith-to-microservices/containerized/
Apri il file
kubernetes-manifest.yaml
in un editor di testo:vim kubernetes-manifest.yaml
Individua i campi
image
che contengono segnaposto come questo:image: REPOSITORY_REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/home-app:TAG
Sostituisci ogni segnaposto con i percorsi effettivi delle immagini container di cui hai eseguito il push in Artifact Registry:
REPOSITORY_REGION
: la regione che hai specificato quando hai creato un repository in Artifact Registry.PROJECT_ID
: il tuo ID progetto Google Cloud , che puoi trovare nella pagina Selettore progetti.REPOSITORY_NAME
: il nome del repository, che hai specificato quando hai creato un repository in Artifact Registry. Ad esempio:book-review-service-repo
.TAG
: il tag che hai scelto quando hai creato le immagini container.
Ecco come potrebbe apparire un percorso dopo aver effettuato queste sostituzioni:
image:us-west1-docker.pkg.dev/your-project-id/book-review-service-repo/home-app:v1
Aggiorna i percorsi per tutte le immagini container:
home-app
book-details-app
book-reviews-app
images-app
Dopo aver aggiornato i percorsi, salva il file manifest e chiudi l'editor. Ad esempio, se utilizzi vim, premi Esc per attivare la modalità comando, digita wq e premi Invio per salvare e uscire.
Il manifest Kubernetes è ora configurato per eseguire il deployment delle immagini container dal repository Artifact Registry a un cluster Kubernetes.
Riepilogo
In questo tutorial hai preparato l'app modulare Cymbal Books per il deployment in un cluster Kubernetes eseguendo le seguenti attività:
- Configura un progetto Google Cloud e Cloud Shell per il tuo ambiente.
- Ha esaminato i Dockerfile forniti per ogni modulo dell'app.
- Immagini container create per i moduli dell'app utilizzando Docker.
- Contenitori testati in Cloud Shell per verificarne la funzionalità.
- Eseguito il push delle immagini container in Artifact Registry per l'archiviazione.
- È stato aggiornato il manifest Kubernetes in modo da utilizzare i percorsi delle immagini container corretti da Artifact Registry.
Passaggi successivi
Nel tutorial successivo, Esegui il deployment dell'app in un cluster GKE, esegui il deployment dell'applicazione containerizzata in un cluster GKE.