Configurer Config Controller

Cette page vous explique comment configurer Config Controller. Config Controller est un service hébergé qui propose un point de terminaison d'API capable de provisionner, d'activer et d'orchestrer des ressources Google Cloud dans le cadre d'Anthos Config Management. Pour en savoir plus sur Config Controller, consultez la présentation de Config Controller.

Avant de commencer

Avant de configurer Config Controller, vous devez effectuer les étapes suivantes :

  1. Installez et initialisez Google Cloud CLI, qui fournit les commandes gcloud, kubectl et nomos utilisées dans les présentes instructions. Si vous utilisez Cloud Shell, Google Cloud CLI est préinstallé.

    kubectl n'est pas installé par défaut par Google Cloud CLI. Pour installer kubectl, exécutez la commande suivante :

    gcloud components install kubectl
    
  2. Définissez le projet Google Cloud dans lequel Config Controller sera hébergé :

    export PROJECT_ID=PROJECT_ID
    gcloud config set project ${PROJECT_ID}
    

    Remplacez PROJECT_ID par le projet Google Cloud dans lequel Config Controller sera hébergé.

  3. Si vous ne disposez pas d'un réseau par défaut dans votre projet, créez-en un à l'aide de la commande suivante :

    gcloud compute networks create default --subnet-mode=auto
    

    Vous pouvez également sélectionner un autre réseau à l'aide de l'option --network dans la commande gcloud anthos config controller create lorsque vous configurez Config Controller.

Configurer Config Controller

Créez un contrôleur de configuration à l'aide des commandes suivantes de gcloud CLI :

  1. Activez les services sur votre projet pour utiliser les commandes suivantes de gcloud CLI :

    gcloud services enable krmapihosting.googleapis.com \
        container.googleapis.com \
        cloudresourcemanager.googleapis.com
    
  2. Créez votre contrôleur de configuration. Cette opération peut prendre plus de 15 minutes.

    gcloud anthos config controller create CONFIG_CONTROLLER_NAME \
        --location=LOCATION
    

    Remplacez les éléments suivants :

    • CONFIG_CONTROLLER_NAME : nom que vous souhaitez attribuer à votre contrôleur.
    • LOCATION: ajoutez l'une des régions suivantes:

      • us-central1
      • us-east1
      • northamerica-northeast1
      • northamerica-northeast2
      • europe-north1
      • europe-west1
      • europe-west3
      • australia-southeast1
      • australia-southeast2
      • asia-northeast1
      • asia-northeast2

      Aucune autre région n'est acceptée.

    Vous pouvez définir des paramètres facultatifs, tels que --man-block, qui vous permet de spécifier une plage CIDR qui autorise les adresses IP de ces plages à accéder au plan de contrôle de Kubernetes afin de renforcer la sécurité. Pour obtenir la liste complète des options, consultez la documentation gcloud anthos config controller create.

  3. Une fois l'instance créée, elle apparaît dans la liste des instances. Pour afficher la liste des instances, exécutez la commande suivante :

    gcloud anthos config controller list --location=LOCATION
    
  4. Pour appliquer des fichiers manifestes, authentifiez-vous auprès de l'instance :

    gcloud anthos config controller get-credentials CONFIG_CONTROLLER_NAME \
        --location LOCATION
    
  5. Autorisez Config Controller à gérer les ressources Google Cloud dans le projet :

    export SA_EMAIL="$(kubectl get ConfigConnectorContext -n config-control \
        -o jsonpath='{.items[0].spec.googleServiceAccount}' 2> /dev/null)"
    gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
        --member "serviceAccount:${SA_EMAIL}" \
        --role "roles/owner" \
        --project "${PROJECT_ID}"
    

Mettre à niveau Config Controller

Étant donné que Config Controller est un service géré, Google le met à niveau automatiquement. Pour en savoir plus sur les composants et nouvelles fonctionnalités inclus dans chaque version, consultez les notes de version de Config Controller.

Gérer des ressources Google Cloud à l'aide de Config Controller

Une fois que vous avez configuré Config Controller, vous pouvez utiliser Config Connector pour gérer de nombreux services et ressources Google Cloud à l'aide d'outils et d'API Kubernetes. Pour obtenir la liste complète des ressources que vous pouvez gérer, consultez la section Ressources de Config Connector.

Dans cet exemple, vous allez créer un dépôt dans Cloud Source Repositories et l'utiliser dans la section Configurer GitOps.

  1. Créez un fichier nommé service.yaml et copiez-y le fichier YAML ci-dessous :

    # service.yaml
    
    apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
    kind: Service
    metadata:
      name: sourcerepo.googleapis.com
      namespace: config-control
    
  2. Appliquez le fichier manifeste et attendez que Cloud Source Repositories soit activé :

    kubectl apply -f service.yaml
    kubectl wait -f service.yaml --for=condition=Ready
    
  3. Créez un fichier nommé repo.yaml et copiez-y le fichier YAML ci-dessous :

    # repo.yaml
    
    apiVersion: sourcerepo.cnrm.cloud.google.com/v1beta1
    kind: SourceRepoRepository
    metadata:
      name: REPO_NAME
      namespace: config-control
    

    Remplacez REPO_NAME par le nom que vous souhaitez attribuer à Cloud Source Repositories.

  4. Pour créer le dépôt, appliquez le manifeste ci-dessous :

    kubectl apply -f repo.yaml
    

Configurer GitOps

Vous pouvez synchroniser les configurations de votre dépôt Git avec votre Config Controller à l'aide de Config Sync. Dans l'exemple de cette section, vous utilisez les dépôts Cloud Source Repositories que vous avez créés dans la section précédente.

  1. Créez un fichier nommé gitops-iam.yaml et copiez-y le fichier YAML ci-dessous :

    # gitops-iam.yaml
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMServiceAccount
    metadata:
      name: config-sync-sa
      namespace: config-control
    spec:
      displayName: ConfigSync
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: config-sync-wi
      namespace: config-control
    spec:
      member: serviceAccount:PROJECT_ID.svc.id.goog[config-management-system/root-reconciler]
      role: roles/iam.workloadIdentityUser
      resourceRef:
        apiVersion: iam.cnrm.cloud.google.com/v1beta1
        kind: IAMServiceAccount
        name: config-sync-sa
    
    ---
    
    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
      name: allow-configsync-sa-read-csr
      namespace: config-control
    spec:
      member: serviceAccount:config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
      role: roles/source.reader
      resourceRef:
        apiVersion: resourcemanager.cnrm.cloud.google.com/v1beta1
        kind: Project
        external: projects/PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet dans lequel Config Controller est en cours d'exécution.

  2. Pour autoriser Config Sync à accéder au dépôt, appliquez le fichier manifeste :

    kubectl apply -f gitops-iam.yaml
    
  3. Config Controller active automatiquement les API RootSync et RepoSync de Config Sync. Ces API vous donnent accès à des fonctionnalités Config Sync supplémentaires, telles que la synchronisation à partir de plusieurs dépôts et l'affichage automatique des configurations Kustomize et Helm.

    Si vous souhaitez configurer Config Sync, créez un objet RootSync. Pour créer cet objet, créez un fichier nommé root-sync.yaml et copiez-y le texte suivant :

    # root-sync.yaml
    
    apiVersion: configsync.gke.io/v1beta1
    kind: RootSync
    metadata:
      name: root-sync
      namespace: config-management-system
    spec:
      sourceFormat: unstructured
      git:
        repo: https://source.developers.google.com/p/PROJECT_ID/r/REPO_NAME
        branch: REPO_BRANCH
        dir: REPO_PATH
        auth: gcpserviceaccount
        gcpServiceAccountEmail: config-sync-sa@PROJECT_ID.iam.gserviceaccount.com
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet contenant le compte de service et le dépôt Git.
    • REPO_NAME : nom du dépôt Git à partir duquel extraire la configuration et surveiller les modifications.
    • REPO_BRANCH : branche du dépôt à partir de laquelle la synchronisation doit être effectuée. La valeur par défaut est master.
    • REPO_PATH : chemin d'accès du répertoire à synchroniser, associé à la racine du dépôt Git. La valeur par défaut est /.

    Pour en savoir plus sur les champs de root-sync.yaml, consultez la section Champs RootSync et RepoSync.

  4. Pour créer la configuration Config Sync, appliquez le fichier manifeste et attendez qu'il soit créé :

    kubectl apply -f root-sync.yaml
    kubectl wait --for condition=established --timeout=10s crd/rootsyncs.configsync.gke.io
    

Vérifier le bon déroulement de la tâche

Vérifiez la configuration initiale en procédant comme suit :

  1. Vérifiez que tous les contrôleurs ont bien été configurés sur votre Config Controller :

    kubectl wait pod --all --all-namespaces --for=condition=Ready
    
  2. Vérifiez que le dépôt Git est synchronisé avec Config Controller grâce à Config Sync à l'aide de la commande nomos ou de la commande gcloud alpha anthos config sync repo :

    nomos status --contexts $(kubectl config current-context)
    
    # or
    
    gcloud alpha anthos config sync repo list --targets config-controller
    

Supprimer votre contrôleur de configuration

Si vous décidez d'arrêter d'utiliser Config Controller, vous devez nettoyer toutes les ressources créées. Vous devez d'abord supprimer les ressources du contrôleur de configuration avant de le supprimer.

Supprimer votre Config Controller sans d'abord supprimer les ressources provisionnées laisse les ressources dans un état abandonné. Les ressources existent toujours dans Google Cloud (et entraînent des frais de facturation), mais ne sont pas gérées à partir de la configuration déclarative.

Une fois toutes vos ressources supprimées, vous pouvez supprimer Config Controller à l'aide de gcloud CLI :

gcloud anthos config controller delete --location=LOCATION CONFIG_CONTROLLER_NAME

Considérations relatives à la production

Lorsque vous passez à l'environnement de production, vous devez d'abord consulter les points essentiels à prendre en compte liés à la haute disponibilité pour Config Controller.

Étape suivante