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_NAME
pelo 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_NAME
pelo nome do seu contentor. - Substitua
YOUR_PROJECT_ID
pelo Google Cloud ID do projeto que usou quando enviou a imagem. - Substitua
YOUR_IMAGE
pelo nome da sua imagem.
- Substitua
Obtenha o nome do serviço da sua API. Este é o nome que especificou no campo
name
do 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_NAME
pelo nome do seu serviço. - Substitua
YOUR_API_CONTAINER_NAME
pelo nome do contentor da API.
A opção
--rollout_strategy=managed
configura 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
--version
e defina-a como um ID de configuração específico.Remova a opção
--rollout_strategy=managed
ou defina--rollout_strategy
comofixed
. A opçãofixed
configura 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çãocontainers
: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_NAME
pelo 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
--version
e defina-a como um ID de configuração específico.Remova
--rollout_strategy=managed
ou defina--rollout_strategy
comofixed
. A opçãofixed
configura 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