Erro do agrupamento UDCA

Sintoma

Após a atualização do Apigee hybrid, os pods do agente de recolha de dados universal (UDCA) e do agente de ligação geram um erro de problema de autorização.

Mensagens de erro

O seu pod UDCA apresenta este erro nos registos:

Permission 'apigee.runtimeconfigs.get' denied on resource 
'organizations/org-example/runtimeConfig' (or it may not 
exist)\\\",\\n  \\\"status\\\": \\\"PERMISSION_DENIED\\

Além disso, o seu pod da API Management for Runtime (MART) apresenta este erro relativamente ao agente de ligação:

Permission 'apigeeconnect.endpoints.connect' denied on resource 
'//apigeeconnect.googleapis.com/projects/org-example/endpoints/APIGEE_MART' 
(or it may not exist).

Passos de diagnóstico comuns

Recolha o script Apigee hybrid must-gather do seu cluster e o ficheiro overrides.yaml para o cluster.

Causas possíveis

Causa Descrição
Credenciais incorretas Pode ter introduzido as credenciais erradas no ficheiro overrides.yaml.
Ficheiros SA localizados no diretório errado Os ficheiros da conta de serviço (SA) podem estar localizados fora do diretório $APIGEE_HELM_CHARTS_HOME.

Causa 1: credenciais incorretas

O serviceAccountPath ou o serviceAccountRef usado no seu ficheiro overrides.yaml para os pods UDCA, MART e do agente de ligação está incorreto. Isto pode dever-se ao facto de o ficheiro overrides.yaml ter sido gerado através de automatização ou scripts personalizados, como a utilização do Terraform.

Diagnóstico

  1. Valide as funções e as autorizações do IAM atribuídas às contas de serviço que usa.

    gcloud iam service-accounts get-iam-policy SERVICE_ACCOUNT_EMAIL
    gcloud projects get-iam-policy PROJECT_ID
    

    Onde:

    • SERVICE_ACCOUNT_EMAIL é o endereço de email da conta de serviço.
    • PROJECT_ID é o projeto do Google Cloud associado à conta de serviço.
  2. Reveja o ficheiro overrides.yaml para se certificar de que a conta de serviço referenciada corresponde à usada nas funções e política de IAM do projeto.

Exemplo

Um exemplo de uma política de IAM funcional para a conta de serviço para uma configuração não de produção:

gcloud iam service-accounts get-iam-policy apigee-non-prod@org-example.iam.gserviceaccount.com

Exemplo de saída:

bindings:
- members:
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-cassandra-backup-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-cassandra-default]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-cassandra-guardrails-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-connect-agent-org-example-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-mart-org-example-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-metrics-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-runtime-org-example-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-synchronizer-org-example-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-udca-org-example-sa]
  - serviceAccount:org-example.svc.id.goog[apigee/apigee-watcher-org-example-sa]
  role: roles/iam.workloadIdentityUser
etag: BwYw33-1N8s=
version: 1

Um exemplo de validação de funções:

gcloud projects get-iam-policy org-example

Exemplo de saída:

bindings:
- members:
  - serviceAccount:apigee-non-prod@org-example.iam.gserviceaccount.com
  role: roles/apigee.analyticsAgent
- members:
  - serviceAccount:apigee-non-prod@org-example.iam.gserviceaccount.com
  role: roles/apigee.runtimeAgent
- members:
  - serviceAccount:apigee-non-prod@org-example.iam.gserviceaccount.com
  role: roles/apigee.synchronizerManager
- members:
  - serviceAccount:apigee-non-prod@org-example.iam.gserviceaccount.com
  role: roles/apigeeconnect.Agent
- members:
  - serviceAccount:apigee-non-prod@org-example.iam.gserviceaccount.com
  role: roles/storage.objectAdmin

Para produção, execute os mesmos comandos na conta de serviço de produção para apigee-udca e verifique se existem funções de IAM que correspondam à secção de instalação.

Resolução

Se o ficheiro da conta de serviço usado no overrides.yaml não corresponder à conta de serviço correta nas associações e funções de IAM do projeto, deve eliminar e recriar a conta de serviço e corrigir o ficheiro da conta de serviço usado no overrides.yaml.

Causa 2: ficheiros SA localizados no diretório errado

Este problema ocorre quando configura os gráficos Helm e cria a conta de serviço.

Diagnóstico

Verifique a localização do ficheiro de credenciais da conta de serviço para garantir que reside no diretório do gráfico Helm correto. O ficheiro JSON da conta de serviço deve residir nos seguintes diretórios:

  • $APIGEE_HELM_CHARTS_HOME/apigee-datastore
  • $APIGEE_HELM_CHARTS_HOME/apigee-telemetry
  • $APIGEE_HELM_CHARTS_HOME/apigee-org
  • $APIGEE_HELM_CHARTS_HOME/apigee-env

Exemplo

Por exemplo, verifique os diretórios do gráfico Helm listando o diretório apigee-datastore e faça o mesmo para os diretórios apigee-org, apigee-env e apigee-telemetry.

Exemplo de comando:

Certifique-se de que está no diretório correto:

pwd

Exemplo de saída:

/usr/local/home/example/Hybrid/helm-charts
├── apigee-datastore
│   ├── org-example-apigee-non-prod.json
│   └── templates
├── apigee-env
│   ├── org-example-apigee-non-prod.json
│   └── templates
├── apigee-ingress-manager
│   └── templates
├── apigee-operator
│   ├── etc
│   │   ├── crds
│   │   │   ├── crd
│   │   │   │   ├── bases
│   │   │   │   └── patches
│   │   │   └── default
│   │   ├── examples
│   │   │   └── helmfiles
│   │   └── tools
│   │       └── service-accounts
│   │           ├── org-example-apigee-cassandra.json
│   │           ├── org-example-apigee-logger.json
│   │           ├── org-example-apigee-mart.json
│   │           ├── org-example-apigee-metrics.json
│   │           ├── org-example-apigee-runtime.json
│   │           ├── org-example-apigee-synchronizer.json
│   │           ├── org-example-apigee-udca.json
│   │           └── org-example-apigee-watcher.json
│   └── templates
├── apigee-org
│   ├── org-example-apigee-non-prod.json
│   └── templates
├── apigee-redis
│   └── templates
├── apigee-telemetry
│   ├── org-example-apigee-non-prod.json
│   └── templates
├── apigee-virtualhost
│   ├── certs
│   └── templates
└── cluster-check
29 directories, 12 files

Resolução

Copie o ficheiro da conta de serviço para os quatro diretórios (apigee-datastore, apigee-telemetry, apigee-org e apigee-env) de acordo com a localização da árvore de exemplo acima e, em seguida, volte a executar os gráficos Helm.

Configuração da conta de serviço