Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Esta página descreve como ativar as opções de segurança e aplicação de quotas predefinidas disponíveis com o Apigee Operator para Kubernetes.
Antes de começar
Antes de começar esta tarefa, certifique-se de que conclui os seguintes passos:
- Instale o operador do Apigee para Kubernetes. Consulte o artigo Instale o Apigee Operator para Kubernetes para ver instruções de instalação.
- Crie uma extensão de serviço de trânsito. Para concluir este passo, pode usar o
ApigeeBackendService
ou oAPIMExtensionPolicy
. Consulte o artigo Crie uma APIMExtensionPolicy para mais informações sobre como criar uma extensão de tráfego através daAPIMExtensionPolicy
. Consulte o artigo Crie um ApigeeBackendService para mais informações sobre como criar uma extensão de tráfego através daApigeeBackendService
.
Quer tenha criado uma extensão de serviço de tráfego para o seu GKE Gateway através do ApigeeBackendService
ou do APIMExtensionPolicy
,
tem de concluir os passos neste guia passo a passo para ativar a chave de API predefinida e as políticas de quota adicionadas ao APIMExtensionPolicy
de apoio.
Funções necessárias
Se atribuiu as funções necessárias à sua conta de serviço, conforme descrito no artigo Instale o operador do Apigee para Kubernetes, não são necessárias funções nem autorizações de IAM adicionais para concluir estas tarefas.
Pode optar por autorizar ações em recursos no seu cluster do Google Kubernetes Engine através do mecanismo de controlo de acesso baseado em funções (RBAC) integrado no Kubernetes. Para mais informações, consulte o artigo Autorize ações em clusters através do controlo de acesso baseado em funções.
Vista geral
As secções seguintes descrevem como ativar as opções de segurança e aplicação de quotas predefinidas disponíveis com o Apigee Operator para Kubernetes. Neste tutorial, vai:
- Defina o produto da API.
- Defina o conjunto de operações da API.
- Teste a extensão de serviço Apigee.
- Veja a API Apigee do Analytics na Google Cloud consola.
Os passos necessários para definir o produto API e o conjunto de operações da API variam ligeiramente consoante tenha criado uma extensão de tráfego para o seu GKE Gateway através do ApigeeBackendService
ou do APIMExtensionPolicy
.
Defina o produto API
Neste passo, vai definir o produto da API que vai ser usado para gerir a aplicação das políticas de quotas e da chave da API.
Usar o APIMExtensionPolicy
Defina o produto API:
- Crie um novo ficheiro com o nome
api-product.yaml
no espaço de nomesapim
. - Copie o seguinte conteúdo para o novo ficheiro:
# 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 ficheiro ao gateway através do seguinte comando:
kubectl -n apim apply -f api-product.yaml
Usar o ApigeeBackendService
Defina o produto API:
- Crie um novo ficheiro com o nome
api-product.yaml
no espaço de nomesapim
. - Copie o seguinte conteúdo para o novo ficheiro:
# 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: ApigeeBackendService group: apim.googleapis.com namespace: default attributes: - name: access value: private
- Aplique o ficheiro ao gateway através do seguinte comando:
kubectl -n default apply -f api-product.yaml
Defina o conjunto de operações da API
Neste passo, vai definir o conjunto de operações da API que vai ser usado para gerir a aplicação das operações REST.
Usar o APIMExtensionPolicy
Defina o conjunto de operações da API para o produto de API criado no passo anterior:
- Crie um novo ficheiro com o nome
apim-policies.yaml
no espaço de nomesapim
. - Copie o seguinte conteúdo para o novo ficheiro.
Este ficheiro define uma política de quotas e as operações REST disponíveis
para o produto API definido no passo 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 ficheiro ao gateway:
kubectl -n apim apply -f apim-policies.yaml
Usar o ApigeeBackendService
Defina o conjunto de operações da API para o produto de API criado no passo anterior:
- Crie um novo ficheiro com o nome
apim-policies.yaml
no espaço de nomesdefault
. - Copie o seguinte conteúdo para o novo ficheiro.
Este ficheiro define uma política de quotas e as operações REST disponíveis
para o produto API definido no passo anterior:
# apim-policies.yaml apiVersion: apim.googleapis.com/v1 kind: APIOperationSet metadata: name: item-set namespace: default spec: apiProductRefs: - name: api-product kind: APIProduct group: apim.googleapis.com namespace: default quota: limit: 10 interval: 1 timeUnit: minute restOperations: - name: GetItems path: /get methods: - GET
- Aplique o ficheiro ao gateway:
kubectl -n default apply -f apim-policies.yaml
Teste a extensão de serviço do Apigee
Neste passo, vai usar a IU do Apigee na Google Cloud consola para testar a extensão de serviço do Apigee e a política de extensão do Apigee aplicada ao seu gateway.
Configuração de testes
Configure os recursos da API de que precisa para os testes:
Aceda à página Gestão de APIs da Apigee na Google Cloud consola:
- Selecione a organização do Apigee onde instalou o operador do Apigee para Kubernetes.
- Crie um programador:
- Selecione Distribuição > Programadores.
- Na página Programadores, clique em + Criar.
- Na página Adicionar programador, preencha os campos obrigatórios com os valores que quiser.
- Clique em Adicionar.
- Crie uma app:
- Selecione Distribuição> Apps.
- Na página Apps, clique em + Criar
- Na página Criar app, preencha os campos obrigatórios na secção Detalhes da app com os seguintes valores:
- Nome da app: demo-app
- Programador: selecione o programador que criou no passo anterior ou outro programador da lista.
- Na secção Credenciais da app, clique em + Adicionar credencial.
- Na secção Credencial, preencha os campos obrigatórios na secção Detalhes da credencial
com os seguintes valores:
- Nome da credencial: demo-credential
- Tipo de credencial: selecione Chave da API.
- Clique em Criar.
- Na secção Produtos, clique em + Adicionar produtos.
- Selecione o
api-product-1
criado no passo anterior. - Clique em Adicionar.
- Clique em Criar.
- Na página Detalhes da app, na secção Credencial, clique em
visibility_off para apresentar o valor da Chave.
Copie o valor
Key
. Vai usar esta chave para fazer chamadas API ao seu serviço num passo posterior. - Na página Detalhes da app, na secção Credencial, clique em visibility_off
para apresentar o valor do segredo da app.
Copie o valor do segredo da app. Vai usar este valor para gerar um token de acesso num passo posterior.
Teste a aplicação da chave da API
Use o seguinte comando para enviar um pedido ao seu gateway através da chave da API obtida num passo anterior:
curl http://GATEWAY_IP_ADDRESS/get -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Onde:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. Pode obter o endereço IP do gateway através do 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 de anfitrião definido noHTTPRoute
do gateway.API_KEY
é o valor da chave da API obtido em Testar configuração.
O pedido deve ser bem-sucedido e devolver uma resposta semelhante à seguinte:
{ "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" }
Teste a aplicação de quotas
Para testar a aplicação da quota definida no seu APIMExtensionPolicy
, envie o pedido do passo anterior
para o gateway dez vezes no espaço de um minuto.
Pode executar o seguinte script para gerar os pedidos:
#!/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
Onde:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. Pode obter o endereço IP do gateway através do 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 de anfitrião definido noHTTPRoute
do gateway.API_KEY
é o valor da chave da API obtido em Testar configuração.
Esta ação deve acionar uma violação de quota e gerar uma falha semelhante à seguinte:
{"fault":{"faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default","detail":{"errorcode":"policies.ratelimit.QuotaViolation"}}}
Teste a aplicação de operações REST
Para testar a aplicação das operações REST, use o seguinte comando para enviar um pedido para o gateway através de um URL que não esteja no conjunto de operações da API:
curl http://GATEWAY_IP_ADDRESS/post -H "Host: HOST_NAME" -H "x-api-key: API_KEY"
Onde:
GATEWAY_IP_ADDRESS
é o endereço IP do gateway. Pode obter o endereço IP do gateway através do 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 de anfitrião definido noHTTPRoute
do gateway.API_KEY
é o valor da chave da API obtido em Testar configuração.
O pedido deve falhar com uma resposta semelhante à seguinte:
{"fault":{"faultstring":"Invalid ApiKey for given resource","detail":{"errorcode":"oauth.v2.InvalidApiKeyForGivenResource"}}}
Veja a API Apigee do Analytics na Google Cloud consola
Pode ver o tráfego da API processado pelo GKE Gateway e o APIMExtensionPolicy
através da Apigee API Analytics na Google Cloud consola:
- Aceda à página Gestão de APIs da Apigee na Google Cloud consola:
- Selecione a organização do Apigee onde instalou o operador do Apigee para Kubernetes.
- Selecione Analytics > Métricas da API no menu de navegação lateral.
- No separador Desempenho do proxy de API, escolha o ambiente que criou no passo de instalação opcional
Crie um ambiente do Apigee ou o ambiente criado pelo operador do Apigee para Kubernetes durante a instalação. O nome do ambiente começa com o prefixo
apigee-ext-proc-enabled-env
. - Observe o tráfego da API registado.
Resolver problemas
Se tiver problemas ao usar políticas de gestão de APIs com o Apigee Operator para Kubernetes, consulte o artigo Resolva problemas do Apigee Operator para Kubernetes para ver soluções para erros comuns.
Passos seguintes
Para adicionar políticas adicionais, consulte o artigo Adicione políticas ao GKE Gateway.