Installer sur d'autres distributions Kubernetes


Cette page explique comment installer Config Connector sur une distribution Kubernetes autre que Google Kubernetes Engine (GKE) sur Google Cloud, par exemple GKE sur AWS.

Avant de commencer

Avant de commencer, effectuez les tâches suivantes :

Installer Config Connector

Pour installer Config Connector dans un autre environnement Kubernetes, après avoir créé ou identifié un cluster Kubernetes, créez un compte Identity and Access Management (IAM), puis installez les composants Config Connector sur votre cluster.

Créer un objet ClusterRoleBinding

Config Connector a besoin d'une autorisation pour créer des rôles Kubernetes avant de pouvoir créer des ressources.

Vérifiez que vous pouvez créer des rôles en exécutant la commande suivante.

kubectl auth can-i create roles

Si le résultat est yes, passez à la section Créer une identité.

Si le résultat est no, créez un ClusterRoleBinding dans votre cluster, qui vous permet de créer des rôles:

kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole cluster-admin \
    --user ACCOUNT_EMAIL

Remplacez ACCOUNT_EMAIL par l'adresse e-mail que vous utilisez pour vous connecter à votre compte de facturation Cloud.

Le résultat doit contenir l'expression cluster-admin-binding created. Si cette expression ne s'affiche pas, contactez votre administrateur de compte de facturation Cloud ou de cluster GKE pour obtenir des informations sur les autorisations.

Créer une identité

Config Connector a besoin d'une identité Cloud Identity pour communiquer avec d'autres ressources. Pour configurer l'identité, vous devez créer un compte de service IAM et une clé de compte de service. Ensuite, vous devez importer les identifiants de la clé en tant que secret dans chaque cluster qui exécute Config Connector.

Dans la prochaine série d'instructions, vous importerez une clé d'identifiants de compte de service Google Cloud dans le cluster Kubernetes. L'importation d'identifiants de compte de service directement dans un cluster est généralement considérée comme non sécurisée, en particulier si vous exécutez des charges de travail tierces ou personnalisées dans le même cluster. Cette approche peut potentiellement tirer parti des failles de remontée de nœuds à cluster et emprunter l'identité du compte de service Google Cloud par le biais de ce secret. Si vous utilisez un cluster GKE, nous vous recommandons d'utiliser Workload Identity.

Créer un compte de service

Pour créer un compte de service, procédez comme suit :

  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.

    Utilisez la gcloud CLI pour créer le compte de service en exécutant la commande suivante:

     gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    Remplacez SERVICE_ACCOUNT_NAME par le nom de 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/owner"
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud
    • SERVICE_ACCOUNT_NAME par le nom de votre compte de service.
  3. Créez une clé de compte de service et exportez ses identifiants vers un fichier nommé key.json.

    gcloud iam service-accounts keys create --iam-account \
        SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com key.json
    

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME par le nom de votre compte de service.
    • PROJECT_ID par l'ID de votre projet Google Cloud

Appliquer les identifiants à votre cluster

Pour appliquer les identifiants au cluster sur lequel vous souhaitez exécuter Config Connector, procédez comme suit :

  1. Créez l'espace de noms cnrm-system :

    kubectl create namespace cnrm-system
    
  2. Importez les identifiants de la clé en tant que secret.

    kubectl create secret generic SECRET_NAME \
        --from-file key.json \
        --namespace cnrm-system
    

    Remplacez SECRET_NAME par le nom que vous souhaitez attribuer à votre secret.

  3. Supprimez les identifiants de votre système.

    rm key.json
    

Installer l'opérateur Config Connector

Procédez comme suit pour installer l'opérateur Config Connector :

  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
    

Configurer Config Connector

Pour installer Config Connector à l'aide de l'opérateur, vous devez créer un fichier de configuration pour la ressource CustomResource ConfigConnector, puis l'appliquer à l'aide de la commande kubectl apply.

Pour configurer Config Connector à l'aide de l'opérateur :

  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
      # instance installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
     mode: cluster
     credentialSecretName: SECRET_NAME
    

    Remplacez SECRET_NAME par le nom du secret que vous avez créé précédemment.

  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 les éléments suivants :

  • 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 les éléments suivants :

  • 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 les éléments suivants :

  • 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 correctement installé, le résultat ressemble à ce qui suit:

pod/cnrm-controller-manager-0 condition met

Mettre à niveau Config Connector

Pour mettre à niveau Config Connector, téléchargez et installez 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

Étapes suivantes