Este documento fornece orientações de resolução de problemas para problemas de acesso de utilizadores no GKE Identity Service.
O dispositivo gcloud anthos create-login-config não consegue obter clientconfig
Este problema ocorre num dos seguintes casos:
- O ficheiro kubeconfig transmitido a
gcloud anthos create-login-configestá incorreto. - O recurso personalizado ClientConfig não está presente no cluster (o serviço de identidade do GKE não está instalado no cluster).
Mensagem de erro
failed to get clientconfig default in namespace kube-public
Solução
Para resolver este problema, faça o seguinte:
- Certifique-se de que tem o ficheiro kubeconfig correto para o seu cluster.
Para verificar se o recurso personalizado ClientConfig está no cluster, execute o seguinte comando:
kubectl --kubeconfig KUBECONFIG get clientconfig default -n kube-public
Se o ClientConfig não estiver presente no cluster, instale e configure o GKE Identity Service no cluster. Para mais informações sobre as opções de configuração de clusters, consulte o artigo Opções de configuração para clusters.
A criação do gcloud anthos create-login-config falha devido a um nome de cluster duplicado
Este problema ocorre se tentar criar uma configuração de início de sessão para um cluster num ficheiro que já contém uma configuração de início de sessão para este cluster.
Mensagem de erro
error merging with file FILENAME because FILENAME contains a
cluster with the same name as the one read from KUBECONFIG.
Solução
Para resolver este problema, use a flag --output para especificar um novo ficheiro de destino.
Se não fornecer --output, estes dados de configuração de início de sessão são escritos num ficheiro denominado kubectl-anthos-config.yaml no diretório atual.
gcloud anthos auth login falha com proxyconnect tcp
Este problema ocorre quando existe um erro nas configurações das variáveis de ambiente https_proxy ou HTTPS_PROXY. Se existir um https:// especificado nas variáveis de ambiente, as bibliotecas de clientes HTTP GoLang podem falhar se o proxy estiver configurado para processar ligações HTTPS através de outros protocolos, como o SOCK5.
Mensagem de erro
proxyconnect tcp: tls: first record does not look like a TLS handshake
Solução
Para resolver este problema, modifique as variáveis de ambiente https_proxy e HTTPS_PROXY para omitir o https:// prefix. No Windows, modifique as variáveis de ambiente do sistema.
Por exemplo, altere o valor da variável de ambiente https_proxy de https://webproxy.example.com:8000 para webproxy.example.com:8000.
O acesso ao cluster falha quando usa o kubeconfig gerado por gcloud anthos auth login
Este problema ocorre quando o servidor da API Kubernetes não consegue autorizar o utilizador por um dos seguintes motivos:
- Existe um erro na configuração usada para iniciar sessão com o comando
gcloud anthos auth login. - As políticas de RBAC necessárias estão incorretas ou em falta para o utilizador.
Mensagem de erro
Unauthorized
Solução
Para resolver este problema, faça o seguinte:
Valide a configuração usada para iniciar sessão.
Configuração do OIDC
A secção
authentication.oidcno ficheiro de configuração do cluster de utilizadores tem os camposgroupeusernameque são usados para definir as flags--oidc-group-claime--oidc-username-claimno servidor da API Kubernetes. Quando o servidor da API recebe um token de identidade de um utilizador, reencaminha o token para o serviço de identidade do GKE, que devolve ogroup-claimextraído e ousername-claimde volta para o servidor da API. O servidor da API usa a resposta para verificar se o grupo ou o utilizador correspondente tem as autorizações corretas.Verifique se as reivindicações definidas para
groupeuserna secçãoauthentication.oidcdo ficheiro de configuração do cluster estão presentes no token de ID.Valide as políticas de RBAC aplicadas.
Para saber como configurar as políticas de CABF corretas para o GKE Identity Service, consulte o artigo Configure o controlo de acesso baseado em funções (CABF).
As RBACs para grupos não funcionam para fornecedores OIDC
Verifique se o token de ID tem as informações do grupo
Depois de executar o comando
gcloud anthos auth loginpara iniciar o fluxo de autenticação OIDC, o token de ID é armazenado no ficheirokubeconfigno campoid-token. Use jwt.io para descodificar o token de ID e verificar se contém as informações do grupo do utilizador conforme esperado.Se o token de ID não tiver informações de grupo do utilizador, configure corretamente o fornecedor de OIDC para devolver as informações de grupo de acordo com a documentação do seu fornecedor de OIDC. Por exemplo, se estiver a usar a configuração do OIDC do fornecedor de identidade Okta, siga a documentação do fornecedor de identidade Okta para configurar grupos no token de ID.
Se o token de ID tiver informações de grupo, verifique se a chave de informações de grupo no token de ID corresponde ao campo
groupsClaimconfigurado na secçãooidc.Por exemplo, se o token de ID contiver informações de grupos na chave
groups:"groups" : ["group1", "group2" ...]então, o valor do campo
groupsClaimdeve sergroupsna secçãooidc.Depois de modificar a configuração na secção
oidc, certifique-se de que executa novamente as instruções indicadas em Configurar acesso do utilizador e Aceder a clusters.
Resolva problemas de fornecedores de identidade
Se tiver problemas ao usar o OIDC ou o LDAP com o seu cluster do GKE, siga os passos nesta secção para resolver problemas do serviço de identidade do GKE e ajudar a determinar se existe um problema com a configuração do seu fornecedor de identidade.
Ative o registo de depuração do GKE Identity Service
Para ajudar a resolver problemas relacionados com a identidade no seu cluster, ative o registo de depuração do GKE Identity Service.
Aplique uma patch ao cluster existente com
kubectl patch:kubectl patch deployment ais \ -n anthos-identity-service --type=json \ -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value":"--vmodule=cloud/identity/hybrid/charon/*=LOG_LEVEL"}]' \ --kubeconfig KUBECONFIGSubstitua o seguinte:
LOG_LEVEL: para os registos mais detalhados, defina este valor como nível3durante a resolução de problemas.KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de utilizadores.
Verifique o registo do contentor do serviço de identidade do GKE
Reveja o conteúdo dos registos do contentor do GKE Identity Service para verificar se existem erros ou avisos.
Para rever os registos, use
kubectl logs:kubectl logs -f -l k8s-app=ais \ -n anthos-identity-service \ --kubeconfig KUBECONFIGSubstitua
KUBECONFIGpelo caminho para o ficheiro kubeconfig do cluster de utilizadores.
Reinicie o pod do serviço de identidade do GKE
Se os registos do contentor mostrarem problemas, reinicie o pod do GKE Identity Service.
Para reiniciar o pod do serviço de identidade do GKE, elimine o pod existente. É criado automaticamente um novo pod como substituição.
kubectl delete pod -l k8s-app=ais \ -n anthos-identity-service \ --kubeconfig KUBECONFIGSubstitua
KUBECONFIGpelo caminho para o ficheiro kubeconfig do cluster de utilizadores.
Resolva problemas de conetividade com o Fornecedor de identidade
Se o pod do serviço de identidade do GKE parecer estar a ser executado corretamente, teste a conetividade ao fornecedor de identidade remoto.
Inicie um pod do busybox no mesmo espaço de nomes que o pod do serviço de identidade do GKE:
kubectl run curl --image=radial/busyboxplus:curl \ -n anthos-identity-service -- sleep 3000 \ --kubeconfig KUBECONFIGSubstitua
KUBECONFIGpelo caminho para o ficheiro kubeconfig do cluster de utilizadores.Para verificar se consegue obter o URL de descoberta, execute no pod busybox e execute o comando
curl:kubectl exec pod/curl -n anthos-identity-service -- \ curl ISSUER_URL \ --kubeconfig KUBECONFIGSubstitua o seguinte:
ISSUER_URL: o URL do emissor do seu fornecedor de identidade.KUBECONFIG: o caminho para o ficheiro kubeconfig do cluster de utilizadores.
Uma resposta bem-sucedida é um resultado JSON com os pontos finais do fornecedor de identidade detalhados.
Se o comando anterior não devolver o resultado esperado, contacte o administrador do fornecedor de identidade para receber assistência adicional.
O início de sessão LDAP não funciona para o cluster de administrador do Google Distributed Cloud
Atualmente, o LDAP só é suportado para o cluster de utilizadores do Google Distributed Cloud.