Questa pagina spiega come eseguire il deployment del codice di backend dell'API e dell'Extensible Service Proxy (ESP) su Google Kubernetes Engine e Compute Engine.
Anche se i passaggi di deployment variano a seconda della piattaforma che ospita l'API, c'è sempre un passaggio in cui fornire a ESP service name e un'opzione che configura ESP in modo che utilizzi Cloud Endpoints di cui è stato eseguito il deployment più recente la configurazione del servizio. Con queste informazioni, ESP può ottenere la configurazione degli endpoint dell'API, che consente di eseguire il proxy delle richieste e delle risposte in modo che Cloud Endpoints possa gestire l'API.
Prerequisiti
Per iniziare, questa pagina presuppone che tu abbia:
- Hai creato un progetto Google Cloud.
- Configurato Endpoints.
- Esegui il deployment della configurazione di Endpoints.
Preparazione al deployment
Compute Engine
Affinché Endpoints possa gestire la tua API, devi installare e configurare ESP, nonché il codice del server di backend per l'API. Devi installare Docker sulla tua istanza VM di Compute Engine in modo da poter eseguire l'immagine Docker ESP liberamente disponibile in Container Registry.
Prima del deployment:
Prima di poter eseguire il deployment dell'API e dell'ESP su Compute Engine, completa i seguenti passaggi:
- Crea, configura e avvia l'istanza VM.
- Installa Docker Enterprise Edition (EE) o Docker Community Edition (CE) sulla tua istanza VM.
- Crea un container Docker per il codice del tuo server di backend.
- Esegui il push del container in Artifact Registry} o in un altro registry.
Assicurati di poter:
- Connettiti all'istanza VM.
- Esegui l'immagine Docker per avviare il server di backend sull'istanza VM. Consulta la documentazione di riferimento di docker run.
- Invia richieste alla tua API.
GKE
Quando crei un cluster nella console Google Cloud, per impostazione predefinita gli ambiti OAuth concessi all'account di servizio del cluster includono gli ambiti richiesti da Endpoints:
- Service Control: abilitato
- Gestione del servizio: sola lettura
Quando crei un cluster utilizzando
gcloud container clusters create
o utilizzando un file di configurazione di terze parti, assicurati di specificare
i seguenti ambiti:
"https://www.googleapis.com/auth/servicecontrol"
"https://www.googleapis.com/auth/service.management.readonly"
Per ulteriori informazioni, consulta Che cosa sono gli ambiti di accesso?.
Prima del deployment:
Con l'aggiunta di una piccola sezione al File manifest di deployment, puoi eseguire l'immagine Docker ESP sui cluster di container insieme alla tua applicazione containerizzata. Prima di poter eseguire il deployment dell'API con ESP in GKE, completa i seguenti passaggi:
Esegui il deployment dell'applicazione containerizzata nei cluster di container. I passaggi generali descritti nella documentazione di GKE sono:
- Pacchettizza l'applicazione in un'immagine Docker.
- Carica l'immagine in un registry.
- Creare un cluster di container.
- Esegui il deployment dell'applicazione nel cluster.
- Esponi la tua applicazione a internet.
Assicurati di riuscire a:
- Avvia il server dell'API.
- Invia richieste alla tua API.
Deployment di API ed ESP
Compute Engine
Per eseguire il deployment dell'API con ESP in Compute Engine con Docker:
Connettiti all'istanza VM. Sostituisci
INSTANCE_NAME
con il nome dell'istanza VM:gcloud compute ssh INSTANCE_NAME
Crea la tua rete di container denominata
esp_net
:sudo docker network create --driver bridge esp_net
Esegui un'istanza dell'immagine del codice del tuo server di backend e connettila alla rete di container
esp_net
:sudo docker run \ --detach \ --name=YOUR_API_CONTAINER_NAME \ --net=esp_net \ gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1
- Sostituisci
YOUR_API_CONTAINER_NAME
con il nome del container. - Sostituisci
YOUR_PROJECT_ID
con ID progetto Google Cloud utilizzato quando hai inviato l'immagine. - Sostituisci
YOUR_IMAGE
con il nome del tuo dell'immagine.
- Sostituisci
Recupera il nome del servizio della tua API. Questo è il nome che hai specificato nel campo
name
di del tuo file YAML di configurazione del servizio.Esegui un'istanza dell'immagine Docker di ESP:
sudo docker run \ --detach \ --name=esp \ --publish=80:9000 \ --net=esp_net \ gcr.io/endpoints-release/endpoints-runtime:1 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --http2_port=9000 \ --backend=grpc://YOUR_API_CONTAINER_NAME:8000
- Sostituisci
SERVICE_NAME
con il nome del tuo completamente gestito di Google Cloud. - Sostituisci
YOUR_API_CONTAINER_NAME
con il nome del contenitore dell'API.
Opzione
--rollout_strategy=managed
configura ESP in modo che utilizzi l'ultima configurazione del servizio di cui è stato eseguito il deployment. Quando specificare questa opzione, fino a 5 minuti dopo il deployment di un nuovo servizio configurazione, ESP rileva la modifica e inizia automaticamente a utilizzarla. Ti consigliamo di specificare questa opzione anziché un ID configurazione specifico da utilizzare per ESP.- Sostituisci
Se devi configurare l'ESP per utilizzare un ID configurazione specifico:
Includi l'opzione
--version
e impostala su un ID configurazione specifico.Rimuovi l'opzione
--rollout_strategy=managed
o imposta--rollout_strategy
afixed
. L'opzionefixed
configura ESP in modo da utilizzare la configurazione del servizio specificata in--version
.Esegui di nuovo il comando
docker run
.
Se specifichi sia l'opzione --rollout_strategy=managed
sia l'opzione --version
,
ESP inizia con la configurazione specificata in
--version
, ma poi viene eseguito in modalità gestita e ottiene la versione più recente
configurazione.
Ti consigliamo di non mantenere ESP configurato in modo da utilizzare un un ID configurazione specifico troppo lungo perché, se esegui il deployment devi riavviare ESP per utilizzare il nuovo configurazione del servizio configurazione.
Per rimuovere l'ID configurazione specifico:
Nelle segnalazioni ESP per
docker run
, rimuovi--version
.Aggiungi l'opzione
--rollout_strategy=managed
.Per riavviare l'ESP, esegui il comando
docker run
.
Consulta Opzioni di avvio di ESP per l'elenco completo delle opzioni che puoi specificare all'avvio di ESP.
GKE
Per eseguire il deployment di ESP in GKE:
Ottieni il nome servizio dell'API.
Apri il file manifest del deployment (chiamato
deployment.yaml
) e aggiungi quanto segue alla sezionecontainers
:containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http2_port=9000", "--service=SERVICE_NAME", "--rollout_strategy=managed", "--backend=grpc://127.0.0.1:8000" ] ports: - containerPort: 9000
Sostituisci
SERVICE_NAME
con il nome del servizio dell'API.Avvia il servizio Kubernetes utilizzando il comando
kubectl create
:kubectl create -f deployment.yaml
Se devi configurare l'ESP per utilizzare un ID configurazione specifico:
Nel file manifest di Deployment, aggiungi l'opzione
--version
e impostala su un ID configurazione specifico.Rimuovi
--rollout_strategy=managed
o imposta--rollout_strategy
sufixed
. L'opzionefixed
configura l'ESP in modo da utilizzare la configurazione del servizio specificata in--version
.Avvia il servizio Kubernetes:
kubectl create -f deployment.yaml
Se specifichi sia --rollout_strategy=managed
sia
--version
, ESP inizia con la configurazione che
specificato in --version
, ma poi viene eseguito in modalità gestita e ottiene
configurazione più recente.
Ti consigliamo di non mantenere ESP configurato in modo da utilizzare una specifica l'ID configurazione troppo lungo perché se esegui il deployment di un servizio aggiornato devi riavviare ESP per utilizzare il nuovo configurazione.
Per rimuovere l'ID configurazione specifico:
Nel file manifest del deployment, rimuovi l'opzione
--version
.Aggiungi
--rollout_strategy=managed
.Avvia il servizio Kubernetes:
kubectl create -f deployment.yaml
Consulta: Opzioni di avvio di ESP per visualizzare l'elenco completo delle opzioni che puoi specificare quando avvii ESP.
monitora l'attività dell'API
Dopo aver eseguito il deployment dell'ESP e del backend dell'API, puoi utilizzare strumenti come curl
o Postman per inviare richieste all'API. Se non ricevi un esito positivo
di risposta, consulta
Risoluzione dei problemi relativi agli errori di risposta
Dopo aver inviato alcune richieste, puoi:
Per visualizzare i grafici delle attività della tua API, vai ad Endpoints > Servizi. Potrebbero essere necessari alcuni minuti prima che la richiesta venga riportata nei grafici.
Controlla i log delle richieste per l'API nella pagina Cloud Logging.
Passaggi successivi
- Risoluzione dei problemi relativi agli endpoint su Compute Engine
- Risoluzione dei problemi relativi agli endpoint su GKE