Esta página explica como implementar o código de back-end da sua API e o proxy de serviço extensível (ESP) no Google Kubernetes Engine e no Compute Engine.
Embora os passos de implementação variem consoante a plataforma que aloja a sua API, existe sempre um passo em que fornece ao ESP o nome do serviço e uma opção que configura o ESP para usar a configuração do serviço Cloud Endpoints implementada mais recentemente. Com estas informações, o ESP pode obter a configuração dos pontos finais da sua API, o que permite ao ESP encaminhar pedidos e respostas por proxy para que o Cloud Endpoints possa gerir a sua API.
Pré-requisitos
Como ponto de partida, esta página pressupõe que:
- Criou um Google Cloud projeto.
- Pontos finais configurados.
- Implementou a configuração dos Endpoints.
Preparação para a implementação
Compute Engine
Para que os Endpoints geram a sua API, tem de instalar e configurar o ESP, bem como o código do servidor de back-end para a sua API. Tem de instalar o Docker na instância de VM do Compute Engine para poder executar a imagem de Docker do ESP que está disponível gratuitamente no Container Registry.
Antes de implementar:
Antes de poder implementar a sua API e ESP no Compute Engine, conclua os seguintes passos:
- Crie, configure e inicie a instância de VM.
- Instale o Docker Enterprise Edition (EE) ou o Docker Community Edition (CE) na sua instância de VM.
- Crie um contentor Docker para o código do servidor de back-end.
- Envie o contentor para o Artifact Registry} ou outro registo.
- Certifique-se de que consegue: - Estabeleça ligação à instância de VM.
- Execute a imagem do Docker para iniciar o servidor de back-end na instância de VM. Consulte a referência de execução do Docker.
- Enviar pedidos para a sua API.
 
GKE
Quando cria um cluster na Google Cloud consola, por predefinição, os âmbitos do OAuth concedidos à conta de serviço do cluster incluem os âmbitos que o Endpoints requer:
- Controlo de serviços: ativado
- Gestão de serviços: só de leitura
Quando cria um cluster através do comando
gcloud container clusters create
ou de um ficheiro de configuração de terceiros, certifique-se de que especifica os seguintes âmbitos:
- "https://www.googleapis.com/auth/servicecontrol"
- "https://www.googleapis.com/auth/service.management.readonly"
Para mais informações, consulte o artigo O que são âmbitos de acesso?.
Antes de implementar:
Com a adição de uma pequena secção ao ficheiro de manifesto de implementação, pode executar a imagem do Docker do ESP nos clusters de contentores juntamente com a sua aplicação em contentores. Antes de poder implementar a sua API com o ESP no GKE, conclua os seguintes passos:
- Implemente a sua aplicação contentorizada nos clusters de contentores. Os passos gerais, conforme descrito na documentação do GKE, são: - Empacote a sua aplicação numa imagem Docker.
- Carregue a imagem para um registo.
- Crie um cluster de contentores.
- Implemente a sua aplicação no cluster.
- Exponha a sua aplicação à Internet.
 
- Certifique-se de que consegue: - Inicie o servidor da API.
- Enviar pedidos para a sua API.
 
Implementar a API e o ESP
Compute Engine
Para implementar a sua API com o ESP no Compute Engine com o Docker:
- Estabeleça ligação à sua instância de VM. Substitua - INSTANCE_NAMEpelo nome da sua instância de VM:- gcloud compute ssh INSTANCE_NAME 
- Crie a sua própria rede de contentores denominada - esp_net:- sudo docker network create --driver bridge esp_net
- Execute uma instância da imagem do código do servidor de back-end e associe-a à rede do contentor - esp_net:- sudo docker run \ --detach \ --name=YOUR_API_CONTAINER_NAME \ --net=esp_net \ gcr.io/YOUR_PROJECT_ID/YOUR_IMAGE:1- Substitua YOUR_API_CONTAINER_NAMEpelo nome do seu contentor.
- Substitua YOUR_PROJECT_IDpelo Google Cloud ID do projeto que usou quando enviou a imagem.
- Substitua YOUR_IMAGEpelo nome da sua imagem.
 
- Substitua 
- Obtenha o nome do serviço da sua API. Este é o nome que especificou no campo - namedo ficheiro YAML de configuração do serviço.
- Execute uma instância da imagem do Docker do 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- Substitua SERVICE_NAMEpelo nome do seu serviço.
- Substitua YOUR_API_CONTAINER_NAMEpelo nome do contentor da API.
 - A opção - --rollout_strategy=managedconfigura o ESP para usar a configuração do serviço implementada mais recente. Quando especifica esta opção, até 5 minutos após implementar uma nova configuração de serviço, o ESP deteta a alteração e começa a usá-la automaticamente. Recomendamos que especifique esta opção em vez de um ID de configuração específico para o ESP usar.
- Substitua 
Se precisar de configurar o ESP para usar um ID de configuração específico:
- Inclua a opção - --versione defina-a como um ID de configuração específico.
- Remova a opção - --rollout_strategy=managedou defina- --rollout_strategycomo- fixed. A opção- fixedconfigura o ESP para usar a configuração do serviço que especificou em- --version.
- Execute novamente o comando - docker run.
Se especificar --rollout_strategy=managed e a opção --version, o ESP começa com a configuração especificada em --version, mas é executado no modo gerido e obtém a configuração mais recente.
Recomendamos que não mantenha o ESP configurado para usar um ID de configuração específico durante demasiado tempo, porque se implementar uma configuração de serviço atualizada, tem de reiniciar o ESP para usar a nova configuração.
Para remover o ID de configuração específico:
- Nas flags ESP para - docker run, remova a opção- --version.
- Adicione a opção - --rollout_strategy=managed.
- Para reiniciar o ESP, execute o comando - docker run.
Consulte as opções de arranque do ESP para ver a lista completa de opções que pode especificar ao iniciar o ESP.
GKE
Para implementar o ESP no GKE:
- Obtenha o nome do serviço da sua API. 
- Abra o ficheiro de manifesto de implementação (denominado - deployment.yaml) e adicione o seguinte à secção- containers:- 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- Substitua - SERVICE_NAMEpelo nome do serviço da sua API.
- Inicie o serviço Kubernetes com o comando - kubectl create:- kubectl create -f deployment.yaml
Se precisar de configurar o ESP para usar um ID de configuração específico:
- No ficheiro de manifesto de implementação, adicione a opção - --versione defina-a como um ID de configuração específico.
- Remova - --rollout_strategy=managedou defina- --rollout_strategycomo- fixed. A opção- fixedconfigura o ESP para usar a configuração do serviço que especificou em- --version.
- Inicie o serviço do Kubernetes: - kubectl create -f deployment.yaml
Se especificar --rollout_strategy=managed e a opção --version, o ESP é iniciado com a configuração especificada em --version, mas, em seguida, é executado no modo gerido e obtém a configuração mais recente.
Recomendamos que não mantenha o ESP configurado para usar um ID de configuração específico durante demasiado tempo, porque se implementar uma configuração de serviço atualizada, tem de reiniciar o ESP para usar a nova configuração.
Para remover o ID de configuração específico:
- No ficheiro de manifesto de implementação, remova a opção - --version.
- Adicione - --rollout_strategy=managed.
- Inicie o serviço do Kubernetes: - kubectl create -f deployment.yaml
Consulte as opções de arranque do ESP para ver a lista completa de opções que pode especificar ao iniciar o ESP.
Acompanhamento da atividade da API
Depois de implementar o ESP e o back-end da API, pode usar ferramentas como o curl ou o Postman para enviar pedidos para a sua API. Se não receber uma resposta
bem-sucedida, consulte o artigo
Resolução de problemas de erros de resposta
Depois de enviar alguns pedidos, pode:
- Para ver os gráficos de atividade da sua API, aceda a Endpoints > Serviços. Pode demorar alguns momentos até que o pedido se reflita nos gráficos. 
- Consulte os registos de pedidos da sua API na página do Cloud Logging. 
O que se segue?
- Resolução de problemas de Endpoints no Compute Engine
- Resolução de problemas de pontos finais no GKE