Utilitário de diagnóstico do serviço de identidade do GKE
O utilitário de diagnóstico do serviço de identidade do GKE ajuda a resolver problemas de autenticação baseada em FQDN. Se você tiver dificuldades para autenticar em um cluster usando um provedor OIDC específico, ative a ferramenta e use-a para identificar rapidamente problemas de configuração simulando fluxos de login com seu provedor OIDC.
O utilitário de diagnóstico está disponível apenas em clusters que executam o GKE Enterprise 1.32 ou mais recente e só oferece suporte ao OIDC.
Ativar o utilitário de diagnóstico
O utilitário de diagnóstico é desativado por padrão e precisa ser ativado antes de ser usado para solucionar problemas. A maneira de ativar o utilitário depende de como você configurou o cluster com o serviço de identidade do GKE.
Configuração da frota (console)
Se você usou o consoleGoogle Cloud para configurar clusters com o GKE Identity Service no nível da frota, siga estas instruções.
Crie um arquivo de manifesto ClientConfig YAML conforme descrito em Criar um arquivo de configuração.
O manifesto vai ser parecido com este:
apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Como mostrado no exemplo abaixo, adicione uma seção
identityServiceOptions
ao manifesto ClientConfig para especificar a configuração do utilitário de diagnóstico:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: identityServiceOptions: diagnosticInterface: enabled: true expirationTime: TIMESTAMP authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Substitua
TIMESTAMP
por um horário de expiração no formato RFC 3339. Por exemplo,2025-05-01T17:05:00Z
. O tempo de expiração determina quando o recurso do utilitário de diagnóstico é desativado automaticamente. Como o utilitário de diagnóstico está disponível para qualquer pessoa com acesso ao cluster, definir o tempo de expiração adequadamente ajuda a garantir que o utilitário não permaneça ativado por mais tempo do que o necessário. Ao definir o prazo de validade, é recomendável definir 12 horas no futuro, embora qualquer horário no futuro seja válido.Em seguida, aplique o arquivo ao cluster executando:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=MANIFEST_FILE_PATH
Substitua:
CLUSTER_NAME
: o nome exclusivo do cluster na frota.MANIFEST_FILE_PATH
: caminho do arquivo de manifesto ClientConfig YAML.
Configuração da frota (gcloud)
Se você usou a CLI do Google Cloud para configurar clusters com o GKE Identity Service no nível da frota, siga estas instruções:
Abra o arquivo de manifesto ClientConfig que foi criado quando você configurou o cluster com o GKE Identity Service.
O manifesto vai ser parecido com este:
apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Como mostrado no exemplo abaixo, adicione uma seção
identityServiceOptions
ao manifesto ClientConfig para especificar a configuração do utilitário de diagnóstico:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: identityServiceOptions: diagnosticInterface: enabled: true expirationTime: TIMESTAMP authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Substitua
TIMESTAMP
por um horário de expiração no formato RFC 3339. Por exemplo,2025-05-01T17:05:00Z
. O tempo de expiração determina quando o recurso do utilitário de diagnóstico é desativado automaticamente. Como o utilitário de diagnóstico está disponível para qualquer pessoa com acesso ao cluster, definir o tempo de expiração adequadamente ajuda a garantir que o utilitário não permaneça ativado por mais tempo do que o necessário. Ao definir o prazo de validade, é recomendável definir 12 horas no futuro, embora qualquer horário no futuro seja válido.Em seguida, aplique o arquivo ao cluster executando:
gcloud container fleet identity-service apply \ --membership=CLUSTER_NAME \ --config=MANIFEST_FILE_PATH
Substitua:
CLUSTER_NAME
: o nome exclusivo do cluster na frota.MANIFEST_FILE_PATH
: caminho do arquivo de manifesto ClientConfig YAML.
Configuração de clusters individuais
Se você configurar o serviço de identidade do GKE para clusters individuais, siga estas instruções:
Abra o recurso personalizado ClientConfig para edição:
kubectl edit clientconfig default \ --kubeconfig CLUSTER_KUBECONFIG -n kube-public
O manifesto vai ser parecido com este:
apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Como mostrado no exemplo abaixo, adicione uma seção
identityServiceOptions
ao manifesto ClientConfig para especificar a configuração do utilitário de diagnóstico:apiVersion: authentication.gke.io/v2alpha1 kind: ClientConfig metadata: name: default namespace: kube-public spec: identityServiceOptions: diagnosticInterface: enabled: true expirationTime: TIMESTAMP authentication: - name: oidc oidc: clientID: example-client-id clientSecret: example-client-secret cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc extraParams: prompt=consent, access_type=offline issuerURI: https://example.com kubectlRedirectURI: http://localhost:PORT/callback scopes: openid,email,offline_access userClaim: email
Substitua
TIMESTAMP
por um horário de expiração no formato RFC 3339. Por exemplo,2025-05-01T17:05:00Z
. O tempo de expiração determina quando o recurso do utilitário de diagnóstico é desativado automaticamente. Como o utilitário de diagnóstico está disponível para qualquer pessoa com acesso ao cluster, definir o tempo de expiração adequadamente ajuda a garantir que o utilitário não permaneça ativado por mais tempo do que o necessário. Ao definir o prazo de validade, é recomendável definir 12 horas no futuro, embora qualquer horário no futuro seja válido.Salve as alterações e saia do editor de texto para aplicar o manifesto ao cluster.
Usar o utilitário de diagnóstico para simular um login
Depois que o utilitário de diagnóstico for ativado, você poderá simular um evento de login e receber as informações de diagnóstico correspondentes que podem ser usadas para resolver problemas com um provedor específico.
Abra a página de diagnóstico em um navegador acessando o seguinte URL:
APISERVER-URL/diagnose
Substitua
APISERVER_URL
pelo nome de domínio totalmente qualificado (FQDN) do cluster. Por exemplo,https://apiserver.example.com
.A página de diagnóstico mostra uma lista de provedores OIDC configurados para seu cluster.
Selecione o provedor que você quer resolver.
Faça login normalmente.
Ao final do processo de login, o utilitário mostra uma página com informações de diagnóstico que podem ajudar a resolver problemas.
Usar a página de diagnóstico para resolver problemas de login
A página de diagnóstico fornece um resumo da autenticação, que é dividido em três seções:
Status: contém
Success
ouFailed
, dependendo se a autenticação foi bem-sucedida ou não.Provedor de identidade: contém detalhes, como
Name
,Client ID
eUserClaim
, sobre o provedor usado para fazer login.Token de ID: contém informações sobre o token de ID buscado pelo serviço de identidade do GKE usando o provedor fornecido. O token de ID é um objeto JSON que contém um conjunto de pares de chave-valor. As chaves podem incluir
iss
,aud
,sub
eemail
.
Resolver problemas de sucesso da autenticação
Se o conteúdo da seção Status indicar que a autenticação foi concluída e você ainda estiver com problemas, a ausência de controles de acesso baseados em função (RBACs) pode ser a causa. Para mais informações sobre solução de problemas, consulte RBACs para grupos que não funcionam com provedores OIDC para mais soluções.
Resolver falhas de autenticação
Se o conteúdo da seção Status indicar que a autenticação falhou, comece procurando inconsistências entre as seções Provedor de identidade e Token de ID.
Confira alguns requisitos de autenticação que você precisa verificar:
Se o campo
UserClaim
em Provedor de identidade estiver vazio, a seção ID Token precisará conter um campo chamadosub
. Um camposub
ausente é uma indicação de que há um problema com o token de ID.O valor do campo
UserClaim
em Provedor de identidade precisa ser uma chave na seção Token de ID. Por exemplo, se o campoUserClaim
estiver definido comoemail
, será necessário ter um campo chamadoemail
no token de ID.O valor do campo
GroupsClaim
no provedor de identidade precisa ser uma chave no token de ID. Por exemplo, se o campoGroupsClaim
estiver definido comogroupsList
(para um provedor compatível com grupos), será necessário ter um campo chamadogroupsList
em Token de ID.O valor do campo
Client ID
no provedor de identidade precisa estar contido no valor do campoaud
na seção token de ID.
Se alguma das condições anteriores não for atendida, consulte um dos guias a seguir para mais detalhes sobre como configurar corretamente seus clusters com o GKE Identity Service:
Se você configurar o GKE Identity Service para clusters individuais, consulte as instruções para configurar clusters individuais.
Se você configurar o GKE Identity Service no nível da frota, consulte as instruções para configurar uma frota de clusters.
Usar registros para resolver outros problemas
Os registros do pod do Serviço de identidade do GKE contêm outras informações de depuração. Para usar os registros do pod do serviço de identidade do GKE: