Questa guida mostra come eseguire un'applicazione dell'ambiente flessibile di App Engine su GKE. Per eseguire l'app su GKE, devi creare un container Docker, creare un container utilizzando il Dockerfile ed eseguire il container in GKE. senza dover apportare delle modifiche al codice.
Prima di iniziare
Prima di seguire le istruzioni riportate in questa pagina, procedi nel seguente modo:
Verifica che il deployment e l'applicazione vengano eseguiti correttamente nell'ambiente flessibile di App Engine.
In queste istruzioni, utilizzerai lo stesso progetto che hai usato per l'app App Engine. Se vuoi, puoi sempre creare e utilizzare un nuovo progetto.
Abilita le API GKE, Cloud Build.
Scarica e installa l'interfaccia a riga di comando di Google Cloud, quindi inizializza lo strumento gcloud:
Scarica l'SDKScarica e installa lo strumento Kubernetes
kubectl
.Creazione di un Dockerfile per l'app App Engine
Crea un Dockerfile per la tua app, come descritto in Creare un Dockerfile.
Creazione di un container dal Dockerfile
Per creare un container:
Assicurati di trovarti nella directory dell'applicazione App Engine che contiene il Dockerfile.
Modifica il progetto predefinito utilizzato dallo strumento
gcloud
in modo che indirizzi al progetto che stai utilizzando per eseguire l'app in GKE:gcloud config set project [YOUR-PROJECT-ID]
Sostituisci
[YOUR-PROJECT-ID]
con l'ID del tuo progetto GKE.Crea il container utilizzando il seguente comando:
gcloud builds submit --tag gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME] .
Sostituisci
[YOUR-PROJECT-ID]
con l'ID del progetto GKE e[YOUR-CONTAINER-NAME]
con il nome del container che vuoi utilizzare per il tuo container di app.Attendi la creazione del container: potrebbe essere necessario un po' di tempo. Al termine, verrà visualizzato un messaggio simile al seguente:
Created [https://cloudbuild.googleapis.com/v1/projects/YOUR-PROJECT-ID/builds/xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx]. Logs are permanently available at [https://console.developers.google.com/logs/viewer?resource=build&project=YOUR-PROJECT-ID&filters=text:xxxx-xxx-xxx-xxxxxxxxxxxx]]. ID CREATE_TIME DURATION SOURCE IMAGES STATUS xxxxxxx-xxxx-xxx-xxx-xxxxxxxxxxxx 2017-03-04T00:42:10+00:00 1M32S gs://YOUR-PROJECT-ID_cloudbuild/source/xxxxxxx.08.tgz gcr.io/YOUR-PROJECT-ID/YOUR-CONTAINER-NAME SUCCESS<
Nota il nome del container: devi specificarlo quando lo esegui in GKE.
Esecuzione dell'app in GKE
Per eseguire il container che contiene la tua applicazione:
Crea il cluster (l'operazione potrebbe richiedere alcuni minuti):
gcloud container clusters create [YOUR-CLUSTER-NAME]
Sostituisci
[YOUR-CLUSTER-NAME]
con il nome che vuoi assegnare al cluster.Dalla riga di comando, imposta la zona di Compute Engine:
gcloud config set compute/zone us-central1-b
Assicurati che lo strumento
kubectl
GKE sia autorizzato:gcloud container clusters get-credentials [YOUR-CLUSTER-NAME]
Segui le istruzioni per autorizzare lo strumento.
Esegui il container che contiene la tua app:
kubectl create deployment [YOUR-DEPLOYMENT-NAME] --image=gcr.io/[YOUR-PROJECT-ID]/[YOUR-CONTAINER-NAME]
Sostituisci
[YOUR-DEPLOYMENT-NAME]
con il nome che intendi utilizzare per il deployment, sostituisci[YOUR-PROJECT-ID]
con l'ID progetto GKE e[YOUR-CONTAINER-NAME]
con il nome del container che hai creato per l'app.Esponi il container per l'accesso pubblico:
kubectl expose deployment [YOUR-DEPLOYMENT-NAME] --type="LoadBalancer" --port=8080
Sostituisci
[YOUR-DEPLOYMENT-NAME]
con il nome indicato nei passaggi precedenti. Potrebbe essere necessario attendere diversi minuti prima che sia visibile l'IP esterno.Visualizza l'indirizzo IP esterno della tua app:
kubectl get service [YOUR-DEPLOYMENT-NAME]
Sostituisci
[YOUR-DEPLOYMENT-NAME]
con il nome utilizzato nei passaggi precedenti. Se il campoEXTERNAL IP
è vuoto, attendi qualche istante, quindi richiama nuovamente il comando.Visualizza l'applicazione in esecuzione in GKE:
http://EXTERNAL-IP:8080
Sostituisci
EXTERNAL-IP
con l'indirizzo IP esterno che hai ottenuto nel passaggio precedente.
Hai eseguito il deployment e l'esecuzione dell'app Java di App Engine su GKE.
Passaggi successivi
Scopri di più su Kubernetes e sul comando
kubectl
. Google Kubernetes Engine utilizza Kubernetes per la gestione, il deployment e la scalabilità dei container. Ulteriori informazioni su Kubernetes sono disponibili sul sito di Kubernetes esterno.Questa guida utilizza
kubectl
, l'interfaccia a riga di comando per la gestione dei cluster Kubernetes. Ulteriori informazioni sukubectl
sono disponibili nel riferimento kubectl.