Esta página se aplica a Apigee e à Apigee híbrida.
Confira
Apigee Edge documentação.
Nesta página, descrevemos como aplicar políticas da Apigee ao tráfego que passa por um
gateway do Kubernetes criando um APIMExtensionPolicy recurso personalizado. O
operador da Apigee para Kubernetes monitora recursos APIMExtensionPolicy e
configura o gateway de acordo com eles.
Apigee
Siga estas etapas se você estiver usando a Apigee.
Antes de começar
Antes de começar esta tarefa, conclua as seguintes etapas:
- Confirme se o cluster do GKE tem a Identidade da carga de trabalho configurada. Consulte Configurar a Federação de Identidade da Carga de Trabalho para GKE 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 da Apigee para Kubernetes. Consulte Instalar o operador da Apigee para Kubernetes para conferir as instruções de instalação.
Criar a APIMExtensionPolicy
Nesta etapa, crie a APIMExtensionPolicy e aplique-a ao gateway do GKE
em execução no cluster. Essa política rege todo o tráfego que passa pelo
gateway e pelas HTTPRoutes associadas, funcionando de maneira semelhante a um flowhook no
nível do ambiente na Apigee.
Para criar a APIMExtensionPolicy:
- Crie um arquivo chamado
global-ext-lb1-apim-policy.yamlcom o conteúdo a seguir:# 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 da Apigee criado na etapa de instalação Criar um ambiente da Apigee.Observação: se você instalar o operador da Apigee para Kubernetes usando a
generateEnv=TRUEflag, o campoapigeeEnvnão será necessário.É possível conferir todos os ambientes disponíveis na página Ambientes no Google Cloud console.
- Aplique a política:
kubectl -n apim apply -f global-ext-lb1-apim-policy.yamlDepois que a política é aplicada, o operador da Apigee para Kubernetes cria recursos de rede em segundo plano.
- Verifique o status da
APIMExtensionPolicyusando o comando a seguir:kubectl -n apim get APIMExtensionPolicyA saída será parecida com esta, com um
STATEdeRUNNING:NAME STATE ERRORMESSAGE global-ext-lb1-apim-policy RUNNING
Testar a política
Use o comando a seguir para enviar uma solicitação ao gateway:
- Consiga 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 uma solicitação para um endpoint configurado na sua
HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: HOST_NAME"Substitua
HOST_NAMEpelo nome do host definido naHTTPRoutedo gateway, por exemplo,example.httpbin.com. - A solicitação vai falhar porque
defaultSecurityEnabled: truefoi definido no recursoAPIMExtensionPolicy, que ativa a verificação da chave de API e do token de acesso. 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 da chave de API e a verificação do token de acesso também estão ativas.
A seguir
- Saiba como adicionar políticas ao gateway do GKE.
- Saiba como desinstalar o operador da Apigee para Kubernetes.
Apigee híbrido
Siga estas etapas se você estiver usando a Apigee híbrida.
Antes de começar
Este procedimento pressupõe que você instalou o operador da Apigee para Kubernetes seguindo as etapas em Instalar o operador da Apigee para Kubernetes para a Apigee híbrida.
Criar um secret de certificado TLS
O APIMExtensionPolicy requer o certificado público codificado em Base64
associado ao nome do host do grupo de ambiente. Você criou esse certificado em
Instalar o ambiente híbrido da Apigee usando o Helm.
Forneça esse certificado ao operador criando um secret do Kubernetes no
apim namespace.
- Extraia a string de certificado codificada em Base64 do arquivo criado durante a instalação:
cat $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/certs/keystore_ENV_GROUP.pem.base64 - Crie um arquivo chamado
secret-cert.yamlcom o conteúdo a seguir:# 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 comandocatna etapa 1. - Aplique o secret ao cluster:
kubectl apply -f secret-cert.yaml
Definir e aplicar a APIMExtensionPolicy
Defina um recurso APIMExtensionPolicy e aplique-o ao gateway do Istio
em execução no cluster. Essa extensão de política intercepta o tráfego gerenciado pelo gateway
e pelas HTTPRoutes associadas e aplica políticas da Apigee antes de encaminhar
solicitações para o destino de back-end.
- Crie um arquivo chamado
istio-gateway-apim-policy.yamlcom o conteúdo a seguir:# 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 híbrido da Apigee criado com as extensões de serviço ativadas, por exemplo,my-hybrid-env.HOST_NAME: o nome de domínio usado para o grupo de ambiente, por exemplomy-proxies.example.com.INGRESS_IP_ADDRESS: o endereço IP de entrada para a entrada do ambiente de execução híbrido da Apigee. Consulte Expor a entrada da Apigee para detalhes sobre como recuperar esse IP.
- Aplique a política ao cluster:
kubectl -n apim apply -f istio-gateway-apim-policy.yaml - Depois que o recurso é aplicado, o operador da Apigee para Kubernetes começa a configurar
os recursos de rede do gateway. Verifique o status da
APIMExtensionPolicy:kubectl -n apim get APIMExtensionPolicy - Aguarde até que o
STATEmostreRUNNING. A saída será parecida com esta:NAME STATE ERRORMESSAGE istio-gateway-apim-policy RUNNING
Testar a política
Na APIMExtensionPolicy criada na etapa anterior,
defaultSecurityEnabled foi definido como true. Isso ativa automaticamente
as políticas de verificação de chave de API e token OAuth2 para o tráfego correspondente a esse gateway.
Teste isso enviando uma solicitação não autenticada para o serviço de amostra httpbin
configurado ao verificar a configuração do gateway do Istio em
Verificar a configuração do gateway do Istio.
- Consiga 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 uma solicitação para o endpoint
/getconfigurado na sua HTTPRoute:curl http://$GATEWAY_IP/get -H "Host: example.httpbin.com" -v - Como
defaultSecurityEnabled: truerequer autenticação (como uma chave de API válida), a Apigee vai rejeitar a solicitação com um erro de autenticação. A resposta será semelhante a esta:{"fault":{"faultstring":"Raising fault. Fault name : RF-insufficient-request-raise-fault","detail":{"errorcode":"steps.raisefault.RaiseFault"}}}Essa saída confirma que o
APIMExtensionPolicyestá ativo e que as políticas da Apigee estão sendo aplicadas pelo gateway do Istio.
A seguir
Saiba como criar produtos de API, desenvolvedores e apps para receber chaves de API para solicitações autenticadas: