Esta página se aplica à Apigee, mas não à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Nesta página, descrevemos como modificar o gateway do Google Kubernetes Engine (GKE) em execução no cluster para aplicar políticas de gerenciamento de API do Apigee usando o operador APIM do Apigee para Kubernetes.
Antes de começar
Antes de começar esta tarefa, conclua as seguintes etapas:
- Confirme se o cluster do GKE tem uma Identidade da carga de trabalho configurada. Consulte Criar uma identidade da carga de trabalho para conferir as etapas necessárias.
- Confirme se o cluster tem um gateway do GKE configurado e funcionando. Consulte Como implantar gateways para mais detalhes.
- Instale o operador do APIM. Consulte Instalar o operador da API Management do Apigee para Kubernetes para instruções de instalação.
Funções exigidas
Se você atribuiu os papéis necessários à sua conta de serviço conforme descrito em Instalar o operador de APIM do Apigee para Kubernetes, não são necessários outros papéis ou permissões do IAM para concluir essas tarefas.
É possível autorizar ações em recursos no cluster do Google Kubernetes Engine usando o mecanismo integrado de controle de acesso baseado em papéis (RBAC, na sigla em inglês) no Kubernetes. Para mais informações, consulte Autorizar ações em clusters usando o controle de acesso baseado em papéis.
Visão geral
As seções a seguir descrevem as etapas necessárias para modificar o GKE Gateway e usar políticas da Apigee com o operador do APIM. Neste tutorial, você vai:
- Defina a política de extensão do APIM.
- Defina o produto da API.
- Defina o conjunto de operações da API.
- Teste a extensão de serviço da Apigee.
- Confira a análise de APIs da Apigee no console Google Cloud .
Definir a política de extensão do APIM
Nesta etapa, você vai definir a política de extensão da API Management e aplicá-la ao gateway do GKE em execução no cluster.
Essa política rege todo o tráfego que passa pelo gateway e pelo HTTPRoutes
associado, funcionando de maneira semelhante a um flowhook no nível do ambiente no Apigee hoje.
Defina a política de extensão do APIM:
- Crie um novo arquivo chamado
global-ext-lb1-apim-policy.yaml
no namespaceapim
. - Copie o conteúdo a seguir no novo arquivo:
# global-ext-lb1-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: global-ext-lb1-apim-policy namespace: apim spec: apigeeenv: ENV_NAME # optional location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied name: global-ext-lb1 kind: Gateway namespace: default
Em que ENV_NAME é o nome do ambiente da Apigee criado na etapa de instalação Criar um ambiente da Apigee.
É possível conferir todos os ambientes disponíveis na página Ambientes do Apigee no console Google Cloud :
- Aplique a política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yaml
Depois que o
yaml
é aplicado, o operador da API Management cria recursos de rede em segundo plano. - Verifique o status da política de extensão de API usando o seguinte comando:
kubectl -n apim get APIMExtensionPolicy
A saída será parecida com esta, com um
State
deRUNNING
:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
- Use o comando a seguir para enviar uma solicitação ao gateway:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME"
Em que:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o seguinte comando, em queGATEWAY_NAME
é o nome do gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
é o nome do host definido noHTTPRoute
do gateway.
- A solicitação vai falhar porque a segurança padrão é ativada definindo
defaultSecurityEnabled: true
no recurso de política de extensão da API. Uma resposta semelhante a esta vai aparecer:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}
Isso indica que a política de extensão da Apigee está ativa e que a aplicação de chaves de API e a verificação de token de acesso estão ativas.
Definir o produto de API
Defina o produto de API:
- Crie um novo arquivo chamado
api-product.yaml
no namespaceapim
. - Copie o conteúdo a seguir no novo arquivo:
# api-product.yaml apiVersion: apim.googleapis.com/v1 kind: APIProduct metadata: name: api-product namespace: apim spec: approvalType: auto description: Http bin GET calls displayName: api-product enforcementRefs: - name: global-ext-lb1-apim-policy kind: APIMExtensionPolicy group: apim.googleapis.com namespace: apim attributes: - name: access value: private
- Aplique o arquivo ao gateway usando o seguinte comando:
kubectl -n apim apply -f api-product.yaml
Definir o conjunto de operações da API
Defina o conjunto de operações de API para o produto de API criado na etapa anterior:
- Crie um novo arquivo chamado
apim-policies.yaml
no namespaceapim
. - Copie o conteúdo a seguir no novo arquivo.
Esse arquivo define uma política de cotas e as operações REST disponíveis
para o produto da API definido na etapa anterior:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set namespace: apim spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: apim quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Aplique o arquivo ao gateway:
kubectl -n apim apply -f apim-policies.yaml
Testar a extensão de serviço da Apigee
Nesta etapa, você vai usar a interface da Apigee no console Google Cloud para testar a extensão de serviço da Apigee e a política de extensão da Apigee aplicada ao seu gateway.
Configuração de teste
Configure os recursos de API necessários para o teste:
Acesse a página Gerenciamento de APIs do Apigee no console do Google Cloud :
- Selecione a organização da Apigee em que você instalou o operador da APIM.
- Crie um desenvolvedor:
- Selecione Distribuição > Desenvolvedores.
- Na página Desenvolvedores, clique em + Criar.
- Na página Adicionar desenvolvedor, preencha os campos obrigatórios com os valores que quiser.
- Clique em Adicionar.
- Crie um app:
- Selecione Distribuição> Apps.
- Na página Apps, clique em + Criar.
- Na página Criar app, preencha os campos obrigatórios na seção Detalhes do app usando os seguintes valores:
- Nome do app: demo-app
- Desenvolvedor: selecione o desenvolvedor que você criou na etapa anterior ou outro desenvolvedor na lista.
- Na seção Credenciais do app, clique em + Adicionar credencial.
- Na seção Credencial, preencha os campos obrigatórios em Detalhes da credencial
com os seguintes valores:
- Nome da credencial: demo-credential
- Tipo de credencial: selecione Chave de API.
- Clique em Criar.
- Na seção Produtos, clique em + Adicionar produtos.
- Selecione o
api-product-1
criado na etapa anterior. - Clique em Adicionar.
- Clique em Criar.
- Na página Detalhes do app, na seção Credencial, clique em
visibility_off para mostrar o valor da Chave.
Copie o valor de
Key
. Você vai usar essa chave para fazer chamadas de API ao seu serviço em uma etapa posterior. - Na página Detalhes do app, na seção Credencial, clique em visibility_off
para mostrar o valor do Secret do app.
Copie o valor de Chave secreta do app. Você vai usar esse valor para gerar um token de acesso em uma etapa posterior.
Testar a aplicação da chave de API
Use o comando a seguir para enviar uma solicitação ao gateway usando a chave de API obtida em uma etapa anterior:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Em que:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o seguinte comando, em queGATEWAY_NAME
é o nome do gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
é o nome do host definido noHTTPRoute
do gateway.API_KEY
é o valor da chave de API obtido em Configuração de teste.
A solicitação precisa ser bem-sucedida e retornar uma resposta semelhante a esta:
{ "args": {}, "headers": { "Accept": "*/*", "Host": "apigee-apim-operator-test.apigee.net", "User-Agent": "curl/8.7.1", "X-Api-Key": "f0N6sYYYclGYYYe0oP5YYYdA20PjgrP2x8YYYh7z4YYYKiYt", "X-Cloud-Trace-Context": "bb3a768787099bda628781188bfb318b/15554891713516675739" }, "origin": "34.54.193.72", "url": "https://34.54.193.72/get" }
Testar a aplicação de cota
Para testar a aplicação de cota definida na política de extensão do APIM, envie a solicitação da etapa anterior para o gateway dez vezes em um minuto.
Você pode executar o script a seguir para gerar as solicitações:
#!/bin/sh for i in $(seq 1 11); do curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY" sleep 1 done
Em que:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o seguinte comando, em queGATEWAY_NAME
é o nome do gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
é o nome do host definido noHTTPRoute
do gateway.API_KEY
é o valor da chave de API obtido em Configuração de teste.
Essa ação vai acionar uma violação de cota e gerar uma falha semelhante a esta:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Testar a aplicação de operações REST
Para testar a aplicação das operações de REST, use o comando a seguir para enviar uma solicitação ao gateway usando um URL que não está no conjunto de operações da API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Em que:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. É possível recuperar o endereço IP do gateway usando o seguinte comando, em queGATEWAY_NAME
é o nome do gateway:kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
HOST_NAME
é o nome do host definido noHTTPRoute
do gateway.API_KEY
é o valor da chave de API obtido em Configuração de teste.
A solicitação vai falhar com uma resposta semelhante a esta:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Ver a análise de APIs da Apigee no Google Cloud console
É possível conferir o tráfego da API processado pelo gateway do GKE e a APIMExtensionPolicy instalada usando a análise da API Apigee no console Google Cloud :
- Acesse a página Gerenciamento de APIs do Apigee no console Google Cloud :
- Selecione a organização da Apigee em que você instalou o operador da APIM.
- Selecione Analytics > Métricas da API no menu de navegação lateral.
- Na guia Performance do proxy de API, escolha o ambiente criado na etapa de instalação opcional
Criar um ambiente da Apigee ou o ambiente criado pelo operador do APIM durante a instalação. O nome do ambiente vai começar com o prefixo
apigee-ext-proc-enabled-env
. - Observe o tráfego da API registrado.
Resolver problemas
Se você tiver problemas ao usar políticas de gerenciamento de API com o operador APIM, consulte Solução de problemas do operador APIM para encontrar soluções para erros comuns.
A seguir
- Saiba como adicionar políticas ao gateway do GKE.
- Saiba como desinstalar o operador da API Apigee para Kubernetes.