Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
Esta página descreve como criar um ApigeeBackendService
e a extensão de tráfego necessária
no gateway do Google Kubernetes Engine (GKE) em execução no seu cluster.
Esta abordagem é uma alternativa à utilização do APIMExtensionPolicy
para identificar o plano de dados do Apigee como o ponto de decisão de políticas (PDP) para o GKE Gateway.
Quando cria um ApigeeBackendService
, o Apigee Operator para Kubernetes cria automaticamente um APIMExtensionPolicy
com o mesmo nome e espaço de nomes que o ApigeeBackendService
.
Esta é a parte posterior APIMExtensionPolicy
.
Recomendamos esta abordagem se criar e gerir
extensões de tráfego do Cloud Load Balancing
e quiser adicionar o Apigee como uma extensão no seu recurso de extensão de tráfego. Tem de usar o elemento
ApigeeBackendService
se a extensão de tráfego do Apigee funcionar em conjunto
com outras extensões de tráfego.
Antes de começar
Antes de iniciar esta tarefa, conclua os seguintes passos:
- Confirme se a sua implementação do GKE usa a versão 1.34.x ou posterior do GKE.
- Confirme se o seu cluster do GKE tem um Workload Identity configurado. Consulte o artigo Crie uma identidade de carga de trabalho 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.
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 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.
Crie o recurso ApigeeBackendService
Para configurar uma extensão de serviço de tráfego no GKE Gateway, crie dois recursos principais:
- ApigeeBackendService: este recurso personalizado especifica o plano de dados do Apigee como o ponto de decisão de políticas (PDP) e configura os detalhes da rede para grupos de pontos finais da rede (NEGs) do Private Service Connect (PSC).
- GCPTrafficExtension: este recurso da API GKE Gateway define a cadeia de extensão, incluindo a forma como o tráfego é direcionado para o ApigeeBackendService.
Crie um ApigeeBackendService
O recurso ApigeeBackendService
especifica o plano de dados do Apigee como o
PDP para um GCPTrafficExtension
.
Para criar um ApigeeBackendService
:
- Crie um ficheiro YAML com o nome
apigee-backend-service.yaml
e o seguinte conteúdo: - ENV_NAME é o ambiente do Apigee a usar. Isto é semelhante ao campo
apigeeEnv
noAPIMExtensionPolicy
. Este campo é opcional para o Apigee e obrigatório para o híbrido. - SECURITY_ENABLED (Opcional) Especifica se as políticas do Apigee predefinidas para a validação de chaves da API e as verificações de quota são ativadas automaticamente. A predefinição é
true
se não for especificado. - REGION_NAME_1 especifica a região onde implementa o GKE Gateway.
- NETWORK_NAME_1 e SUBNET_NAME_1 especificam os URIs de recursos completos da rede e da sub-rede onde os NEGs do PSC são criados. Por exemplo,
projects/my-project/global/networks/my-default
eprojects/my-project/regions/us-central1/subnetworks/my-default
. Normalmente, são iguais à rede e à sub-rede do cluster do GKE. - REGION_NAME_2, NETWORK_NAME_2 e SUBNET_NAME_2 são opcionais. Precisa delas se implementar a extensão de tráfego do Apigee em várias regiões.
- Aplique o ficheiro YAML ao seu cluster no namespace
default
:kubectl apply -f apigee-backend-service.yaml
- Confirme que o
ApigeeBackendService
foi criado com êxito:kubectl get apigeebackendservice
O resultado deve ser semelhante ao seguinte:
NAMESPACE NAME STATE ERRORMESSAGE default default-ext-lb1-apim-policy CREATED
# apigee-backend-service.yaml kind: ApigeeBackendService apiVersion: apim.googleapis.com/v1 metadata: name: my-apigee-extension-backend-service spec: apigeeEnv: ENV_NAME # optional for Apigee, required for hybrid defaultSecurityEnabled: SECURITY_ENABLED locations: # required field - name: REGION_NAME_1 network: NETWORK_NAME_1 subnet: SUBNET_NAME_1 - name: REGION_NAME_2 network: NETWORK_NAME_2 subnet: SUBNET_NAME_2
Onde:
Quando cria um ApigeeBackendService
, o Apigee Operator para Kubernetes cria automaticamente um APIMExtensionPolicy
com o mesmo nome e espaço de nomes que o ApigeeBackendService
.
Esta é a parte posterior APIMExtensionPolicy
.
Se defaultSecurityEnabled
estiver definido como true
, o operador do Apigee para Kubernetes adiciona automaticamente as políticas de chaves de API e de quota predefinidas ao APIMExtensionPolicy
. Para adicionar políticas adicionais, consulte o artigo Adicione políticas ao GKE Gateway.
Crie um recurso GCPTrafficExtension
O recurso GCPTrafficExtension
define uma extensão para o Apigee e faz referência ao ApigeeBackendService
criado no passo anterior como o respetivo backendRef
.
Para mais detalhes sobre a configuração de um GCPTrafficExtension
, consulte o artigo Configure extensões de serviços.
O campo supportedEvents
especifica que partes do ciclo de vida do pedido e da resposta são expostas à extensão. O Apigee Operator para Kubernetes suporta os seguintes eventos:
RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
RequestBody
e ResponseBody
na lista supportedEvents
.
Para mais informações sobre os eventos suportados, consulte a documentação sobre as extensões de tráfego do Cloud Load Balancing.
Para criar um GCPTrafficExtension
:
- Crie um ficheiro YAML com o nome
gcp-traffic-extension.yaml
e o seguinte conteúdo:# gcp-traffic-extension.yaml kind: GCPTrafficExtension apiVersion: networking.gke.io/v1 metadata: name: my-apigee-extension spec: targetRefs: - group: "gateway.networking.k8s.io" kind: Gateway name: GATEWAY_NAME # Replace with your GKE Gateway name extensionChains: - name: EXTENSION_CHAIN_NAME matchCondition: celExpressions: - celMatcher: request.path.startsWith("/") extensions: - name: EXTENSION_NAME metadata: # This metadata label must match the name of the ApigeeBackendService apigee-extension-processor : APIGEE_BACKEND_SERVICE_NAME failOpen: false supportedEvents: - SUPPORTED_EVENT1 - SUPPORTED_EVENT2 timeout: 1s requestBodySendMode: FullDuplexStreamed backendRef: # References the ApigeeBackendService by
kind
andname
kind: ApigeeBackendService name: APIGEE_BACKEND_SERVICE_NAME Port: 443Onde:
- GATEWAY_NAME é o nome do GKE Gateway ao qual a extensão se aplica.
- EXTENSION_CHAIN_NAME é o nome da cadeia de extensões.
- EXTENSION_NAME é o nome da extensão de serviço de trânsito.
- APIGEE_BACKEND_SERVICE_NAME é o nome do
ApigeeBackendService
criado anteriormente. Esta etiqueta no blocoextensions
tem de corresponder aometadata.name
doApigeeBackendService
criado anteriormente. - O campo
supportedEvents
especifica que partes do ciclo de vida do pedido e da resposta são expostas à extensão. O operador do Apigee para Kubernetes suporta os seguintes eventos:RequestHeaders
RequestBody
RequestTrailers
ResponseHeaders
ResponseBody
ResponseTrailers
RequestBody
eResponseBody
na listasupportedEvents
. Para mais informações sobre os eventos suportados, consulte a documentação sobre as extensões de tráfego do Cloud Load Balancing.
- Aplique o ficheiro YAML ao cluster:
kubectl apply -f gcp-traffic-extension.yaml