Este documento descreve resoluções para erros comuns de identidades de cargas de trabalho gerenciadas.
Se o pod de carga de trabalho do Google Kubernetes Engine (GKE) não tiver sido implantado com os certificados montados, use o comando a seguir para verificar o status do pod:
kubectl describe pod POD_NAME -n POD_NAMESPACE
A resposta ao comando inclui eventos de pod gerados pelo kubelet e pelo gke-spiffe-controller. Revise esses eventos para encontrar mensagens de erro específicas, que podem incluir uma das seguintes:
Erros PermissionDenied
Esta seção descreve erros que retornam um código de erro RPC PermissionDenied.
PRIVATE_CA_AUTHORIZATION_FAILURE
Esse erro é semelhante ao seguinte:
Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.caPools.get' denied on resource 'privateca.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/locations/REGION/caPools/CA_POOL_ID' (or it may not exist). Ensure that the CaPool exists and you have authorized the Managed Workload Identity to request certificates from the CaPool.
O erro ocorreu porque o pool de identidades da carga de trabalho não tem o papel CA Service
Workload Certificate Requester(roles/privateca.workloadCertificateRequester) no pool de ACs subordinada ou porque o pool de ACs não existe.
Para resolver esse erro, conceda o papel ao pool:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--project=CA_POOL_PROJECT_ID \
--location=REGION \
--role=roles/privateca.workloadCertificateRequester \
--member="principal://iam.googleapis.com/projects/WIP_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/TRUST_DOMAIN_NAME"
Substitua:
SUBORDINATE_CA_POOL_ID: o ID do pool de ACs subordinadaCA_POOL_PROJECT_ID: o ID do projeto do pool de ACsREGION: a região da AC subordinadaWIP_PROJECT_NUMBER: o número do projeto do pool de identidades da carga de trabalhoTRUST_DOMAIN_NAME: o nome do domínio confiável. Dependendo do tipo de pool, formate o nome da seguinte maneira:- Pool gerenciado pelo Google:
PROJECT_ID.svc.id.goog - Pool autogerenciado:
POOL_NAME.global.POOL_HOST_PROJECT_NUMBER.workload.id.goog
- Pool gerenciado pelo Google:
WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND ou WORKLOAD_NAMESPACE_NOT_FOUND
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission denied on resource 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_NAME/... (or it may not exist).
Esse erro é mapeado para WORKLOAD_IDENTITY_NOT_FOUND, WORKLOAD_POOL_NOT_FOUND ou WORKLOAD_NAMESPACE_NOT_FOUND. Ele ocorre quando o pool de identidades da carga de trabalho, o namespace do pool de identidades da carga de trabalho ou o recurso de identidade gerenciada não existe ou quando está desativado ou excluído. Observe que esse erro retorna PermissionDenied em vez de NotFound para evitar o vazamento de recursos inexistentes.
Para resolver esse erro, verifique a existência e o status do pool de identidades da carga de trabalho e dos sub-recursos dele no IAM. Verifique se eles estão configurados corretamente e não estão desativados ou excluídos.
Erros FailedPrecondition
Esta seção descreve erros que retornam um código de erro RPC FailedPrecondition, que normalmente indica uma configuração ausente ou incorreta.
WORKLOAD_IDENTITY_INVALID_CONFIGURATION
A descrição do pod pode incluir uma das seguintes mensagens:
failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = There are no CaPools configured for certificate issuance. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME', which contains at least one CaPool.
ou
failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Missing Certificate issuance configuration in the Trust Domain. Ensure you have added certificate issuance configuration to the workload identity pool 'projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WI_POOL_NAME' which contains at least one CaPool.
Esse erro (WORKLOAD_IDENTITY_INVALID_CONFIGURATION) ocorreu porque o pool de identidades da carga de trabalho não foi configurado com uma configuração de emissão de certificado (CIC, na sigla em inglês) ou porque a CIC configurada não contém pelo menos um pool de ACs.
Para resolver esse erro, crie uma CIC que contenha pelo menos um pool de ACs e use-a para atualizar o pool de identidades da carga de trabalho.
CERTIFICATE_AUTHORITY_NOT_FOUND
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Failed to request certificates from the CaPool... There are no enabled CAs in the CaPool. Ensure that there is at least one enabled Certificate Authority to issue a certificate.
Esse erro (CERTIFICATE_AUTHORITY_NOT_FOUND) indica que uma autoridade certificadora não pode ser encontrada para emissão de certificado no pool de ACs configurado pelo cliente.
Para resolver esse erro, verifique se uma autoridade certificadora existe no pool de ACs configurado e se ela está ativada para emissão de certificado.
CA_POOL_REGION_MISMATCH
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition desc = Unable to find a CaPool in the workload's region. Ensure you have setup a subordinate CaPool in 'WORKLOAD_REGION' and added it to the certificate issuance configuration of the Workload Identity Pool...
Esse erro (CA_POOL_REGION_MISMATCH) indica que nenhum pool de ACs foi configurado para a região específica da carga de trabalho.
Para resolver esse erro, configure um pool de ACs adicional para a região da carga de trabalho no pool de identidades da carga de trabalho ou implante a carga de trabalho em uma região que já tenha um pool de ACs configurado.
Erros ResourceExhausted
Esta seção descreve erros que retornam um código de erro RPC ResourceExhausted.
PRIVATE_CA_QUOTA_EXCEEDED
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = ResourceExhausted desc = Quota exceeded for quota metric 'QUOTA_METRIC' and limit 'QUOTA_LIMIT' of service 'privateca.googleapis.com' for consumer 'project_number:PROJECT_NUMBER'.
Esse erro (PRIVATE_CA_QUOTA_EXCEEDED) ocorre quando você configura o pool de identidades da carga de trabalho para usar uma AC personalizada e uma tentativa de emitir um certificado excedeu uma cota ou limite estabelecido relacionado ao serviço de AC.
Esse erro não ocorre se você usar a AC padrão gerenciada pelo Google.
QUOTA_METRICeQUOTA_LIMIT: a métrica e o limite de cota específicos que foram excedidos. Por exemplo,privateca.googleapis.com/enterprise_certificate_issuanceeCertsPerEnterpriseCaPerMinute.
Para resolver esse erro, revise as cotas e os limites do serviço de AC no Google Cloud console e solicite um aumento de cota, se necessário.
Erros InvalidArgument
Esta seção descreve erros que retornam um código de erro RPC InvalidArgument.
PRIVATE_CA_KEY_ALGORITHM_MISMATCH
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = InvalidArgument desc = Public key algorithm is not permitted by the CaPool's issuance policy. Ensure that the requested keyAlgorithm 'KEY_ALGO_IN_CSR' is permitted by the CAs in the CaPool 'privateca.googleapis.com/projects/PROJECT_NAME/locations/WORKLOAD_REGION/caPools/CA_POOL_NAME'.
Esse erro (PRIVATE_CA_KEY_ALGORITHM_MISMATCH) indica que o algoritmo de chave especificado na solicitação de certificado é incompatível com as restrições do pool de ACs configurado. Isso só acontece quando você configura um algoritmo de chave personalizado na configuração de emissão de certificado (CIC) e atualiza o pool de identidades da carga de trabalho.
Para resolver esse erro, verifique se o algoritmo configurado na CIC do pool de identidades da carga de trabalho é compatível com os algoritmos aceitos pela política de emissão do pool de ACs.
Erros Unknown
Esta seção descreve erros que retornam um código de erro RPC Unknown.
UNKNOWN_PRIVATE_CA_CLIENT_ERROR
Esse erro é semelhante ao seguinte:
failed to issue the certificate from the GKE Auth: rpc error: code = Unknown desc = Failed to get certificates using the CaPool... PRIVATE_CA_ERROR_MESSAGE
Esse erro (UNKNOWN_PRIVATE_CA_CLIENT_ERROR) indica que um erro de cliente desconhecido, como um argumento inválido fornecido à API, ocorreu ao chamar o serviço de AC.
Para resolver esse erro, revise a mensagem de erro específica retornada da API do serviço de AC para identificar o argumento inválido ou o problema de configuração do lado do cliente e corrigi-lo.
Latência de propagação do pacote de confiança
Ao atualizar ou girar uma AC autogerenciada, há uma latência de propagação de aproximadamente 5 minutos antes que as atualizações entrem em vigor nos clusters do GKE. Isso ocorre porque o gke-spiffe-controller verifica a associação e busca pacotes de confiança a cada cinco minutos.
Essa latência não ocorre se você usar a AC gerenciada pelo Google.
Se você atualizar uma AC autogerenciada, aguarde pelo menos cinco minutos para que as mudanças entrem em vigor.