Personnaliser votre installation de Config Sync

Avec Config Sync, vous pouvez gérer vos ressources Kubernetes en synchronisant les configurations à partir d'une source fiable centrale, telle qu'un dépôt Git, une image OCI ou un chart Helm. Si les instructions d'installation par défaut ne répondent pas à vos besoins, vous devrez peut-être personnaliser votre installation de Config Sync.

Cette page vous explique comment effectuer une installation et une configuration avancées de Config Sync. Le processus d'installation comprend les éléments suivants :

  • Installer Config Sync sur des clusters individuels à l'aide de la consoleGoogle Cloud , de Google Cloud CLI ou de Terraform.
  • Configurer votre dépôt racine, y compris le type de source, le format et l'authentification.
  • Vérifier que Config Sync a bien été installé et configuré

Limites

Config Sync ne permet pas de configurer helm en tant que type de source à l'aide de la console Google Cloud ou de Google Cloud CLI. Vous pouvez configurer la synchronisation de votre objet RootSync ou RepoSync à partir d'un dépôt Helm à l'aide de l'API Kubernetes, ou le déclarer dans une autre source fiable. Pour en savoir plus, consultez Configuration du dépôt Helm.

Avant de commencer

Avant d'installer Config Sync, préparez votre source de vérité et un cluster adapté.

Accorder à Config Sync l'accès à votre source de vérité

Pour synchroniser la configuration d'une source de vérité avec vos clusters, Config Sync a besoin d'un accès en lecture seule à votre dépôt. Pour autoriser Config Sync à lire vos configurations, procédez comme suit :

Examiner les exigences des clusters

Avant de créer un cluster, consultez les exigences relatives aux clusters.

Installer Config Sync

Lorsque vous installez Config Sync à l'aide de la console Google Cloud ou de Google Cloud CLI, Config Sync crée automatiquement un objet RootSync appelé root-sync. Vous pouvez utiliser les commandes kubectl pour modifier root-sync et ajouter d'autres configurations Config Sync. Pour en savoir plus, consultez Configurer Config Sync avec les commandes kubectl.

Console

Installer Config Sync

Pour installer Config Sync, tous les clusters doivent être enregistrés dans un parc. Lorsque vous installez Config Sync dans la console Google Cloud , la sélection de clusters individuels enregistre automatiquement ces clusters dans votre parc.

  1. Dans la console Google Cloud , accédez à la page Configuration sous la section Fonctionnalités.

    Accéder à la page "Configuration"

  2. Cliquez sur Installer Config Sync.
  3. Sélectionnez la version de Config Sync que vous souhaitez utiliser.
  4. Sous Options d'installation, sélectionnez l'une des options suivantes :
    • Installer Config Sync sur l'ensemble du parc (recommandé) : Config Sync est installé sur tous les clusters du parc.
    • Installer Config Sync sur des clusters individuels : Config Sync est installé sur les clusters que vous sélectionnez. Tous les clusters sélectionnés sont automatiquement enregistrés dans votre parc.
  5. Si vous installez Config Sync sur des clusters individuels, dans le tableau Clusters disponibles, sélectionnez les clusters sur lesquels vous souhaitez installer Config Sync.
  6. Cliquez sur Installer Config Sync. Dans l'onglet Paramètres, après quelques minutes, Activé devrait s'afficher dans la colonne État pour les clusters de votre parc.

Déployer un package

Une fois que vous avez enregistré vos clusters dans un parc et installé Config Sync, vous pouvez configurer Config Sync pour déployer un package sur un cluster à partir d'une source fiable. Vous pouvez déployer le même package sur plusieurs clusters ou déployer différents packages sur différents clusters. Vous pouvez modifier un package après l'avoir déployé, à l'exception de certains paramètres tels que le nom du package et le type de synchronisation. Pour en savoir plus, consultez Gérer les packages.

Pour déployer un package, procédez comme suit :

  1. Dans la console Google Cloud , accédez au tableau de bord Config Sync.

    Accéder au tableau de bord Config Sync

  2. Cliquez sur Déployer le package.

  3. Dans le tableau Sélectionner des clusters pour le déploiement du package, sélectionnez le cluster sur lequel vous souhaitez déployer un package, puis cliquez sur Continuer.

  4. Sélectionnez Package hébergé sur Git ou Package hébergé sur OCI comme type de source, puis cliquez sur Continuer.

  5. Dans la section Détails du package, saisissez un nom de package qui identifie l'objet RootSync ou RepoSync.

  6. Dans le champ Type de synchronisation, choisissez Synchronisation à l'échelle du cluster ou Synchronisation à l'échelle de l'espace de noms comme type de synchronisation.

    La synchronisation à l'échelle du cluster crée un objet RootSync, tandis que la synchronisation à l'échelle de l'espace de noms crée un objet RepoSync. Pour en savoir plus sur ces objets, consultez Architecture de Config Sync.

  7. Dans la section Source, configurez les éléments suivants :

    • Pour les sources hébergées dans un dépôt Git, renseignez les champs suivants :

      1. Dans le champ URL du dépôt, saisissez l'URL du dépôt Git que vous utilisez comme source de vérité.
      2. Facultatif : Mettez à jour le champ Révision pour vérifier si vous n'utilisez pas la valeur par défaut HEAD.
      3. Facultatif : Mettez à jour le champ Chemin d'accès si vous ne souhaitez pas synchroniser à partir du dépôt racine.
      4. Facultatif : mettez à jour le champ Branche si vous n'utilisez pas la branche main par défaut.
    • Pour les sources hébergées dans une image OCI, saisissez les champs suivants :

      1. Saisissez l'URL de l'image OCI que vous utilisez comme source fiable en tant qu'image.
      2. Saisissez le chemin du répertoire à synchroniser, associé au répertoire racine, dans le champ Répertoire.
  8. Facultatif : Développez la section Paramètres avancés pour effectuer les opérations suivantes :

    1. Sélectionnez un type d'authentification. Config Sync a besoin d'un accès en lecture seule à votre source fiable pour lire les fichiers de configuration de la source et les appliquer à vos clusters. À moins que votre source ne nécessite aucune authentification, telle qu'un dépôt public, veillez à accorder à Config Sync un accès en lecture seule à votre dépôt Git, Image OCI ougraphique Helm (gcloud CLI uniquement). Choisissez le même type d'authentification que celui configuré lors de l'installation de Config Sync :

      • Aucune : n'utilisez aucune authentification
      • SSH : authentifiez-vous à l'aide d'une paire de clés SSH.
      • Cookiefile : authentifiez-vous à l'aide d'un fichier cookiefile.
      • Jeton : authentifiez-vous à l'aide d'un jeton d'accès ou d'un mot de passe.
      • Google Cloud Repository : utilisez un compte de service Google pour accéder à Cloud Source Repositories. Ne sélectionnez cette option que si Workload Identity Federation for GKE n'est pas activé dans votre cluster.
      • Workload Identity : utilisez un compte de service Google pour accéder à un dépôt Cloud Source Repositories.
    2. Saisissez un nombre en secondes pour définir le temps d'attente de la synchronisation, qui détermine la durée pendant laquelle Config Sync attend entre les tentatives d'extraction à partir de la source fiable.

    3. Saisissez une URL de proxy Git pour le proxy HTTPS à utiliser lors de la communication avec la source de vérité.

    4. Choisissez Hiérarchie pour modifier le format source.

      La valeur par défaut Non structuré est recommandée dans la plupart des cas, car elle vous permet d'organiser votre source de vérité comme vous le souhaitez.

  9. Cliquez sur Déployer le package.

    Vous êtes redirigé vers la page Packages de Config Sync. Après quelques minutes, Synchronisé doit s'afficher dans la colonne État de synchronisation du cluster que vous avez configuré.

gcloud

Avant de continuer, assurez-vous d'avoir enregistré vos clusters dans un parc.

  1. Activez la fonctionnalité de parc ConfigManagement :

    gcloud beta container fleet config-management enable
    
  2. Préparez la configuration en créant un fichier nommé apply-spec.yaml et en y copiant le fichier YAML suivant.

    Vous pouvez définir tous les champs spec.configSync facultatifs dont vous avez besoin lorsque vous créez votre fichier manifeste, puis utiliser les commandes kubectl pour la configuration. Vous pouvez également définir uniquement le champ spec.configSync.enabled sur true et omettre les champs facultatifs. Vous pourrez ensuite utiliser les commandes kubectl pour créer d'autres objets RootSync ou RepoSync que vous pourrez gérer entièrement à l'aide des commandes kubectl.

    # apply-spec.yaml
    
         applySpecVersion: 1
         spec:
           configSync:
             enabled: true
             # If you don't have a source of truth yet, omit the
             # following fields. You can configure them later.
             sourceType: SOURCE_TYPE
             sourceFormat: FORMAT
             syncRepo: REPO
             syncRev: REVISION
             secretType: SECRET_TYPE
             gcpServiceAccountEmail: EMAIL
             metricsGcpServiceAccountEmail: METRICS_EMAIL
             policyDir: DIRECTORY
             preventDrift: false
    

    Remplacez les éléments suivants :

    • SOURCE_TYPE : ajoutez git pour synchroniser à partir d'un dépôt Git, oci pour synchroniser à partir d'une image OCI ou helm pour effectuer la synchronisation à partir d'un chart Helm. Si aucune valeur n'est spécifiée, la valeur par défaut est git.
    • FORMAT : ajoutez unstructured pour utiliser un dépôt non structuré ou hierarchy pour utiliser un dépôt hiérarchique. Ces valeurs sont sensibles à la casse. Ce champ est facultatif et la valeur par défaut est hierarchy. Nous vous recommandons d'ajouter la valeur unstructured, car ce format vous permet d'organiser vos configurations de la manière la plus adaptée à vos besoins.
    • REPO : ajoutez l'URL de la source fiable. Les URL des dépôts Git et Helm utilisent le protocole HTTPS ou SSH. Exemple : https://github.com/GoogleCloudPlatform/anthos-config-management-samples. Si vous prévoyez d'utiliser SSH en tant que secretType, saisissez votre URL avec le protocole SSH. Ce champ est obligatoire. Si vous ne saisissez pas de protocole, l'URL est traitée comme une URL HTTPS.

      Les URL OCI utilisent le format suivant : LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME. Par défaut, l'image est extraite du tag latest, mais vous pouvez récupérer les images par TAG ou DIGEST à la place. Spécifiez TAG ou DIGEST dans PACKAGE_NAME :

      • Pour extraire par TAG : LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME:TAG
      • Pour extraire par DIGEST : LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME@sha256:DIGEST
    • REVISION : révision Git (tag ou hachage) ou nom de branche à partir desquels la synchronisation doit être effectuée. Lorsque vous utilisez un hachage, il doit s'agir d'un hachage complet et non d'une forme abrégée.

    • SECRET_TYPE : l'une des options secretTypes suivantes :

      git

      • none : n'utilisez aucune authentification
      • ssh : utilisez une paire de clés SSH.
      • cookiefile : utilisez un cookiefile
      • token : utilisez un jeton
      • gcpserviceaccount : utilisez un compte de service Google pour accéder à un dépôt Cloud Source Repositories ou Secure Source Manager. Si vous sélectionnez ce type d'authentification, vous devez créer une liaison de stratégie IAM une fois la configuration de Config Sync terminée. Pour en savoir plus, consultez l'onglet "Compte de service Google" de la section Accorder à Config Sync l'accès à Git avec un compte de service Google.
      • gcenode : utilisez un compte de service Google pour accéder à Cloud Source Repositories. Ne sélectionnez cette option que Workload Identity Federation for GKE n'est pas activé dans votre cluster.
      • githubapp : utilisez une application GitHub pour vous authentifier auprès d'un dépôt GitHub.

      Pour en savoir plus sur ces types d'authentification, consultez Accorder à Config Sync un accès à Git.

      OCI

      • none : n'utiliser aucune authentification
      • gcenode : utilisez le compte de service Compute Engine par défaut pour accéder à une image dans Artifact Registry. Ne sélectionnez cette option que si Workload Identity Federation for GKE n'est pas activé dans votre cluster.
      • gcpserviceaccount : utilisez un compte de service Google pour accéder à une image.

      helm

      • token : utilisez un jeton
      • gcenode : utilisez le compte de service Compute Engine par défaut pour accéder à une image dans Artifact Registry. Ne sélectionnez cette option que si Workload Identity Federation for GKE n'est pas activé dans votre cluster.
      • gcpserviceaccount : utilisez un compte de service Google pour accéder à une image.
      • EMAIL : si vous avez ajouté gcpserviceaccount comme secretType, ajoutez l'adresse e-mail de votre compte de service Google. Par exemple, acm@PROJECT_ID.iam.gserviceaccount.com.

      • METRICS_EMAIL : adresse e-mail du compte de service Google Cloud(GSA) utilisé pour exporter les métriques Config Sync vers Cloud Monitoring. Le GSA doit disposer du rôle IAM Rédacteur de métriques Monitoring (roles/monitoring.metricWriter). Le compte de service Kubernetes default dans l'espace de noms config-management-monitoring doit être lié au GSA.

      • DIRECTORY : chemin d'accès du répertoire à synchroniser, associé à la racine du dépôt Git. Tous les sous-répertoires du répertoire que vous spécifiez sont inclus et synchronisés avec le cluster. La valeur par défaut est le répertoire racine du dépôt.

    Pour obtenir la liste complète des champs que vous pouvez ajouter au champ spec, consultez la section Champs gcloud.

  3. Appliquez le fichier apply-spec.yaml. Si vous utilisez un fichier manifeste existant, vous devez appliquer le fichier au cluster que vous souhaitez configurer avec les paramètres que vous avez récupérés dans la commande précédente :

    gcloud beta container fleet config-management apply \
        --membership=MEMBERSHIP_NAME \
        --config=CONFIG_YAML_PATH \
        --project=PROJECT_ID
    

    Remplacez les éléments suivants :

    • MEMBERSHIP_NAME : nom de l'appartenance que vous avez choisi lors de l'enregistrement de votre cluster. Vous pouvez trouver le nom avec gcloud container fleet memberships list.
    • CONFIG_YAML_PATH : chemin d'accès à votre fichier apply-spec.yaml
    • PROJECT_ID : ID de votre projet.

Terraform

Pour chaque cluster sur lequel vous souhaitez configurer Config Sync, appliquez un bloc de ressources google_gkehub_feature_membership contenant un bloc configmanagement et config_sync, comme dans l'exemple suivant :

git

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      git {
        sync_repo   = "REPO"
        sync_branch = "BRANCH"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Remplacez les éléments suivants :

  • REPO : URL du dépôt Git contenant vos fichiers de configuration.
  • BRANCH : branche du dépôt, par exemple main.
  • DIRECTORY : chemin d'accès dans le dépôt Git qui représente le niveau supérieur du dépôt que vous souhaitez synchroniser.
  • SECRET : type d'authentification du secret.

OCI

data "google_project" "default" {}

resource "google_container_cluster" "default" {
  name     = "gke-autopilot-basic"
  location = "us-central1"

  fleet {
    project = data.google_project.default.project_id
  }

  enable_autopilot = true
}

resource "google_gke_hub_feature" "configmanagement_feature" {
  name     = "configmanagement"
  location = "global"
}

resource "google_gke_hub_feature_membership" "configmanagement_feature_member" {
  location = "global"

  feature             = google_gke_hub_feature.configmanagement_feature.name
  membership          = google_container_cluster.default.fleet[0].membership_id
  membership_location = google_container_cluster.default.fleet[0].membership_location

  configmanagement {
    config_sync {
      # The field `enabled` was introduced in Terraform version 5.41.0, and
      # needs to be set to `true` explicitly to install Config Sync.
      enabled = true
      oci {
        sync_repo   = "REPO"
        policy_dir  = "DIRECTORY"
        secret_type = "SECRET"
      }
    }
  }
}

Remplacez les éléments suivants :

  • REPO : URL du dépôt d'images OCI contenant vos fichiers de configuration.
  • DIRECTORY : chemin absolu du répertoire contenant les ressources que vous souhaitez synchroniser. Pour utiliser le répertoire racine, laissez ce champ vide.
  • SECRET : type d'authentification du secret.

Répétez cette procédure pour chaque cluster que vous souhaitez synchroniser.

Pour en savoir plus sur l'utilisation de Terraform, consultez la page Compatibilité de Terraform avec Config Sync.

Une fois que vous avez configuré votre dépôt racine, vous pouvez éventuellement configurer la synchronisation à partir de plusieurs dépôts, y compris d'autres dépôts racines et d'autres dépôts d'espaces de noms. Les dépôts d'espaces de noms sont utiles si vous souhaitez un dépôt contenant des configurations au niveau d'un espace de noms synchronisées avec un espace de noms particulier sur les clusters.

Vérifiez l'installation

Une fois que vous avez installé et configuré Config Sync, vous pouvez vérifier que l'installation s'est bien déroulée.

gcloud

Exécutez la commande suivante :

nomos status

Une installation réussie présente l'état SYNCED ou PENDING.

Pour en savoir plus sur les informations fournies par nomos status, y compris les erreurs signalées, consultez Vérifier l'état de Config Sync dans la documentation de l'outil de ligne de commande nomos.

Console

Procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Configuration sous la section Fonctionnalités.

    Accéder à la page "Configuration"

  2. Dans l'onglet Packages, vérifiez la colonne Sync status (État de la synchronisation) dans le tableau du cluster. Une installation réussie de Config Sync présente l'état Installé. Une source de vérité correctement configurée présente l'état Synchronisé.

Étapes suivantes