Utilitaire de diagnostic de GKE Identity Service

L'utilitaire de diagnostic de GKE Identity Service vous aide à résoudre les problèmes d'authentification basée sur un FQDN. Si vous rencontrez des difficultés à vous authentifier sur un cluster à l'aide d'un fournisseur OIDC spécifique, vous pouvez activer l'outil et l'utiliser pour identifier rapidement les problèmes de configuration en simulant les flux de connexion avec votre fournisseur OIDC.

L'utilitaire de diagnostic n'est disponible que sur des clusters individuels exécutant GKE Enterprise 1.32 ou version ultérieure, et n'est compatible qu'avec OIDC.

Activer l'utilitaire de diagnostic

L'utilitaire de diagnostic est désactivé par défaut et doit être activé avant de pouvoir l'utiliser pour résoudre les problèmes. Pour l'activer, suivez ces instructions:

  1. Ouvrez la ressource personnalisée ClientConfig pour la modifier:

    kubectl edit clientconfig default \
        --kubeconfig CLUSTER_KUBECONFIG -n kube-public
    

    Le fichier manifeste doit se présenter comme suit:

    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
    
  2. Comme indiqué dans l'exemple suivant, ajoutez une section identityServiceOptions au fichier manifeste ClientConfig pour spécifier la configuration de l'utilitaire de diagnostic:

    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
    

    Remplacez TIMESTAMP par une heure d'expiration au format RFC 3339. Exemple : 2025-05-01T17:05:00Z. L'heure d'expiration détermine le moment où la fonctionnalité de l'utilitaire de diagnostic s'arrête automatiquement. Étant donné que l'utilitaire de diagnostic est disponible pour tous les utilisateurs disposant d'un accès au cluster, définir correctement l'heure d'expiration permet de s'assurer que l'utilitaire ne reste pas activé plus longtemps que nécessaire. Lorsque vous définissez l'heure d'expiration, nous vous recommandons de la fixer à 12 heures dans le futur, bien que toute heure dans le futur soit valide.

  3. Enregistrez les modifications et quittez l'éditeur de texte pour appliquer le fichier manifeste au cluster.

Utiliser l'utilitaire de diagnostic pour simuler une connexion

Une fois l'utilitaire de diagnostic activé, vous pouvez simuler un événement de connexion et obtenir les informations de diagnostic correspondantes que vous pouvez utiliser pour résoudre les problèmes liés à un fournisseur spécifique.

  1. Ouvrez la page de diagnostic dans un navigateur en accédant à l'URL suivante:

    APISERVER-URL/diagnose
    

    Remplacez APISERVER_URL par le nom de domaine complet (FQDN) de votre cluster. Exemple :https://apiserver.example.com

    La page de diagnostic affiche la liste des fournisseurs OIDC configurés pour votre cluster.

  2. Sélectionnez le fournisseur que vous souhaitez dépanner.

  3. Connectez-vous comme d'habitude.

    À la fin du processus de connexion, l'utilitaire affiche une page contenant des informations de diagnostic qui peuvent vous aider à résoudre les problèmes.

Utiliser la page "Diagnostic" pour résoudre les problèmes de connexion

La page "Diagnostic" fournit un résumé de l'authentification, divisé en trois sections:

  • État: contient Success ou Failed, selon que l'authentification a réussi ou non.

  • Identity Provider (Fournisseur d'identité) : contient des informations sur le fournisseur utilisé pour la connexion, telles que Name, Client ID et UserClaim.

  • Jeton d'identification: contient des informations sur le jeton d'identification extrait par GKE Identity Service à l'aide du fournisseur donné. Le jeton d'ID est un objet JSON contenant un ensemble de paires clé-valeur. Les clés peuvent inclure iss, aud, sub et email.

Résoudre les problèmes d'authentification réussie

Si le contenu de la section État indique que l'authentification a réussi et que le problème persiste, il est possible que des contrôles d'accès basés sur les rôles (RBAC, Role-Based Access Control) soient manquants. Pour plus d'informations sur le dépannage, consultez Les autorisations RBAC pour les groupes ne fonctionnent pas pour les fournisseurs OIDC.

Résoudre les échecs d'authentification

Si le contenu de la section État indique que l'authentification a échoué, commencez par rechercher des incohérences entre les sections Identity Provider (Fournisseur d'identité) et ID Token (Jeton d'ID).

Voici quelques exigences d'authentification que vous devez vérifier:

  • Si le champ UserClaim de Identity Provider (Fournisseur d'identité) est vide, la section ID Token (Jeton d'ID) doit contenir un champ nommé sub. Un champ sub manquant indique qu'un problème est lié au jeton d'identité.

  • La valeur du champ UserClaim dans Identity Provider (Fournisseur d'identité) doit être une clé dans la section ID Token (Jeton d'ID). Par exemple, si le champ UserClaim est défini sur email, un champ nommé email doit être présent dans le jeton d'ID.

  • La valeur du champ GroupsClaim dans Identity Provider doit être une clé dans ID Token. Par exemple, si le champ GroupsClaim est défini sur groupsList (pour un fournisseur compatible avec les groupes), un champ nommé groupsList doit être présent dans le jeton d'ID.

  • La valeur du champ Client ID dans Identity Provider (Fournisseur d'identité) doit être incluse dans la valeur du champ aud dans la section ID Token (Jeton d'identité).

Si l'une des conditions précédentes n'est pas remplie, consultez l'un des guides suivants pour savoir comment configurer correctement vos clusters avec GKE Identity Service:

Utiliser les journaux pour poursuivre le dépannage

Les journaux du pod GKE Identity Service contiennent des informations de débogage supplémentaires. Pour utiliser les journaux de pod GKE Identity Service:

  1. Activez le journal de débogage de GKE Identity Service.

  2. Consultez le journal du conteneur GKE Identity Service.