Esta página se aplica à Apigee, mas não à Apigee híbrida.
Confira a documentação da
Apigee Edge.
Esta página descreve como resolver problemas do operador APIM da Apigee para Kubernetes. Há várias ferramentas disponíveis para resolver problemas. Esta página descreve como verificar o status dos recursos personalizados, usar o Logs Explorer e resolver problemas com o tráfego do ambiente de execução da Apigee.
Verificar o status do recurso personalizado
Todos os recursos personalizados usados no operador do Apigee APIM para Kubernetes contêm um objeto de status com dois campos:
- ESTADO: descreve o estado do recurso. Os valores incluem
running
ecreated
. - ERRORMESSAGE: se a operação do recurso falhar, o campo da mensagem de erro será preenchido com uma mensagem explicativa.
Quando um arquivo yaml
de recurso personalizado é aplicado ao cluster, o Kubernetes faz as mudanças correspondentes
na infraestrutura. A verificação do objeto de status do recurso personalizado pode fornecer
informações sobre o estado do recurso e mostrar os erros resultantes se as operações de infraestrutura subjacentes falharem.
Verifique o status do recurso personalizado com o seguinte comando:
kubectl -n NAMESPACE get CUSTOM_RESOURCE_KIND CUSTOM_RESOURCE_NAME
Em que:
NAMESPACE
: o namespace em que o recurso personalizado é implantado.CUSTOM_RESOURCE_KIND
: o tipo do recurso personalizado.CUSTOM_RESOURCE_NAME
: o nome do recurso personalizado.
Por exemplo, o comando a seguir verifica o status do recurso personalizado APIMExtensionPolicy
chamado apim-extension-policy
no namespace apim
:
kubectl -n apim get APIMExtensionPolicy apim-extension-policy-1
O resultado será assim:
NAME STATE ERRORMESSAGE apim-extension-policy Create_Update_Failed Permission denied
Ver registros
Esta seção descreve como usar registros para resolver problemas no recurso de gateway do Google Kubernetes Engine (GKE) e no recurso do operador do APIM.
Registros do GKE Gateway
Quando você aplica a APIMExtensionPolicy,
o gateway do GKE criado no cluster é
configurado com uma extensão de tráfego.
A extensão usa o processamento externo do Kubernetes (ext-proc
) para chamar o ambiente de execução e as políticas de processo da Apigee.
Os registros relacionados ao tráfego ext-proc
podem ser úteis para resolver problemas.
Conferir os registros de destaques de ext-proc
Para conferir os registros do tráfego de chamada ext-proc
:
- Encontre o ID do serviço de back-end criado para o ambiente de execução da Apigee:
kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.metadata.annotations.networking\.gke\.io/backend-services}"
Em que
GATEWAY_NAME
é o nome do gateway do GKE.O serviço de back-end vai conter
apigee-service-extension-backend-service
no ID. - Siga as etapas em Ativar a geração de registros em um serviço de back-end para ativar a geração de registros.
- Para conferir os registros no console do Google Cloud, acesse a página Análise de registros:
- Consulte
Mensagens de registro para um serviço de back-end para ver as informações de entrada de registro de chamada disponíveis, incluindo a
estrutura de payload JSON para a entrada de registro do balanceador de carga
service_extension_info
. Use o campo Pesquisar no Explorador de registros para filtrar as informações relevantes.O exemplo a seguir é uma entrada de registro que pode aparecer para uma chamada
ext-proc
com falha:{ "insertId": "s14dmrf10g6hi", "jsonPayload": { "serviceExtensionInfo": [ { "extension": "ext11", "perProcessingRequestInfo": [ { "eventType": "REQUEST_HEADERS", "latency": "0.001130s" } ], "backendTargetType": "BACKEND_SERVICE", "grpcStatus": "ABORTED", "backendTargetName": "gkegw1-2y13-apigee-service-extension-backend-service-443-yhsnrauznpwh", "chain": "chain1", "resource": "projects/${PROJECT}/locations/us-west1/lbTrafficExtensions/apim-extension" } ], "backendTargetProjectNumber": "projects/763484362408", "@type": "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" }, "httpRequest": { ... }, "resource": { "type": "internal_http_lb_rule", "labels": { ... } }, "timestamp": "2024-04-01T20:15:15.182137Z", "severity": "INFO", "logName": "projects/${PROJECT}/logs/loadbalancing.googleapis.com%2Frequests", "receiveTimestamp": "2024-04-01T20:15:18.209706689Z" }
O campo
grpcStatus
mostraABORTED
.
Registros do operador do APIM
O operador do APIM é um operador do Kubernetes que processa eventos de recursos personalizados do APIM (como criar, ler, atualizar e excluir) e os traduz na configuração adequada do Apigee.
Para conferir os registros do operador do APIM:
- Para conferir os registros no console do Google Cloud, acesse a página Análise de registros:
- No painel de consulta, insira uma consulta semelhante a esta:
resource.type="k8s_container" resource.labels.namespace_name="apim" labels.k8s-pod/app="apigee-apim-operator" severity>=DEFAULT
- Clique em Executar consulta.
- As entradas de registro filtradas são exibidas no painel Resultados da consulta.
- Anote todos os problemas com a criação, atualização ou exclusão dos serviços de rede
APIMExtensionPolicy
em Google Cloud ou com os produtos de API nos planos de gerenciamento da Apigee.Um exemplo de erro é semelhante ao seguinte:
ApimExtensionPolicy creation status400 response body:{ "error": { "code": 400, "message": "The request was invalid: backend service https://www.googleapis.com/compute/v1/projects/... must use HTTP/2 as the protocol", "status": "INVALID_ARGUMENT", "details": [ { "@type": "type.googleapis.com/google.rpc.BadRequest", "fieldViolations": [ { "field": "lb_traffic_extension.extension_chains[0].extensions[0].service" } ] }, { "@type": "type.googleapis.com/google.rpc.RequestInfo", "requestId": "d4e6f00ab5d367ec" } ] } }
Solucionar erros de acesso 403 no Operador do APIM
Se você descobrir erros de código de status 403
indicando problemas de acesso, confirme o seguinte:
- O cluster do GKE tem a federação de identidade da carga de trabalho ativada. A federação de identidade da carga de trabalho é ativada por padrão para clusters criados com o modo Autopilot. Se você criou um cluster usando o modo padrão, ative a federação de identidade da carga de trabalho conforme descrito em Ativar a federação de identidade da carga de trabalho para o GKE.
- A conta de serviço do Kubernetes (
apim-ksa
) é anotada corretamente pela instalação do Helm. Para confirmar isso, use o seguinte comando:kubectl describe serviceaccount apim-ksa -n NAMESPACE
Em que NAMESPACE é o namespace em que o operador do APIM é implantado.
Confirme se
apigee-apim-gsa@${PROJECT}.iam.gserviceaccount.com
aparece no campo Anotações da saída.Exemplo:
kubectl describe serviceaccount apim-ksa -n apim
A saída será semelhante a esta: Nome: apim-ksa Namespace: apim Rótulos: ... Anotações: iam.gke.io/gcp-service-account: apigee-apim-gsa@apigee-product-demo.iam.gserviceaccount.com ... Secrets de pull de imagem:
Secrets acionáveis: Tokens: Eventos: - A conta de serviço
apigee-apim-gsa
tem os papéis e as permissões do IAM corretos. Para confirmar isso, use o seguinte comando:gcloud iam service-accounts get-iam-policy \ apigee-apim-gsa@${PROJECT}.iam.gserviceaccount.com
A conta de serviço precisa ter o papel
roles/iam.workloadIdentityUser
.Por exemplo, a saída a seguir mostra o papel
roles/iam.workloadIdentityUser
:bindings: - members: - serviceAccount:${PROJECT}.svc.id.goog[/apim-ksa] role: roles/iam.workloadIdentityUser etag: BwYUpeaM7XQ= version: 1
- Não há condições especiais do IAM nos papéis necessários, o que impediria o acesso do operador.
Resolver problemas com o tráfego de execução da Apigee
Esta seção descreve como resolver problemas com o tráfego do ambiente do Apigee. As seções a seguir descrevem como resolver problemas com solicitações válidas e inválidas.
As solicitações válidas falham
Se você não conseguir enviar solicitações válidas para o ambiente de execução da Apigee, os seguintes problemas podem estar presentes:
- O gateway do GKE não consegue acessar o ambiente de execução do Apigee.
- As credenciais da chave de API ou do JWT são inválidas.
- O produto da API Apigee não está configurado para o destino e o ambiente corretos.
- O ambiente de execução da Apigee não tem acesso ao produto da API Apigee.
Etapas da solução de problemas
Para resolver problemas com solicitações válidas:
- Ative os registros do balanceador de carga para o gateway do GKE e analise-os para determinar a causa das falhas da chamada de extensão. Consulte os registros do gateway do GKE para mais detalhes.
- Confirme se o serviço de back-end referenciado pelo serviço externo está em bom estado.
- Revise a configuração do produto da API na Apigee:
- Confirme se o produto da API está ativado para o ambiente correto (por exemplo,
test
ouprod
). - Confirme se o caminho do recurso corresponde à sua solicitação. Um caminho como
/
ou/**
corresponderá a qualquer caminho. Também é possível usar os caracteres curinga*
ou**
para fazer a correspondência. - Confirme se você tem um app de desenvolvedor configurado para o produto da API. O produto da API precisa estar vinculado a um app do desenvolvedor para validar as chaves de API.
- Confirme se o produto da API está ativado para o ambiente correto (por exemplo,
- Analise sua solicitação para o gateway:
- Confirme se a chave do consumidor é transmitida no cabeçalho
x-api-key
. - Confira se a chave do consumidor é válida. As credenciais do app do desenvolvedor precisam ser aprovadas para seu produto de API.
- Confirme se a chave do consumidor é transmitida no cabeçalho
Solicitações inválidas bem-sucedidas
Se as solicitações inválidas para o ambiente de execução da Apigee forem bem-sucedidas, os seguintes problemas poderão estar presentes:
FailOpen
está definido comotrue
na APIMExtensionPolicy.- Não há uma extensão de tráfego definida para o balanceador de carga do gateway do GKE.
Etapas da solução de problemas
Para resolver problemas com solicitações inválidas:
- Confirme se uma extensão de serviço existe e faz referência aos serviços de back-end e à regra de encaminhamento corretas para o gateway do GKE.
Use o comando a seguir para conferir a extensão do serviço:
gcloud beta service-extensions lb-traffic-extensions describe NAME_OF_APIM_EXTENSION_POLICY --location=LOCATION --project=PROJECT
Em que:
NAME_OF_APIM_EXTENSION_POLICY
: o nome do recurso personalizadoAPIMExtensionPolicy
.PROJECT
: o ID do projeto.LOCATION
: o local do cluster do GKE em que o gateway foi implantado.
A saída será semelhante a esta:
... extensionChains: - extensions: - authority: ext11.com failOpen: false # make sure this is false name: ext11 service: https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/backendServices/gkegw1-2y13-apigee-service-extension-backend-service-443-yhsnrauznpwh # Confirm this is correct supportedEvents: - REQUEST_HEADERS - RESPONSE_HEADERS - REQUEST_BODY - RESPONSE_BODY timeout: 0.100s matchCondition: celExpression: 'true' # Confirm this is set name: chain1 forwardingRules: - https://www.googleapis.com/compute/v1/projects/my-project/regions/us-west1/forwardingRules/gkegw1-2y13-default-internal-http-h6c1hhp1ce6q # Confirm this is the correct forwarding rule for your application load balancer loadBalancingScheme: INTERNAL_MANAGED name: projects/my-project/locations/us-west1/lbTrafficExtensions/apim-extension-policy-1
Análises ausentes
Se não for possível acessar a Análise de APIs da Apigee para o Operador de APIM no console do Google Cloud, saiba que a coleta de dados da Apigee pode demorar alguns minutos.
Outros recursos
Os recursos a seguir também podem ser usados para resolver problemas com o operador da APIM e o tráfego do ambiente de execução da Apigee: