Neste tutorial, você aprende a configurar e implantar uma API de amostra e o Extensible Service Proxy V2 (ESPv2) em um cluster do Kubernetes que não está no Google Cloud. Se quiser usar o Google Kubernetes Engine (GKE), consulte Primeiros passos com o Endpoints no GKE.
A API REST do código de amostra é descrita com a especificação OpenAPI. O tutorial também mostra como criar uma chave de API para enviar solicitações à API.
Neste tutorial, são usadas imagens de contêiner predefinidas do código de amostra e do ESPv2, que são armazenadas no Artifact Registry. Se você não está familiarizado com os contêineres, consulte as páginas a seguir para saber mais:
Para uma visão geral do Cloud Endpoints, consulte Sobre o Endpoints e Arquitetura do Endpoints.
Objetivos
Ao seguir o tutorial, use a lista geral de tarefas abaixo. Para enviar solicitações à API, é necessário concluir todas as tarefas da Parte 1.
Parte 1
- Configurar um projeto do Google Cloud . Consulte Antes de começar.
- Instale e configure o software usado no tutorial. Consulte Como instalar e configurar o software necessário.
- Opcionalmente, faça o download do código de amostra. Consulte Como conseguir o código de amostra.
- Faça o download do arquivo de configuração do Kubernetes. Consulte Como conseguir o arquivo de configuração do Kubernetes.
- Configure o arquivo
openapi.yaml
, usado para configurar o Endpoints. Consulte Como configurar o Endpoints. - Implante a configuração do Endpoints para criar um serviço do Cloud Endpoints. Consulte Como implantar a configuração do Endpoints.
- Crie credenciais para o serviço do Endpoints. Consulte Como criar credenciais para o serviço.
- Implante a API e o ESPv2 no cluster. Consulte Como implantar o back-end da API.
- Consiga o endereço IP externo do serviço. Consulte Como conseguir o endereço IP externo.
- Envie uma solicitação à API usando um endereço IP. Consulte Como enviar uma solicitação usando um endereço IP.
- Rastreie a atividade da API. Consulte Como rastrear a atividade da API.
Parte 2
- Configurar um registro DNS para a API. Consulte Como configurar o DNS para o Endpoints.
- Envie uma solicitação à API usando o nome do domínio. Consulte Como enviar uma solicitação usando o FQDN.
Limpar
Quando terminar, consulte Limpeza para evitar cobranças na sua conta do Google Cloud .
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
Para acompanhar este tutorial, é preciso ter uma configuração de cluster do Kubernetes ou Minikube. Para saber mais, consulte a Documentação do Kubernetes.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Anote o ID do projeto Google Cloud , porque ele será necessário mais tarde.
-
Você precisará que um aplicativo envie solicitações à API de amostra.
- Usuários de Linux e macOS: este tutorial fornece um exemplo de uso de
curl
, que normalmente vem pré-instalado em seu sistema operacional. Caso não tenhacurl
, faça o download na página Versões e downloads (em inglês) docurl
. - Usuários do Windows: neste tutorial, há um exemplo que usa
Invoke-WebRequest
(em inglês), que é compatível com o PowerShell 3.0 e versões posteriores.
- Usuários de Linux e macOS: este tutorial fornece um exemplo de uso de
- Instale e inicialize a CLI gcloud.
-
Atualize a CLI gcloud e instale os componentes do Endpoints:
gcloud components update
-
Verifique se a Google Cloud CLI (
gcloud
) está autorizada a acessar seus dados e serviços em Google Cloud: Na nova guia aberta, selecione uma conta.gcloud auth login
- Defina o projeto padrão como o ID do projeto:
gcloud config set project YOUR_PROJECT_ID
Substitua YOUR_PROJECT_ID pela ID do seu projeto. Se você tiver outros projetos do Google Cloud e quiser usar
gcloud
para gerenciá-los, consulte Como gerenciar as configurações da CLI gcloud. - Instale
kubectl
:gcloud components install kubectl
-
Consiga novas credenciais de usuário que serão usadas nas credenciais padrão do aplicativo.
As credenciais de usuário autorizam a
kubectl
.gcloud auth application-default login
- Na nova guia que é aberta, escolha uma conta.
- Execute o comando a seguir para garantir que o cliente do Kubernetes esteja configurado corretamente:
kubectl version
O resultado será semelhante a:
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T05:28:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"7+", GitVersion:"v1.7.8-gke.0", GitCommit:"a7061d4b09b53ab4099e3b5ca3e80fb172e1b018", GitTreeState:"clean", BuildDate:"2017-10-10T18:48:45Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Como instalar e configurar o software necessário
Neste tutorial, você vai instalar a Google Cloud CLI para usar a
CLI gcloud
no gerenciamento do projeto.
Você usará a interface de linha de comando kubectl
(em inglês) para executar comandos em clusters do Kubernetes. Também será preciso uma maneira de testar a API.
No procedimento a seguir, se você já tem o software necessário instalado, siga para a próxima etapa.
Siga estas etapas para instalar e configurar o software necessário:
Como fazer o download do código de amostra
Opcionalmente, faça o download do código de amostra. Neste tutorial, será implantada uma imagem de contêiner pré-construída, portanto você não precisa criar um contêiner a partir do código de amostra. No entanto, faça o download do código de amostra que é fornecido em várias linguagens para ajudar você a entender como funciona a API de amostra.
Para fazer o download do código de amostra:
Para clonar ou fazer o download da API de amostra:
- Clone o repositório do aplicativo de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
- Acesse o diretório que contém o código de amostra:
cd java-docs-samples/endpoints/getting-started
Para clonar ou fazer o download da API de amostra:
- Clone o repositório do aplicativo de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
- Acesse o diretório que contém o código de amostra:
cd python-docs-samples/endpoints/getting-started
Para clonar ou fazer o download da API de amostra:
- Verifique se a variável de ambiente
GOPATH
(em inglês) está configurada. - Clone o repositório do app de amostra na máquina local:
go get -d github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
- Acesse o diretório que contém o código de amostra:
cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/endpoints/getting-started
Para clonar ou fazer o download da API de amostra:
- Clone o repositório do aplicativo de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
- Acesse o diretório que contém o código de amostra:
cd php-docs-samples/endpoints/getting-started
Para clonar ou fazer o download da API de amostra:
- Clone o repositório do aplicativo de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
- Acesse o diretório que contém o código de amostra:
cd ruby-docs-samples/endpoints/getting-started
Para clonar ou fazer o download da API de amostra:
- Clone o repositório do aplicativo de amostra na máquina local:
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
- Acesse o diretório que contém o código de amostra:
cd nodejs-docs-samples/endpoints/getting-started
Como conseguir o arquivo de configuração do Kubernetes
Clone o repositório GitHub que contém os arquivos
yaml
usados neste tutorial em sua máquina local:git clone https://github.com/googlecloudplatform/endpoints-samples
Como alternativa, faça o download da amostra (em inglês) como um arquivo zip e o descompacte.
Altere para o diretório que contém os arquivos de configuração:
cd endpoints-samples/kubernetes
Como configurar o Endpoints
O código de amostra inclui o arquivo de configuração da OpenAPI, openapi.yaml
, que é baseado na especificação OpenAPI v2.0 (em inglês).
Para configurar o Endpoints:
- No diretório de código de amostra, abra o arquivo de configuração
openapi.yaml
.Observe o seguinte:
- A amostra de configuração exibe as linhas próximas ao campo
host
, que precisa ser modificado. Para implantar o arquivoopenapi.yaml
no Endpoints, é necessário o documento completo da OpenAPI. - O arquivo de exemplo
openapi.yaml
contém uma seção para configurar a autenticação que não é necessária para este tutorial. Não é necessário configurar as linhas com YOUR-SERVICE-ACCOUNT-EMAIL e YOUR-CLIENT-ID. - A OpenAPI é uma especificação agnóstica de linguagem. Por conveniência, o mesmo arquivo
openapi.yaml
está na amostragetting-started
no repositório do GitHub de cada linguagem.
- A amostra de configuração exibe as linhas próximas ao campo
- No campo
host
, substitua o texto pelo nome do serviço do Endpoints, que precisa estar no seguinte formato:host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog"
Substitua YOUR_PROJECT_ID pelo ID do seu projeto Google Cloud . Exemplo:
host: "echo-api.endpoints.example-project-12345.cloud.goog"
Observe que echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
é o nome do serviço do Endpoints. e não o nome de domínio totalmente qualificado (FQDN, na sigla em inglês) usado para enviar solicitações à API.
Para mais informações sobre os campos no documento da OpenAPI exigido pelo Endpoints, consulte Como configurar o Endpoints.
Depois de concluir todas as etapas de configuração a seguir e poder
enviar solicitações à API de amostra usando um endereço IP, consulte
Como configurar o DNS do Endpoints
para informações sobre como configurar
echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
para ser o FQDN.
Implantar a configuração do Endpoints
Para implantar a configuração do Endpoints, use o comando gcloud endpoints
services deploy
. Ele utiliza o Service Management para criar um serviço gerenciado.
Para implantar a configuração do Endpoints:
- Verifique se você está no diretório
endpoints-samples/kubernetes
. - Faça upload da configuração e crie um serviço gerenciado:
gcloud endpoints services deploy openapi.yaml
Em seguida, o comando gcloud
chama a API Service Management para criar um serviço gerenciado com o nome especificado no campo host
do arquivo openapi.yaml
.
O Service Management configura o serviço de acordo com as configurações no arquivo openapi.yaml
. Ao fazer alterações em openapi.yaml
, é necessário reimplantar o arquivo para atualizar o serviço do Endpoints.
Durante a criação e a configuração do serviço, a Service Management envia informações ao terminal. Ignore os avisos sobre os caminhos no arquivo openapi.yaml
que não exigem uma chave de API.
Quando a configuração do serviço é concluída, o Service Management mostra uma mensagem com o código de configuração e o nome do serviço:
Service Configuration [2017-02-13r0] uploaded for service [echo-api.endpoints.example-project-12345.cloud.goog]
No exemplo anterior, 2017-02-13r0
é o ID de configuração do serviço e echo-api.endpoints.example-project-12345.cloud.goog
é o serviço do Endpoints. O código de configuração do serviço consiste em um carimbo de data e um número de revisão. Se você implantar o arquivo openapi.yaml
novamente no mesmo dia, o número de revisão será incrementado no ID de configuração do serviço. Você pode ver a configuração do serviço do Endpoints na página Endpoints > Serviços no Google Cloud console.
Se você receber uma mensagem de erro, consulte Como solucionar problemas de implantação na configuração do Endpoints.
Como verificar os serviços obrigatórios
No mínimo, o Endpoints e o ESP exigem a ativação dos seguintes serviços do Google:Nome | Título |
---|---|
servicemanagement.googleapis.com |
API Service Management |
servicecontrol.googleapis.com |
API Service Control |
Na maioria dos casos, o comando gcloud endpoints services deploy
ativa os serviços necessários. No entanto, o comando gcloud
é concluído com êxito, mas não ativa os serviços necessários nas seguintes circunstâncias:
Você usou um aplicativo de terceiros, como o Terraform, e não incluiu esses serviços.
Você implantou a configuração do Endpoints em um projeto doGoogle Cloud atual em que esses serviços foram explicitamente desativados.
Use o seguinte comando para confirmar se os serviços necessários estão ativados:
gcloud services list
Se você não encontrar os serviços necessários listados, ative-os:
gcloud services enable servicemanagement.googleapis.com
gcloud services enable servicecontrol.googleapis.com
Ative também seu serviço do Endpoints:
gcloud services enable ENDPOINTS_SERVICE_NAME
Para determinar o ENDPOINTS_SERVICE_NAME, é possível:
Depois de implantar a configuração do Endpoints, acesse a página Endpoints no Console do Cloud. A lista de ENDPOINTS_SERVICE_NAME possíveis é mostrada na coluna Nome do serviço.
Para a OpenAPI, o ENDPOINTS_SERVICE_NAME é o que você especificou no campo
host
da especificação do OpenAPI. Para gRPC, o ENDPOINTS_SERVICE_NAME é o que você especificou no camponame
da configuração do gRPC Endpoints.
Para mais informações sobre os comandos gcloud
, consulte serviços gcloud
.
Como criar credenciais para o serviço
Para fornecer gerenciamento da API, o ESP e o ESPv2 exigem os serviços do Service Infrastructure. Para chamá-los, o ESP e o ESPv2 precisam usar tokens de acesso. Quando você implanta o ESP ou o ESPv2 em ambientes do Google Cloud , como o GKE, o Compute Engine ou o ambiente flexível da App Engine, o ESP e o ESPv2 recebem tokens de acesso por meio do serviço de metadados doGoogle Cloud .
Ao implantar o ESP ou o ESPv2 em um ambiente que não seja doGoogle Cloud , como seu computador local, um cluster do Kubernetes local ou outro provedor de nuvem, é preciso fornecer um arquivo JSON da conta de serviço que contenha uma chave privada. O ESP e o ESPv2 usam a conta de serviço para gerar tokens de acesso e chamar os serviços necessários para gerenciar a API.
Use o console Google Cloud ou a Google Cloud CLI para criar a conta de serviço e o arquivo de chave privada:
Console
- No console Google Cloud , abra a página Contas de serviço .
- Clique em Selecione um projeto.
- Selecione o projeto em que a API foi criada e clique em Abrir.
- Clique em + Criar conta de serviço.
- No campo Nome da conta de serviço, insira o nome para sua conta de serviço.
- Clique em Criar
- Clique em Continuar.
- Clique em Concluído.
- Clique no endereço de e-mail da conta de serviço recém-criada.
- Clique em Chaves.
- Clique em Adicionar chave e em Criar nova chave.
Clique em Criar. O download de um arquivo de chave JSON é feito no seu computador.
Armazene o arquivo de chave com segurança, porque ele pode ser usado para autenticar como sua conta de serviço. Mova e renomeie esse arquivo como quiser.
Clique em Fechar.
gcloud
Para exibir os IDs dos seus projetos doGoogle Cloud , digite:
gcloud projects list
Substitua PROJECT_ID no comando a seguir para definir o projeto que contém sua API como padrão:
gcloud config set project PROJECT_ID
Verifique se a Google Cloud CLI (
gcloud
) está autorizada a acessar seus dados e serviços em Google Cloud:gcloud auth login
Se você tiver mais de uma conta, escolha a que está no projeto Google Cloud em que a API está localizada. Se você executar
gcloud auth list
, a conta selecionada será mostrada como a ativa para o projeto.Para criar uma conta de serviço, execute o seguinte comando e substitua SERVICE_ACCOUNT_NAME e
My Service Account
pelo nome e pelo nome de exibição que você quer usar:gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "My Service Account"
O comando atribui um endereço de e-mail para a conta de serviço no seguinte formato:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Esse endereço de e-mail é necessário nos comandos subsequentes.
Crie um arquivo da chave da conta de serviço:
gcloud iam service-accounts keys create ~/service-account-creds.json \ --iam-account SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Adicione os papéis necessários do IAM:
Nesta seção, descrevemos os recursos do IAM que o ESP e o ESPv2 usam, além dos papéis do IAM necessários para que a conta de serviço anexada acesse esses recursos.
Configuração do serviço de endpoint
O ESP e o ESPv2 chamam o Service Control, que usa a configuração do serviço do endpoint. A configuração do serviço do endpoint é um recurso do IAM, e o ESP e o ESPv2 precisam do papel Controlador de serviço para acessá-lo.
O papel do IAM está na configuração do serviço do endpoint, não no projeto. Os projetos podem ter várias configurações de serviço de endpoint.
Use o comando gcloud a seguir para adicionar o papel à conta de serviço anexada na configuração do serviço do endpoint.
gcloud endpoints services add-iam-policy-binding SERVICE_NAME \ --member serviceAccount:SERVICE_ACCOUNT_NAME@DEPLOY_PROJECT_ID.iam.gserviceaccount.com \ --role roles/servicemanagement.serviceController
Em que
* SERVICE_NAME
é o nome do serviço do endpoint
* SERVICE_ACCOUNT_NAME@DEPLOY_PROJECT_ID.iam.gserviceaccount.com
é a conta de serviço anexada.
Cloud Trace
O ESP e o ESPv2 chamam o serviço
Cloud Trace para
exportar o Trace para um projeto. Esse projeto é chamado de projeto de
rastreamento. No ESP, o projeto de rastreamento e o projeto que tem
a configuração do serviço de endpoint são os mesmos. No ESPv2, o
projeto de rastreamento pode ser especificado pela sinalização --tracing_project_id
e
assume como padrão o projeto de implantação.
O ESP e o ESPv2 exigem o papel Agente do Cloud Trace para ativar o Cloud Trace.
Use o seguinte comando gcloud para adicionar o papel à conta de serviço anexada:
gcloud projects add-iam-policy-binding TRACING_PROJECT_ID \ --member serviceAccount:SERVICE_ACCOUNT_NAME@DEPLOY_PROJECT_ID.iam.gserviceaccount.com \ --role roles/cloudtrace.agent
Em que
* TRACING_PROJECT_ID é o ID do projeto de rastreamento
* SERVICE_ACCOUNT_NAME@DEPLOY_PROJECT_ID.iam.gserviceaccount.com
é a conta de serviço anexada.
Para mais informações, consulte
O que são funções e permissões?
Para mais informações sobre os comandos, consulte gcloud iam service-accounts
.
Implantar o back-end da API
Até agora, você implantou o documento da OpenAPI no Service Management, mas não o código que exibe o back-end da API. Nesta seção, mostramos como implantar contêineres pré-criados da API de amostra e do ESPv2 no Kubernetes.
Como verificar as permissões necessárias
Conceder as permissões necessárias à conta de serviço associada ao cluster:
gcloud endpoints services add-iam-policy-binding SERVICE_NAME \ --member "serviceAccount:SERVICE_ACCOUNT" \ --role roles/servicemanagement.serviceController
Para mais informações, consulte O que são papéis e permissões?
Como fornecer as credenciais de serviço ao ESPv2
O ESPv2, que é executado dentro de um contêiner, precisa acessar as
credenciais armazenadas localmente no arquivo service-account-creds.json
. Para que o
ESPv2 tenha acesso às credenciais, crie um
secret do Kubernetes
e ative-o como um
volume do Kubernetes (links em inglês).
Para criar o secret do Kubernetes e ativar o volume:
- Se o arquivo JSON tiver sido transferido por download para um diretório diferente, renomeie-o como
service-account-creds.json
e copie-o paraendpoints-samples/kubernetes
. Dessa forma, o nome corresponderá às opções especificadas no arquivo de manifesto de implantaçãoecho.yaml
. - Verifique se você está no diretório
endpoints-samples/kubernetes
. Crie um secret do Kubernetes com as credenciais da conta de serviço usando o seguinte comando:
kubectl create secret generic service-account-creds \ --from-file=service-account-creds.json
Se o processo for bem-sucedido, a seguinte mensagem será exibida:
secret "service-account-creds" created
O arquivo de manifesto de implantação usado para implantar a API e o ESPv2 no Kubernetes já contém o volume do secret, conforme mostrado nas duas seções do arquivo a seguir:
Como configurar o nome do serviço e iniciar o serviço
O ESPv2 precisa saber o nome do serviço para encontrar a
configuração implantada anteriormente usando o
comando gcloud endpoints services deploy
.
Para configurar o nome do serviço e iniciá-lo:
Abra o arquivo de manifesto de implantação
echo.yaml
e substitua SERVICE_NAME nas opções de inicialização do ESPv2 pelo nome do seu serviço. Esse nome é o mesmo que você configurou no campohost
do documento da OpenAPI. Exemplo:"--service=echo-api.endpoints.example-project-12345.cloud.goog"
A opção
"--rollout_strategy=managed"
configura o ESPv2 para usar a implantação mais recente da configuração do serviço. Ao especificar essa opção, a alteração é detectada pelo ESPv2 em até um minuto após a implantação de uma nova configuração do serviço e começa a ser usada automaticamente. Recomendamos especificar essa opção em vez de fornecer um ID de configuração específico para o ESPv2. Para saber mais sobre as outras opções do ESPv2 usadas, consulte Opções de inicialização do ESPv2.Inicie o serviço para implantar o serviço do Endpoints no Kubernetes com o seguinte comando:
kubectl create -f echo.yaml
Se for exibida uma mensagem de erro parecida com esta:
The connection to the server localhost:8080 was refused - did you specify the right host or port?
Isso indica que
kubectl
não está configurado corretamente. Para saber mais, consulte Configurar a kubectl (em inglês). Para mais informações, consulte Como implantar o Endpoints no Kubernetes.
Conseguir o endereço IP externo do serviço
Se estiver usando o Minikube, vá direto para Como enviar uma solicitação usando um endereço IP. Após o início do serviço no contêiner, pode levar alguns minutos para o endereço IP externo ficar pronto.
Para ver o endereço IP externo do serviço:
Execute o seguinte comando:
kubectl get service
Anote o valor de EXTERNAL-IP. Use esse endereço IP ao enviar uma solicitação à API de amostra.
Como enviar uma solicitação usando um endereço IP
É possível enviar solicitações à API de exemplo depois que ela estiver em execução no cluster de contêiner.
Criar uma chave de API e definir uma variável de ambiente
O código de amostra requer uma chave de API. Para simplificar a solicitação, defina uma variável de ambiente para a chave da API.
No mesmo projeto Google Cloud usado para a API, crie uma chave de API na página de credenciais da API. Se você quiser criar uma chave de API em um projeto diferente do Google Cloud , consulte Como ativar uma API no projeto do Google Cloud .
- Clique em Criar credenciais e, em seguida, selecione Chave de API.
- Copie a chave para a área de transferência.
- Clique em Fechar.
- No computador local, cole a chave da API para atribuí-la a uma variável de ambiente:
- No Linux ou no macOS:
export ENDPOINTS_KEY=AIza...
- No Windows PowerShell:
$Env:ENDPOINTS_KEY="AIza..."
- No Linux ou no macOS:
Enviar a solicitação para minikube
Os comandos a seguir usam a variável de ambiente ENDPOINTS_KEY que você definiu anteriormente.
Linux ou mac OS
NODE_PORT=`kubectl get service esp-echo --output='jsonpath={.spec.ports[0].nodePort}'`
MINIKUBE_IP=`minikube ip`
curl --request POST \
--header "content-type:application/json" \
--data '{"message":"hello world"}' \
${MINIKUBE_IP}:${NODE_PORT}/echo?key=${ENDPOINTS_KEY}
PowerShell
$Env:NODE_PORT=$(kubectl get service esp-echo --output='jsonpath={.spec.ports[0].nodePort}')
$Env:MINIKUBE_IP=$(minikube ip)
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' `
-Headers @{"content-type"="application/json"} `
-URI "http://$Env:MINIKUBE_IP:$Env:NODE_PORT/echo?key=$Env:ENDPOINTS_KEY").Content
Enviar a solicitação para outros clusters do Kubernetes
Linux ou mac OS
Utilize curl
para enviar uma solicitação HTTP usando a variável de ambiente ENDPOINTS_KEY definida anteriormente. Substitua IP_ADDRESS pelo endereço IP externo da instância.
curl --request POST \ --header "content-type:application/json" \ --data '{"message":"hello world"}' \ "http://IP_ADDRESS:80/echo?key=${ENDPOINTS_KEY}"
No curl
anterior:
- A opção
--data
especifica os dados a serem enviados para a API. - A opção
--header
especifica que os dados estão no formato JSON.
PowerShell
Utilize Invoke-WebRequest
para enviar uma solicitação HTTP usando a variável de ambiente ENDPOINTS_KEY
definida anteriormente. Substitua IP_ADDRESS pelo endereço IP externo da instância.
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' ` -Headers @{"content-type"="application/json"} ` -URI "http://IP_ADDRESS:80/echo?key=$Env:ENDPOINTS_KEY").Content
No exemplo acima, as duas primeiras linhas terminam em um acento grave. Quando você colar o exemplo no PowerShell, verifique se não há espaço após os acentos graves. Para informações sobre as opções usadas na solicitação de exemplo, consulte Invoke-WebRequest (em inglês) na documentação da Microsoft.
Aplicativo de terceiros
É possível usar um aplicativo de terceiros, como o Postman, uma extensão do navegador Chrome, para enviar a solicitação:
- Selecione
POST
como o verbo HTTP. - Para o cabeçalho, selecione a chave
content-type
e o valorapplication/json
. - Para o corpo, digite isto:
{"message":"hello world"}
-
No URL, use a chave de API real em vez da variável de ambiente.
Por exemplo:
http://192.0.2.0:80/echo?key=AIza...
A mensagem enviada é retornada pela API com a seguinte resposta:
{
"message": "hello world"
}
Se não receber uma resposta bem-sucedida, consulte Como solucionar problemas em erros de resposta.
Você acaba de implantar e testar uma API no Endpoints.
Como rastrear a atividade da API
Para rastrear a atividade da API:
Veja os gráficos de atividade da API na página Endpoints > Serviços.
Ir para a página Serviços do Endpoints
Pode levar alguns instantes até a solicitação aparecer nos gráficos.Verifique os registros de solicitações da API na página "Explorador de registros".
Como configurar o DNS para o Endpoints
Como o nome do serviço do Endpoints para a API está no domínio .endpoints.YOUR_PROJECT_ID.cloud.goog
, é possível usá-lo como o nome de domínio totalmente qualificado (FQDN, na sigla em inglês). Basta fazer uma pequena alteração na configuração do arquivo openapi.yaml
. Dessa forma, é possível enviar solicitações para a API de amostra usando echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog
em vez do endereço IP.
Para configurar o DNS para o Endpoints:
- Abra o arquivo de configuração da OpenAPI,
openapi.yaml
, e adicione a propriedadex-google-endpoints
no nível superior do arquivo (não recuado ou aninhado), como mostrado no snippet a seguir:host: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" x-google-endpoints: - name: "echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog" target: "IP_ADDRESS"
- Na propriedade
name
, substitua YOUR_PROJECT_ID pelo ID do projeto. - Na propriedade
target
, substitua IP_ADDRESS pelo endereço IP usado ao enviar uma solicitação para a API de amostra. - Implante o arquivo de configuração da OpenAPI atualizado na Service Management usando o seguinte comando:
gcloud endpoints services deploy openapi.yaml
Por exemplo, suponha que o arquivo openapi.yaml
esteja configurado desta forma:
host: "echo-api.endpoints.example-project-12345.cloud.goog" x-google-endpoints: - name: "echo-api.endpoints.example-project-12345.cloud.goog" target: "192.0.2.1"
Ao implantar o arquivo openapi.yaml
usando o comando gcloud
anterior, o Service Management cria um registro A DNS, echo-api.endpoints.my-project-id.cloud.goog
, que é resolvido para o endereço IP de destino, 192.0.2.1
. Pode levar alguns minutos para a nova configuração do DNS se propagar.
Como configurar a SSL
Para mais detalhes sobre como configurar o DNS e a SSL, consulte Como ativar a SSL para o Endpoints.
Como enviar uma solicitação ao FQDN
Agora que você tem o registro DNS configurado para a API de amostra, envie uma solicitação usando o FQDN (substitua YOUR_PROJECT_ID pelo ID do projeto) e a variável de ambiente ENDPOINTS_KEY definida anteriormente:- No Linux ou no mac OS:
curl --request POST \ --header "content-type:application/json" \ --data '{"message":"hello world"}' \ "http://echo-api.endpoints.YOUR_PROJECT_ID.cloud.goog:80/echo?key=${ENDPOINTS_KEY}"
- No Windows PowerShell:
(Invoke-WebRequest -Method POST -Body '{"message": "hello world"}' -Headers @{"content-type"="application/json"} -URI "http://echo-api.endpoints.[YOUR_PROJECT_ID].cloud.goog:80/echo?key=$Env:ENDPOINTS_KEY").Content
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
- Exclua o serviço e a implantação do Kubernetes:
kubectl delete -f echo.yaml
Consulte Como excluir uma API e as instâncias relacionadas para mais informações sobre como interromper os serviços usados neste tutorial.