Crie um ApigeeBackendService

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:

  1. Crie um ficheiro YAML com o nome apigee-backend-service.yaml e o seguinte conteúdo:
  2. # 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:

    • ENV_NAME é o ambiente do Apigee a usar. Isto é semelhante ao campo apigeeEnv no APIMExtensionPolicy. 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 e projects/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.

  3. Aplique o ficheiro YAML ao seu cluster no namespace default:
    kubectl apply -f apigee-backend-service.yaml
  4. 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   

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
Para políticas que requerem a inspeção ou a modificação do corpo do pedido ou da resposta (por exemplo, JSONThreatProtection), tem de incluir 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:

  1. 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 and name
            kind: ApigeeBackendService
            name: APIGEE_BACKEND_SERVICE_NAME
            Port: 443

    Onde:

    • 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 bloco extensions tem de corresponder ao metadata.name do ApigeeBackendService 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
      Para políticas que requerem a inspeção ou a modificação do corpo do pedido ou da resposta (por exemplo, JSONThreatProtection), tem de incluir 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.
  2. Aplique o ficheiro YAML ao cluster:
    kubectl apply -f gcp-traffic-extension.yaml

Passos seguintes