Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Ver documentação do
Apigee Edge.
Esta página descreve como aplicar políticas do Apigee ao tráfego que passa por um gateway do Kubernetes criando um recurso personalizado APIMExtensionPolicy. O operador do Apigee para Kubernetes monitoriza os recursos APIMExtensionPolicy e configura o gateway em conformidade.
Apigee
Siga estes passos se estiver a usar o Apigee.
Antes de começar
Antes de iniciar esta tarefa, conclua os seguintes passos:
- Confirme que o seu cluster do GKE tem o Workload Identity configurado. Consulte o artigo Configure a federação de identidades de cargas de trabalho para o GKE para ver os passos necessários.
- Confirme se o cluster tem um GKE Gateway configurado e a funcionar. Consulte o artigo Implementar gateways para mais detalhes.
- Instale o operador do Apigee para Kubernetes. Consulte o artigo Instale o Apigee Operator para Kubernetes para ver instruções de instalação.
Crie o APIMExtensionPolicy
Neste passo, crie o APIMExtensionPolicy e aplique-o ao GKE
Gateway em execução no seu cluster. Esta política rege todo o tráfego que passa pelo
Gateway e o respetivo HTTPRoutes associado, funcionando de forma semelhante a um flowhook ao nível do
ambiente no Apigee atualmente.
Para criar o APIMExtensionPolicy:
- Crie um ficheiro denominado
global-ext-lb1-apim-policy.yamlcom o seguinte conteúdo:# 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 - Substitua
ENV_NAMEpelo nome do ambiente do Apigee criado no passo de instalação Crie um ambiente do Apigee.Nota: se instalar o Apigee Operator para Kubernetes com a flag
generateEnv=TRUE, o campoapigeeEnvnão é obrigatório.Pode ver todos os ambientes disponíveis na página Ambientes na Google Cloud consola.
- Aplique a política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlDepois de a política ser aplicada, o operador do Apigee para Kubernetes cria recursos de rede em segundo plano.
- Verifique o estado do
APIMExtensionPolicyatravés do seguinte comando:kubectl -n apim get APIMExtensionPolicyO resultado deve ser semelhante ao seguinte, com um
STATEdeRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Teste a política
Use o seguinte comando para enviar um pedido ao gateway:
- Obtenha o endereço IP do gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IPSubstitua
GATEWAY_NAMEpelo nome do gateway, por exemplo,global-ext-lb1. - Envie um pedido para um ponto final configurado no seu
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Substitua
HOST_NAMEpelo nome de anfitrião definido noHTTPRoutedo gateway, por exemplo,example.httpbin.com. - O pedido deve falhar porque
defaultSecurityEnabled: truefoi definido no recursoAPIMExtensionPolicy, o que ativa a validação da chave da API e do token de acesso. Deve ver uma resposta semelhante à seguinte:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Isto indica que a política de extensão do Apigee está ativa e que a aplicação da chave de API e a validação do token de acesso estão ativas.
O que se segue?
- Saiba como adicionar políticas ao GKE Gateway.
- Saiba como desinstalar o operador do Apigee para Kubernetes.
Apigee Hybrid
Siga estes passos se estiver a usar o Apigee hybrid.
Antes de começar
Este procedimento pressupõe que instalou o operador do Apigee para Kubernetes seguindo os passos em Instale o operador do Apigee para Kubernetes para o Apigee Hybrid.
Crie um Secret de certificado TLS
O APIMExtensionPolicy requer o certificado público codificado em base64
associado ao nome de anfitrião do grupo de ambientes. Criou este certificado em
Instale o ambiente do Apigee Hybrid com o Helm.
Forneça este certificado ao operador criando um segredo do Kubernetes no espaço de nomes apim.
- Obtenha a string do certificado codificada em base64 a partir do ficheiro que criou durante a instalação:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Crie um ficheiro denominado
secret-cert.yamlcom o seguinte conteúdo:# secret-cert.yaml apiVersion: v1 kind: Secret metadata: name: apigee-conf namespace: apim data: ca.crt: BASE64_ENCODED_CERT_STRING - Substitua
BASE64_ENCODED_CERT_STRINGpela saída do comandocatno passo 1. - Aplique o segredo ao cluster:
kubectl apply -f secret-cert.yaml
Defina e aplique o APIMExtensionPolicy
Defina um recurso APIMExtensionPolicy e aplique-o ao Istio Gateway
em execução no seu cluster. Esta extensão de política interceta o tráfego gerido pela Gateway
e o respetivo HTTPRoutes associado, e aplica políticas do Apigee antes de encaminhar
pedidos para o destino de back-end.
- Crie um ficheiro denominado
istio-gateway-apim-policy.yamlcom o seguinte conteúdo:# istio-gateway-apim-policy.yaml apiVersion: apim.googleapis.com/v1 kind: APIMExtensionPolicy metadata: name: istio-gateway-apim-policy namespace: apim spec: apigeeEnv: ENV_NAME ingressCertSecret: apigee-conf apigeeAuthority: HOST_NAME apigeeIngressIP: INGRESS_IP_ADDRESS location: global failOpen: false timeout: 1000ms defaultSecurityEnabled: true targetRef: # identifies the Gateway where the extension should be applied group: gateway.networking.k8s.io kind: Gateway name: istio-gateway namespace: default - Substitua as seguintes variáveis:
ENV_NAME: o nome do ambiente do Apigee Hybrid que criou com as extensões de serviço ativadas, por exemplo,my-hybrid-env.HOST_NAME: o nome do domínio usado para o grupo de ambientes, por exemplo,my-proxies.example.com.INGRESS_IP_ADDRESS: o endereço IP de entrada para a entrada do tempo de execução do Apigee Hybrid. Consulte o artigo Exponha a entrada do Apigee para ver detalhes sobre como obter este IP.
- Aplique a política ao cluster:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Assim que o recurso é aplicado, o Apigee Operator for Kubernetes começa a configurar os recursos de rede da gateway. Verifique o estado do
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Aguarde até que o ícone
STATEapresenteRUNNING. O resultado deve ser semelhante ao seguinte:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Teste a política
No APIMExtensionPolicy criado no passo anterior,
defaultSecurityEnabled foi definido como true. Isto ativa automaticamente
as políticas de validação de chaves da API e tokens OAuth2 para o tráfego que corresponda a este gateway.
Teste isto enviando um pedido não autenticado para o serviço de exemplo que configurou quando validou a configuração do gateway Istio em Valide a configuração do gateway Istio.httpbin
- Obtenha o endereço IP do gateway:
export GATEWAY_IP=$(kubectl get gateways.gateway.networking.k8s.io istio-gateway -n default -o=jsonpath='{.status.addresses[0].value}')echo $GATEWAY_IP - Envie um pedido para o ponto final
/getconfigurado no seu HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Uma vez que
defaultSecurityEnabled: truerequer autenticação (como uma chave da API válida), o Apigee deve rejeitar o pedido com um erro de autenticação. A resposta deve ser semelhante à seguinte:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Este resultado confirma que o
APIMExtensionPolicyestá ativo e que as políticas do Apigee estão a ser aplicadas pelo gateway do Istio.
O que se segue?
Saiba como criar produtos de API, programadores e apps para obter chaves da API para pedidos autenticados: