Questa pagina spiega come eseguire il deployment del codice backend dell'API e di Extensible Service Proxy (ESP) in Google Kubernetes Engine, Compute Engine e nell'ambiente flessibile di App Engine.
Sebbene i passaggi di deployment varino a seconda della piattaforma che ospita l'API, è sempre presente un passaggio in cui fornisci a ESP il nome del servizio e un'opzione che configura ESP per utilizzare la configurazione del servizio Cloud Endpoints di cui è stato eseguito il deployment più recente. Con queste informazioni, ESP può ottenere la configurazione di Endpoints dell'API, che consente a ESP di eseguire il proxy delle richieste e delle risposte in modo che Endpoints possa gestire l'API.
Prerequisiti
Come punto di partenza, questa pagina presuppone che tu abbia:
- Creatoun Google Cloud progetto.
- Configurato Endpoints.
- Eseguito il deployment della configurazione di Endpoints.
Prepararsi al deployment
Ambiente flessibile di App Engine
Con l'aggiunta di un piccolo passaggio di configurazione (descritto nei passaggi seguenti), il deployment dell'API in modo che sia gestita da Endpoints è uguale al deployment di qualsiasi applicazione nell'ambiente flessibile di App Engine. Segui la documentazione di App Engine per:
- Organizzare i file di configurazione.
-
Creare il file di configurazione
app.yaml - Se la tua applicazione è basata su microservizi, consulta la documentazione relativa al deployment
di più applicazioni di servizio
per informazioni sulla configurazione dei
app.yamlfile per ogni servizio.
Esegui il deployment dell'API in App Engine utilizzando il
gcloud app deploy
comando. Questo comando crea automaticamente un'immagine container utilizzando il
servizio Container Builder e poi
esegue il deployment dell'immagine nell'ambiente flessibile di App Engine.
Prima di eseguire il deployment:
- Il proprietario del Google Cloud progetto deve creare l' applicazione App Engine.
- Assicurati che il tuo account utente includa i privilegi richiesti.
Compute Engine
Affinché Endpoints gestisca l'API, devi installare e configurare ESP, nonché il codice del server di backend per la tua API. Devi installare Docker sull'istanza VM di Compute Engine per poter eseguire l'immagine Docker di ESP, disponibile senza costi in Artifact Registry.
Prima di eseguire il deployment:
Di seguito sono riportati a livello generale i passaggi da eseguire prima di poter eseguire il deployment dell'API e di ESP in Compute Engine. In generale, esegui tutti i passaggi che normalmente esegui per eseguire il codice del server di backend in Compute Engine.
- Crea, configura e avvia l'istanza VM. Consulta la documentazione di Compute Engine.
- Installa Docker Enterprise Edition (EE) o Docker Community Edition (CE) su l'istanza VM. Consulta Installa Docker.
- Crea un container Docker per il codice del server di backend. Consulta la documentazione di Cloud Build.
- Esegui il push del container in Artifact Registry o in un altro registro.
- Assicurati di poter eseguire correttamente le seguenti operazioni:
- Connettiti all' istanza VM.
- Esegui l'immagine Docker per avviare il server di backend sull'istanza VM instance. Consulta il riferimento di docker run.
- Invia richieste all'API.
GKE
Quando crei un cluster nella Google Cloud consolle, per impostazione predefinita, gli ambiti OAuth concessi al account di servizio del cluster includono gli ambiti richiesti da Endpoints:
- Service Control: abilitato
- Service Management: solo lettura
Quando crei un cluster utilizzando il
gcloud container clusters create comando o 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 di eseguire il deployment:
Aggiungendo una piccola sezione al file manifest di deployment, puoi eseguire l'immagine Docker di ESP sui cluster di container insieme all'applicazione containerizzata. Di seguito sono riportati a livello generale i passaggi da eseguire prima di poter eseguire il deployment dell'API con ESP in GKE. In generale, esegui tutti i passaggi che normalmente esegui per eseguire il codice del server di backend in GKE.
- Esegui il deployment dell'applicazione containerizzata nei cluster di container. I passaggi generali descritti nella
documentazione di GKE
sono:
- Pacchettizza l'app in un'immagine Docker.
- Carica l'immagine in un registro.
- Crea un cluster di container.
- Esegui il deployment dell'app nel cluster.
- Esporre l'app su internet.
- Assicurati di poter eseguire correttamente le seguenti operazioni:
- Avvia il server dell'API.
- Invia richieste all'API.
Eseguire il deployment dell'API e di ESP
Ambiente flessibile di App Engine
Per eseguire il deployment dell'API e di ESP in App Engine:
- Recupera il
nome del servizio dell'API. Questo è il nome che hai specificato nel campo
hostdel documento OpenAPI. - Modifica il file
app.yamle aggiungi una sezione denominataendpoints_api_serviceche contenga il nome del servizio. Puoi utilizzare ilapp.yamlfile del tutorial come modello:Java Python Go PHP Ruby NodeJS Sostituisci
ENDPOINTS-SERVICE-NAMEcon il nome del servizio dell'API.Aggiungi le variabili di ambiente e di runtime nel file di configurazione
app.yaml.Ad esempio:
runtime: nodejs env: flex endpoints_api_service: name: example-project-12345.appspot.com rollout_strategy: managed
L'opzione
rollout_strategy: managedconfigura ESP per utilizzare la configurazione del servizio di cui è stato eseguito il deployment più recente. Quando specifichi questa opzione, fino a 5 minuti dopo il deployment di una nuova configurazione del servizio, ESP rileva la modifica e inizia automaticamente a utilizzarla. Ti consigliamo di specificare questa opzione anziché un ID di configurazione specifico da utilizzare per ESP.Se la tua applicazione è basata su microservizi, devi includere la sezione
endpoints_api_servicein ogni fileapp.yaml. - Salva il file (o i file)
app.yaml. - Esegui il deployment del codice backend e di ESP in App Engine:
gcloud app deploy
Poiché hai aggiunto la sezione endpoints_api_service al file
app.yaml, il comando gcloud app deploy esegue il deployment e configura ESP in un container separato nell'ambiente flessibile di App Engine. Tutto il traffico delle richieste viene instradato tramite
ESP, che
esegue il proxy delle richieste e delle risposte da e verso il container che esegue il codice del server di
backend.
Se devi configurare ESP per utilizzare un ID di configurazione specifico:
- Nella sezione
endpoints_api_servicedel fileapp.yaml, aggiungi il campoconfig_ide impostalo su un ID di configurazione specifico. - Rimuovi
rollout_strategy: managedo impostarollout_strategysufixed. L'opzionefixedconfigura ESP per utilizzare la configurazione del servizio specificata inconfig_id. - Esegui di nuovo il deployment dell'API e di ESP:
gcloud app deploy
Ti consigliamo di non mantenere ESP configurato per utilizzare un ID di configurazione specifico per molto tempo, perché se esegui il deployment di una configurazione del servizio aggiornata, devi riavviare ESP per utilizzare la nuova configurazione.
Per rimuovere l'ID di configurazione specifico:
- Rimuovi l'opzione
config_iddal fileapp.yaml. - Aggiungi l'opzione
rollout_strategy: managed. - Esegui il comando
gcloud app deploy
Quando utilizzi l'opzione rollout_strategy: managed, non includere
config_id: YOUR_SERVICE_CONFIG_ID nel
app.yaml file. In caso contrario, gcloud app deploy non riesce
con il seguente errore:
config_id is forbidden when rollout_strategy is set to "managed".
Quando esegui il deployment dell'API nell'ambiente flessibile di App Engine per la prima volta, potrebbe verificarsi un ritardo durante la configurazione della macchina virtuale (VM) e di altre infrastrutture. Per ulteriori informazioni, consulta Garantire il successo del deployment nella documentazione di App Engine.
Compute Engine
Per eseguire il deployment dell'API con ESP in Compute Engine con Docker:
- Connettiti all'istanza VM. Sostituisci
INSTANCE_NAMEcon il nome dell'istanza VM.gcloud compute ssh INSTANCE_NAME
- Crea una rete di container personalizzata denominata
esp_net:sudo docker network create --driver bridge esp_net
- Esegui un'istanza dell'immagine del codice del 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.0- Sostituisci
YOUR_API_CONTAINER_NAMEcon il nome del container. - Sostituisci
YOUR_PROJECT_IDcon l' Google Cloud ID del progetto che hai utilizzato quando hai eseguito il push dell'immagine. - Sostituisci
YOUR_IMAGEcon il nome dell'immagine.
- Sostituisci
- Recupera il nome
servizio dell'API. Questo è il nome che hai specificato nel campo
hostdel documento OpenAPI. - Esegui un'istanza dell'immagine Docker di ESP:
sudo docker run \ --name=esp \ --detach \ --publish=80:8080 \ --net=esp_net \ gcr.io/endpoints-release/endpoints-runtime:1 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --backend=YOUR_API_CONTAINER_NAME:8080- Sostituisci
SERVICE_NAMEcon il nome del servizio. - Sostituisci
YOUR_API_CONTAINER_NAMEcon il nome del container dell'API.
L'opzione
--rollout_strategy=managedconfigura ESP per utilizzare la configurazione del servizio di cui è stato eseguito il deployment più recente. Quando specifichi questa opzione, fino a 5 minuti dopo il deployment di una nuova configurazione del servizio, ESP rileva la modifica e inizia automaticamente a utilizzarla. Ti consigliamo di specificare questa opzione anziché un ID di configurazione specifico da utilizzare per ESP. - Sostituisci
Se devi configurare ESP per utilizzare un ID di configurazione specifico:
- Includi l'opzione
--versione impostala su un ID di configurazione specifico . - Rimuovi l'opzione
--rollout_strategy=managedo imposta--rollout_strategysufixed. L'opzionefixedconfigura ESP per utilizzare la configurazione del servizio specificata in--version. - Esegui di nuovo il comando
docker run.
Se specifichi sia --rollout_strategy=managed sia l'opzione
--version, ESP viene avviato con la configurazione
specificata in --version, ma poi viene eseguito in modalità gestita
e recupera la configurazione più recente.
Ti consigliamo di non mantenere ESP configurato per utilizzare un ID di configurazione specifico per molto tempo, perché se esegui il deployment di una configurazione del servizio aggiornata, devi riavviare ESP per utilizzare la nuova configurazione.
Per rimuovere l'ID di configurazione specifico:
- Nei flag ESP per
docker run, rimuovi l'opzione--version. - Aggiungi l'opzione
--rollout_strategy=managed. - Esegui il comando
docker runper riavviare ESP.
Per l'elenco completo delle opzioni che puoi specificare all'avvio di ESP , consulta Opzioni di avvio di ESP.
GKE
Per eseguire il deployment di ESP in GKE:
- Recupera il
nome del servizio dell'
API (il nome che hai specificato nel campo
hostdel documento OpenAPI). - Apri il file manifest di deployment (denominato file
deployment.yamlfile) e aggiungi quanto segue alla sezione dei container:containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:1 args: [ "--http_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]Sostituisci
SERVICE_NAMEcon il nome del servizio dell'API.L'opzione
--rollout_strategy=managed"configura ESP per utilizzare la configurazione del servizio di cui è stato eseguito il deployment più recente. Quando specifichi questa opzione, fino a 5 minuti dopo il deployment di una nuova configurazione del servizio, ESP rileva la modifica e inizia automaticamente a utilizzarla. Ti consigliamo di specificare questa opzione anziché un ID di configurazione specifico da utilizzare per ESP. - Avvia il servizio Kubernetes utilizzando il
comando kubectl create:
kubectl create -f deployment.yaml
Se devi configurare ESP per utilizzare un ID di configurazione specifico:
- Nel file manifest di deployment, aggiungi l'opzione
--versione impostala su un ID di configurazione specifico. - Rimuovi
--rollout_strategy=managedo imposta--rollout_strategysufixed. L'fixedopzione configura ESP per utilizzare la configurazione del servizio che hai specificato in--version. - Avvia il servizio Kubernetes:
kubectl create -f deployment.yaml
Se specifichi sia --rollout_strategy=managed sia l'
--version opzione, ESP viene avviato con la configurazione
specificata in --version ma poi viene eseguito in modalità gestita e
recupera la configurazione più recente.
Ti consigliamo di non mantenere ESP configurato per utilizzare un ID di configurazione specifico per molto tempo, perché se esegui il deployment di una configurazione del servizio aggiornata, devi riavviare ESP per utilizzare la nuova configurazione.
Per rimuovere l'ID di configurazione specifico:
- Nel file manifest di deployment, rimuovi l'opzione
--version. - Aggiungi
--rollout_strategy=managed. - Avvia il servizio Kubernetes:
kubectl create -f deployment.yaml
Per l'elenco completo delle opzioni che puoi specificare all'avvio di ESP , consulta Opzioni di avvio di ESP.
monitora l'attività dell'API
Dopo aver eseguito il deployment di ESP e del backend dell'API, puoi utilizzare strumenti come curl o Postman per inviare richieste all'API. Se non ricevi una risposta positiva
consulta
Risoluzione dei problemi relativi agli errori di risposta.
Dopo aver inviato alcune richieste, puoi:
Visualizzare i grafici delle attività associate alla tua API in Endpoints > Servizi.
Vai alla pagina Servizi Endpoints
La visualizzazione dei dati relativi alle richieste nei grafici può richiedere alcuni minuti.Esaminare i log delle richieste per l'API nella pagina Cloud Logging.