Installer Config Connector manuellement

Cette page explique comment installer manuellement Config Connector. L'installation manuelle est une option flexible qui vous permet de contrôler la version installée et le calendrier de mise à niveau.

Pour en savoir plus sur les différentes options d'installation, consultez Choisir un type d'installation.

Dans la plupart des cas d'utilisation, nous vous recommandons d'installer manuellement Config Connector en mode espace de noms. L'autre option est le mode cluster. Le mode espace de noms est plus évolutif et offre une meilleure isolation des autorisations, ce qui est idéal pour les cas d'utilisation multitenants ou lorsque vous gérez des ressources provenant de plusieurs projets.

Si vous préférez un compte de service unique à l'échelle du cluster, suivez plutôt les instructions d'installation en mode cluster.

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. L'installation de l'opérateur est obligatoire, que vous installiez Config Connector en mode espace de noms ou en mode cluster.

Pour installer l'opérateur Config Connector, procédez comme suit :

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

    gcloud storage 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 :

    Autopilot

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

    Standard

    kubectl apply -f operator-system/configconnector-operator.yaml
    
  4. Pour configurer l'opérateur Config Connector afin qu'il s'exécute en mode espace de noms, procédez comme suit :

    1. Créez un fichier manifeste nommé configconnector.yaml avec le contenu suivant :

      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
        stateIntoSpec: Absent
      
    2. Appliquez le fichier manifeste à votre cluster :

      kubectl apply -f configconnector.yaml
      

Installer Config Connector en mode espace de noms

Dans les sections suivantes, le projet sur lequel vous installez Config Connector est le projet hôte. Les autres projets dans lesquels vous pouvez demander à Config Connector de gérer des ressources sont appelés projets gérés. Le projet hôte et le projet géré peuvent être identiques si vous souhaitez que Config Connector ne crée des ressources que dans le même projet que votre cluster.

Créer un espace de noms

Créez un espace de noms en exécutant la commande 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 en procédant comme suit :

  1. Créez 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 MANAGED_PROJECT_ID par l'ID de votre projet géré.

  3. Créez une liaison de stratégie IAM entre le compte de service IAM et le compte de service Kubernetes de Config Connector :

    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"
    
  4. Accordez au compte de service IAM les autorisations nécessaires pour publier des métriques Prometheus dans Google Cloud Observability 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"
    

Créer un ConfigConnectorContext

Pour créer des ressources Google Cloud , configurez Config Connector pour surveiller votre espace de noms en ajoutant un objet ConfigConnectorContext dans cet espace de noms.

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

  1. Créez un fichier manifeste nommé configconnectorcontext.yaml avec le contenu suivant :

    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnectorContext
    metadata:
      # you need one ConfigConnectorContext per namespace
      name: configconnectorcontext.core.cnrm.cloud.google.com
      namespace: NAMESPACE
    spec:
      googleServiceAccount: "NAMESPACE_GSA@HOST_PROJECT_ID.iam.gserviceaccount.com"
      stateIntoSpec: Absent
    
  2. Appliquez le fichier manifeste à votre cluster :

    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 suivante :

    kubectl get serviceaccount/cnrm-controller-manager-NAMESPACE  -n cnrm-system
    
  4. Vérifiez que le pod du contrôleur Config Connector est en cours d'exécution pour votre espace de noms :

    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
    

    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.
    

Arrêter de gérer des ressources dans un espace de noms

Si vous souhaitez que Config Connector cesse de gérer les ressources d'un espace de noms, supprimez toutes les ressources Config Connector et l'objet ConfigConnectorContext de cet espace de noms.

  1. Pour trouver toutes les ressources Config Connector de votre espace de noms, listez toutes les ressources pour chaque définition de ressource personnalisée Config Connector.

    kubectl get gcp -n NAMESPACE
    

    Le résultat de cette commande liste toutes les définitions de ressources personnalisées (CRD) qui représentent une ressource gérée par Config Connector dans cet espace de noms, y compris le nom et le type Kubernetes de cette ressource.

  2. Pour supprimer toutes les ressources Config Connector, exécutez la commande suivante pour chaque ressource dans le résultat de l'étape précédente :

    kubectl delete -n NAMESPACE KIND NAME
    

    Remplacez les éléments suivants :

    • KIND : type Kubernetes de la ressource.
    • NAME : nom de la ressource.
  3. Supprimez l'objet ConfigConnectorContext dans votre espace de noms.

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

Désinstaller Config Connector

Pour désinstaller Config Connector, procédez comme suit :

  1. Pour supprimer les CRD Config Connector et les composants du contrôleur, exécutez la commande suivante :

    kubectl delete ConfigConnectorContext --all -A –wait=false
    
    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Pour désinstaller l'opérateur Config Connector, exécutez la commande suivante :

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

Installer en mode cluster

Vous pouvez préférer installer et gérer Config Connector en mode cluster si vous souhaitez gérer des ressources dans un seul projet et que vous n'avez pas besoin de la séparation des autorisations fournie par le mode espace de noms.

Créer une identité

Config Connector crée et gère les ressources Google Cloud en s'authentifiant avec un compte de service Identity and Access Management (IAM) et en utilisant la fédération d'identité de charge de travail pour GKE afin de lier des comptes de service IAM à des comptes de service Kubernetes.

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

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

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner à votre compte de service.

    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 :

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/editor"
    

    Remplacez PROJECT_ID par l'ID du projet.

  3. 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"
    

Configurer Config Connector

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

Pour configurer l'opérateur en mode cluster, 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"
      # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec`
      # annotation to `absent` for all Config Connector resources created in the cluster in the future.
      # It prevents Config Connector from populating unspecified fields into the spec.
      stateIntoSpec: Absent
    Remplacez les éléments suivants :
    • 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 avec 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 Espaces de noms Kubernetes et projets Google Cloud .

Vérifier votre installation

Config Connector exécute tous ses composants dans un espace de noms appelé 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

Désinstaller Config Connector

Pour désinstaller Config Connector, procédez comme suit :

  1. Pour supprimer les CRD Config Connector et les composants du contrôleur, exécutez la commande suivante :

    kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
        --wait=true
    
  2. Pour désinstaller l'opérateur Config Connector, exécutez la commande suivante :

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

Mettre à niveau Config Connector

Pour télécharger et installer la dernière version de l'opérateur Config Connector, exécutez la commande suivante :

gcloud storage 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

Rétrograder Config Connector

Il n'est pas possible de rétrograder complètement Config Connector. Pour revenir à une version antérieure de l'opérateur et des CRD Config Connector, vous devez désinstaller et réinstaller Config Connector, puis appliquer de nouveau vos ressources.

Dans Config Connector version 1.123.1 et ultérieures, vous pouvez rétablir la version de l'opérateur pour les installations qui utilisent le mode espace de noms. Dans chaque espace de noms contenant un opérateur que vous souhaitez annuler, définissez le champ spec.version de l'objet ConfigConnectorContext sur la version précédente de Config Connector.

Vous pouvez rétablir le contrôleur Config Connector sur un maximum de trois versions mineures. Vous devez toujours revenir à la dernière version du correctif pour une version mineure donnée.

Mettre à niveau à partir d'installations non liées à des opérateurs

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 des mises à jour plus rapides au prix de mises à niveau manuelles.

Pour changer de méthode d'installation et conserver vos ressources en toute sécurité, procédez comme suit :

  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. Installez l'opérateur manuel de la version choisie.

    Pour éviter d'éventuelles erreurs de validation CRD (par exemple, KNV2009: Invalid value: "v1beta1": must appear in spec.versions), la version choisie de l'opérateur manuel doit être identique ou ultérieure à celle que vous utilisiez pour le module complémentaire. La rétrogradation de la version manuelle de l'opérateur peut entraîner des erreurs (par exemple, KNV2009), car le module complémentaire GKE peut déjà avoir mis à niveau certains CRD vers une version ultérieure de Config Connector.

Étapes suivantes