Options d'installation avancées

Cette rubrique vous fournit deux options d'installation supplémentaires pour l'installation de Config Connector sur votre cluster Google Kubernetes Engine (GKE) :

  • Installation manuelle : l'installation à l'aide de la méthode manuelle permet des mises à jour plus rapides que le module complémentaire. Cette méthode fournit également davantage d'options de configuration. Par exemple, vous pouvez augmenter la limite de processeur de l'opérateur Config Connector.
  • Mode espace de noms : cette méthode est une extension de l'installation de Config Connector. Le mode espace de noms permet la gestion de plusieurs projets, chacun avec ses propres identités Google Cloud.

Pour en savoir plus sur ces types d'installation, consultez la section Choisir un type d'installation.

Installer manuellement l'opérateur Config Connector

Les sections suivantes vous expliquent comment installer manuellement l'opérateur Config Connector.

Avant de commencer

Avant d'installer manuellement l'opérateur Config Connector, procédez comme suit :

Installer l'opérateur Config Connector

Config Connector utilise un opérateur Kubernetes pour maintenir à jour l'installation. Pour installer cet opérateur, procédez comme suit :

  1. Téléchargez le dernier fichier tar de l'opérateur Config Connector :

    gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
    .
  2. Extrayez le fichier tar :

    tar zxvf release-bundle.tar.gz
    
  3. Installez l'opérateur Config Connector sur votre cluster :

    kubectl apply -f operator-system/configconnector-operator.yaml
    

Créer une identité

Config Connector crée et gère les ressources Google Cloud en s'authentifiant avec un compte de service de gestion de l'authentification et des accès (IAM) et en utilisant Workload Identity de GKE pour lier des comptes de service IAM aux comptes de service Kubernetes.

Pour créer l'identité, procédez comme suit :

  1. Créer un compte de service IAM Si vous avez un compte de service existant, vous pouvez l'utiliser et ignorer cette étape.

    Pour créer le compte de service, exécutez la commande suivante:
      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner à votre compte de service.
  2. Pour en savoir plus sur la création de comptes de service, consultez la page Créer et gérer des comptes de service.

  3. Accordez au compte de service IAM des autorisations avec privilèges élevés sur votre projet :
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    Remplacez l'élément suivant :
    • PROJECT_ID par votre ID de projet.
    • SERVICE_ACCOUNT_NAME par le nom de votre compte de service.
  4. Créez une liaison de stratégie IAM entre le compte de service IAM et le compte de service Kubernetes prédéfini exécuté par Config Connector :
    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
        --role="roles/iam.workloadIdentityUser"
    Remplacez l'élément suivant :
    • SERVICE_ACCOUNT_NAME par le nom de votre compte de service.
    • PROJECT_ID par votre ID de projet.

Configurer Config Connector

Pour terminer l'installation, créez un fichier de configuration pour la ressource personnalisée ConfigConnector, puis appliquez-la à l'aide de la commande kubectl apply. L'opérateur Config Connector installe les définitions de ressources personnalisées (CRD) de Google Cloud et les composants Config Connector dans votre cluster.

Pour configurer l'opérateur, procédez comme suit :

  1. Copiez le fichier YAML suivant dans un fichier nommé configconnector.yaml :
    # configconnector.yaml
    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only one
      # ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
    
    Remplacez l'élément suivant :
    • SERVICE_ACCOUNT_NAME par le nom de votre compte de service.
    • PROJECT_ID par votre ID de projet.
  2. Appliquez la configuration à votre cluster à l'aide de la commande kubectl apply :
      kubectl apply -f configconnector.yaml

Spécifier l'emplacement où créer les ressources

Config Connector peut organiser les ressources par projet, dossier ou organisation, de la même manière que vous organiseriez les ressources à l'aide de Google Cloud.

Avant de créer des ressources à l'aide de Config Connector, vous devez configurer où créer vos ressources. Pour déterminer où créer la ressource, Config Connector utilise une annotation sur la configuration de la ressource ou un espace de noms existant. Pour en savoir plus, consultez la section Organiser les ressources.

Si vous ne disposez pas d'un espace de noms à cette fin, créez-en un avec kubectl.
kubectl create namespace NAMESPACE

Remplacez NAMESPACE par le nom de votre espace de noms. Par exemple, config-connector.

Sélectionnez un onglet pour choisir où vous souhaitez que Config Connector crée des ressources.

Projet

Pour créer des ressources dans un projet donné, exécutez la commande suivante :

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

Remplacez l'élément suivant :

  • NAMESPACE par le nom de votre espace de noms
  • PROJECT_ID par l'ID de votre projet Google Cloud

Dossier

Pour créer des ressources dans un dossier donné, exécutez la commande suivante :

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

Remplacez l'élément suivant :

  • NAMESPACE par le nom de votre espace de noms
  • FOLDER_ID par l'ID de votre dossier Google Cloud

Organisation

Pour créer des ressources dans une organisation donnée, exécutez la commande suivante :

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

Remplacez l'élément suivant :

  • NAMESPACE par le nom de votre espace de noms
  • ORGANIZATION_ID par l'ID de votre organisation Google Cloud

Lorsque vous annotez votre espace de noms, Config Connector crée des ressources dans le projet, le dossier ou l'organisation correspondant. Pour en savoir plus sur la façon dont Config Connector utilise les espaces de noms Kubernetes, consultez la section Espaces de noms Kubernetes et projets Google Cloud.

Vérifier votre installation

Config Connector exécute tous ses composants dans un espace de noms nommé cnrm-system. Vous pouvez vérifier si les pods sont prêts en exécutant la commande suivante :

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

Si Config Connector est installé correctement, le résultat ressemble à ce qui suit :

pod/cnrm-controller-manager-0 condition met

Mettre à niveau Config Connector

Pour télécharger et installer la dernière version de l'opérateur Config Connector :

gsutil cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

Désinstaller Config Connector

Utilisez kubectl delete pour supprimer les CRD Config Connector et les composants du contrôleur :

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

Pour désinstaller l'opérateur Config Connector, exécutez la commande suivante :

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

Installer Config Connector à l'aide du mode espace de noms

Les sections suivantes expliquent comment activer le mode espace de noms.

Avant de commencer

Avant de configurer Config Connector pour l'exécution en mode espace de noms, assurez-vous d'avoir activé le module complémentaire GKE de Config Connector ou l'opérateur Config Connector installé manuellement.

Configurer Config Connector pour l'exécution en mode espace de noms

Pour activer le mode espace de noms, procédez comme suit :

  1. Copiez le fichier YAML suivant dans un fichier nommé configconnector.yaml :

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: namespaced
    
  2. Appliquez la configuration à votre cluster à l'aide de la commande kubectl apply :

    kubectl apply -f configconnector.yaml
    

Configurer Config Connector pour gérer les ressources de vos espaces de noms

Dans les sections suivantes, le projet Google Cloud sur lequel vous installez Config Connector est appelé projet hôte, ou HOST_PROJECT_ID. Les autres projets dans lesquels vous gérez des ressources sont appelés projets gérés, ou MANAGED_PROJECT_ID. Il peut s'agir du même projet si vous souhaitez uniquement utiliser Config Connector pour créer des ressources Google Cloud dans le projet dans lequel se trouve votre cluster.

Créer un espace de noms

Vous pouvez ignorer cette étape si vous disposez déjà d'un espace de noms à utiliser pour organiser les ressources Google Cloud.

Pour créer un espace de noms, exécutez la commande kubectl suivante :

kubectl create namespace NAMESPACE

Remplacez NAMESPACE par le nom de l'espace de noms.

Créer une identité

Créez un compte de service Identity and Access Management (IAM), puis créez une liaison entre le compte de service IAM et le compte de service Kubernetes de Config Connector :

  1. Créer un compte de service IAM Si vous disposez déjà d'un compte de service, vous pouvez l'utiliser au lieu d'en créer un autre. Pour créer le compte de service, exécutez la commande gcloud suivante :

    gcloud iam service-accounts create NAMESPACE_GSA --project HOST_PROJECT_ID
    

    Remplacez l'élément suivant :

    • NAMESPACE_GSA par le nom du compte de service Google associé à votre espace de noms
    • HOST_PROJECT_ID par l'ID de votre projet hôte

    Pour en savoir plus sur la création de comptes de service, consultez la page Créer et gérer des comptes de service.

  2. Accordez au compte de service IAM des autorisations avec privilèges élevés sur votre projet géré.

    gcloud projects add-iam-policy-binding MANAGED_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/owner"
    

    Remplacez l'élément suivant :

    • MANAGED_PROJECT_ID par l'ID de votre projet géré
    • NAMESPACE_GSA par le nom du compte de service Google associé à votre espace de noms
    • HOST_PROJECT_ID par l'ID de votre projet hôte
  3. Créez une liaison de stratégie IAM entre le compte de service IAM et le compte de service Kubernetes de Config Connector. Vous liez les comptes de service en exécutant la commande gcloud suivante :

    gcloud iam service-accounts add-iam-policy-binding \
    NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com \
        --member="serviceAccount:HOST_PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager-NAMESPACE]" \
        --role="roles/iam.workloadIdentityUser" \
        --project HOST_PROJECT_ID
    

    Remplacez l'élément suivant :

    • HOST_PROJECT_ID par l'ID de votre projet hôte
    • NAMESPACE_GSA par le nom du compte de service Google associé à votre espace de noms
    • NAMESPACE par votre espace de noms
  4. Accordez au compte de service IAM les autorisations nécessaires pour publier des métriques Prometheus dans la suite Google Cloud Operations sur votre projet hôte.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member="serviceAccount:NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/monitoring.metricWriter"
    

    Remplacez l'élément suivant :

    • HOST_PROJECT_ID par l'ID de votre projet hôte
    • NAMESPACE_GSA par le nom du compte de service Google associé à votre espace de noms

Créer un objet ConfigConnectorContext

Pour créer des ressources Google Cloud, vous devez configurer Config Connector pour surveiller votre espace de noms en ajoutant un objet ConfigConnectorContext dans l'espace de noms que vous souhaitez utiliser.

Pour créer un objet ConfigConnectorContext, procédez comme suit :

  1. Copiez le fichier YAML suivant dans un fichier nommé configconnectorcontext.yaml :

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you can only have one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
    

    Remplacez l'élément suivant :

    • NAMESPACE par le nom de votre espace de noms.
    • NAMESPACE_GSA par le nom du compte de service Google associé à votre espace de noms
    • HOST_PROJECT_ID par l'ID de votre projet hôte
  2. Appliquez le fichier à votre cluster à l'aide de la commande kubectl suivante :

    kubectl apply -f configconnectorcontext.yaml
    
  3. Vérifiez que l'opérateur Config Connector a créé un compte de service Kubernetes pour votre espace de noms en exécutant la commande kubectl suivante :

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    

    Remplacez NAMESPACE par le nom de votre espace de noms.

  4. Vérifiez que le pod du contrôleur Config Connector est en cours d'exécution pour votre espace de noms en exécutant la commande kubectl suivante :

    kubectl wait -n cnrm-system \
        --for=condition=Ready pod \
        -l cnrm.cloud.google.com/component=cnrm-controller-manager \
        -l cnrm.cloud.google.com/scoped-namespace=NAMESPACE
    

    Remplacez NAMESPACE par le nom de votre espace de noms.

    Si le contrôleur Config Connector est en cours d'exécution, le résultat ressemble à ce qui suit :

    cnrm-controller-manager-abcdefghijk-0 condition met.
    

Configurer Config Connector pour ne plus gérer les ressources de votre espace de noms

Pour configurer Config Connector de manière à ne plus gérer votre espace de noms, supprimez toutes les ressources Config Connector de votre espace de noms et supprimez ConfigConnectorContext dans votre espace de noms.

Supprimer les ressources Config Connector dans votre espace de noms

Pour finaliser la suppression de ConfigConnectorContext, supprimez toutes les ressources Config Connector de votre espace de noms.

  1. Pour découvrir toutes les ressources Config Connector de votre espace de noms, répertoriez toutes les ressources de chaque définition de connecteur de configuration personnalisée.

    kubectl get crds --selector cnrm.cloud.google.com/managed-by-kcc=true \
    -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' | xargs -n 1 \
    kubectl get -o jsonpath='{range .items[*]}{" Kind: "}{@.kind}{"Name: "}{@.metadata.name}{"\n"}{end}' \
    --ignore-not-found -n NAMESPACE
    

    Remplacez NAMESPACE par le nom de votre espace de noms.

  2. Pour supprimer toutes les ressources Config Connector, exécutez une commande de suppression pour chaque ressource obtenue à l'étape précédente.

    kubectl delete -n NAMESPACE KIND NAME
    

    Remplacez l'élément suivant :

    • NAMESPACE: par le nom de votre espace de noms
    • KIND: genre de la ressource découvert à l'étape précédente
    • NAME: nom de la ressource découvert à l'étape précédente

Supprimer ConfigConnectorContext

Pour configurer Config Connector de façon à ne plus gérer les ressources Config Connector dans votre espace de noms, supprimez ConfigConnectorContext dans votre espace de noms.

  kubectl delete -n NAMESPACE ConfigConnectorContext configconnectorcontext.core.cnrm.cloud.google.com

Remplacez NAMESPACE par le nom de votre espace de noms.

La suppression de ConfigConnectorContext ne se termine pas tant que toutes les ressources Config Connector ne sont pas supprimées de votre espace de noms.

Mettre à niveau des installations sans opérateur

Config Connector version 1.33.0 ou ultérieure ne permet l'installation qu'avec le module complémentaire GKE, ou avec l'opérateur.

Pour mettre à niveau vers l'opérateur (et conserver toutes les ressources de Config Connector), vous devez supprimer tous les composants du système de Config Connector à l'exception des objets CRD, puis installer l'opérateur.

  1. Exécutez les commandes suivantes pour supprimer les composants du système Config Connector à l'exception des objets CRD :

    kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true
    kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    
  2. Installez Config Connector à l'aide du module complémentaire GKE ou de l'opérateur.

Passer du module complémentaire à une installation manuelle

Lorsqu'elle est installée en tant que module complémentaire, la version de Config Connector est directement liée à la version de GKE installée.

L'installation manuelle permet de réaliser des mises à jour plus rapides au prix des mises à niveau manuelles.

Pour changer d'option tout en conservant toutes les ressources en toute sécurité:

  1. Désactivez le module complémentaire sans supprimer d'objets ConfigConnector ou ConfigConnectorContext:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    Remplacez CLUSTER_NAME par le nom du cluster sur lequel vous avez installé Config Connector.

  2. Suivez les instructions pour installer l'opérateur manuel de la version souhaitée.

Dépannage

La section suivante fournit des conseils de dépannage pour l'installation de Config Connector.

Résoudre les problèmes d'autorisation de rapprochement des ressources

Si Config Connector ne parvient pas à rapprocher les ressources avec succès et que les journaux contiennent le message d'erreur The caller does not have permission, forbidden., il est possible que Workload Identity ne soit pas activé sur votre cluster et/ou votre pool de nœuds GKE.

Pour étudier le problème, procédez comme suit:

  1. Enregistrez la configuration de pod suivante sous le nom wi-test.yaml:
    apiVersion: v1
    kind: Pod
    metadata:
      name: workload-identity-test
      namespace: cnrm-system
    spec:
      containers:
      - image: google/cloud-sdk:slim
        name: workload-identity-test
        command: ["sleep","infinity"]
      serviceAccountName: cnrm-controller-manager
    
  2. Créez le pod dans votre cluster GKE:
    kubectl apply -f wi-test.yaml
    
  3. Ouvrez une session interactive dans le pod :
    kubectl exec -it workload-identity-test \
      --namespace cnrm-system \
      -- /bin/bash
    
  4. Affichez votre identité :
    gcloud auth list
    
  5. Vérifiez que l'identité répertoriée correspond au compte de service Google lié à vos ressources.

    Si le compte de service Compute Engine par défaut s'affiche, cela signifie que Workload Identity n'est pas activé sur votre cluster et/ou votre pool de nœuds GKE.

  6. Quittez la session interactive, puis supprimez le pod de votre cluster GKE:
    kubectl delete pod workload-identity-test \
    --namespace cnrm-system
    

Étape suivante