Créer des clusters hybrides

Dans Google Distributed Cloud, les clusters hybrides jouent le double rôle de cluster d'administrateur et de cluster d'utilisateur. Ils exécutent des charges de travail et, en même temps, gèrent d'autres clusters.

Les clusters hybrides éliminent la nécessité d'exécuter un cluster d'administrateur distinct dans les scénarios à ressources limitées et peuvent offrir une fiabilité disponibilité élevée. Dans un cluster hybride à haute disponibilité, si un nœud tombe en panne, d'autres le remplaceront.

Les clusters hybrides sont différents des clusters autonomes, dans la mesure où ils peuvent également gérer d'autres clusters. Les clusters autonomes ne peuvent pas créer ni gérer d'autres clusters.

Cependant, lorsque vous créez des clusters hybrides, il existe un compromis entre flexibilité et sécurité. Étant donné que les clusters hybrides se gèrent eux-mêmes, l'exécution de charges de travail sur le même cluster augmente le risque d'exposition de la sécurité aux données administratives sensibles, telles que les clés SSH.

Vous créez un cluster hybride avec un plan de contrôle haute disponibilité à l'aide de la commande bmctl. La commande bmctl peut être exécutée sur un poste de travail distinct ou sur l'un des nœuds du cluster hybride.

Prérequis

  • La dernière version de bmctl est téléchargée (gs://anthos-baremetal-release/bmctl/1.29.100-gke.251/linux-amd64/bmctl) à partir de Cloud Storage.
  • Le poste de travail qui exécute bmctl dispose d'une connectivité réseau à tous les nœuds du cluster hybride cible.
  • La station de travail exécutant bmctl dispose d'une connectivité réseau à l'adresse IP virtuelle du plan de contrôle du cluster hybride cible.
  • La clé SSH utilisée pour créer le cluster hybride est disponible depuis la racine ou l'utilisateur dispose d'un accès SUDO à tous les nœuds du cluster hybride cible.
  • Le compte de service Connect-register est configuré pour être utilisé avec Connect.

Consultez le guide de démarrage rapide de Google Distributed Cloud pour obtenir des instructions détaillées sur la création d'un cluster hybride.

Activer SELinux

Si vous souhaitez activer SELinux pour sécuriser vos conteneurs, vous devez vous assurer que SELinux est activé en mode Enforced sur toutes vos machines hôtes. À partir de la version 1.9.0 de Google Distributed Cloud ou version ultérieure, vous pouvez activer ou désactiver SELinux avant ou après la création ou la mise à niveau du cluster. SELinux est activé par défaut sur Red Hat Enterprise Linux (RHEL). Si SELinux est désactivé sur vos machines hôtes ou si vous n'êtes pas sûr, consultez la section Sécuriser vos conteneurs à l'aide de SELinux pour savoir comment l'activer.

Google Distributed Cloud n'est compatible avec SELinux que dans les systèmes RHEL.

Se connecter à gcloud et créer un fichier de configuration de cluster

  1. Connectez-vous à la gcloud CLI en tant qu'utilisateur à l'aide de gcloud auth application-default login:

    gcloud auth application-default login
    

    Vous devez disposer d'un rôle de propriétaire ou d'éditeur de projet pour utiliser les fonctionnalités d'activation automatique des API et de création de comptes de service, décrites dans les sections suivantes.

    Vous pouvez également ajouter les rôles IAM suivants à l'utilisateur :

    • Administrateur de compte de service
    • Administrateur de clés de compte de service
    • Administrateur de projet IAM
    • Lecteur de Compute
    • Administrateur Service Usage

    Si vous disposez déjà d'un compte de service avec ces rôles, exécutez la commande suivante :

    export GOOGLE_APPLICATION_CREDENTIALS=JSON_KEY_FILE
    

    Remplacez JSON_KEY_FILE par le chemin d'accès au fichier de clé JSON de votre compte de service.

  2. Obtenez l'ID du projet Cloud à utiliser avec la création de cluster :

    export CLOUD_PROJECT_ID=$(gcloud config get-value project)
    

Créer le fichier de configuration du cluster avec bmctl

Une fois que vous êtes connecté à la gcloud CLI et que votre projet est configuré, vous pouvez créer le fichier de configuration du cluster à l'aide de la commande bmctl.

Pour créer un fichier de configuration de cluster:

  1. Exécutez la commande suivante pour créer le fichier de configuration du cluster, tous les comptes de service nécessaires et activer toutes les API requises:

    bmctl create config -c CLUSTER_NAME</var> --enable-apis \
        --create-service-accounts --project-id=CLOUD_PROJECT_ID
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME: nom du cluster que vous créez.
    • CLOUD_PROJECT_ID : ID de votre projet Google Cloud

    Par défaut, le fichier de configuration est écrit dans bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml.

    Si vous avez déjà activé des API et créé des comptes de service, vous pouvez créer des fichiers de configuration sans activer d'API ni créer de comptes de service. Vous n'êtes pas non plus obligé d'utiliser l'option --project-id. Toutefois, vous devrez spécifier manuellement les identifiants dans le fichier de configuration.

    Pour en savoir plus sur les options de commande, consultez la section Créer une configuration.

Modifier le fichier de configuration du cluster

Maintenant que vous disposez d'un fichier de configuration de cluster, modifiez-le pour apporter les modifications suivantes:

  1. Fournissez la clé privée SSH pour accéder aux nœuds du cluster hybride :

    # bmctl configuration variables. Because this section is valid YAML but not a valid Kubernetes
    # resource, this section can only be included when using bmctl to
    # create the initial admin/hybrid cluster. Afterwards, when creating user clusters by directly
    # applying the cluster and node pool resources to the existing cluster, you must remove this
    # section.
    gcrKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
    sshPrivateKeyPath: /path/to/your/ssh_private_key
    gkeConnectAgentServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
    gkeConnectRegisterServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
    cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
    
  2. Enregistrez vos clusters dans un parc. L'ID de projet que vous avez spécifié dans la commande bmctl create config est automatiquement ajouté au champ gkeConnect.projectID dans le fichier de configuration du cluster. Ce projet est appelé projet hôte du parc.

    • Si vous avez créé votre fichier de configuration à l'aide des fonctionnalités d'activation automatique d'API et de création de compte de service, vous pouvez ignorer cette étape.
    • Si vous avez créé le fichier de configuration sans utiliser les fonctionnalités d'activation automatique d'API et de création de compte de service, référencez les clés JSON du compte de service téléchargées dans les champs gkeConnectAgentServiceAccountKeyPath et gkeConnectRegisterServiceAccountKeyPath correspondants du fichier de configuration du cluster.
  3. Modifiez la configuration pour spécifier le type de cluster hybrid au lieu de admin :

    spec:
      # Cluster type. This can be:
      #   1) admin:  to create an admin cluster. This can later be used to create user clusters.
      #   2) user:   to create a user cluster. Requires an existing admin cluster.
      #   3) hybrid: to create a hybrid cluster that runs admin cluster components and user workloads.
      #   4) standalone: to create a cluster that manages itself, runs user workloads, but does not manage other clusters.
      type: hybrid
    
  4. Modifiez la configuration pour spécifier un plan de contrôle à disponibilité élevée contenant plusieurs nœuds. Spécifiez un nombre impair de nœuds pour disposer d'un quorum majoritaire pour la haute disponibilité :

      # Control plane configuration
      controlPlane:
        nodePoolSpec:
          nodes:
          # Control plane node pools. Typically, this is either a single machine
          # or 3 machines if using a high availability deployment.
          - address: 10.200.0.4
          - address: 10.200.0.5
          - address: 10.200.0.6
    
  5. Spécifiez la densité de pods des nœuds de cluster.

    ....
    # NodeConfig specifies the configuration that applies to all nodes in the cluster.
    nodeConfig:
      # podDensity specifies the pod density configuration.
      podDensity:
        # maxPodsPerNode specifies at most how many pods can be run on a single node.
        maxPodsPerNode: 250
    ....
    

    Pour les clusters hybrides, les valeurs autorisées pour maxPodsPerNode sont 32-250 pour les clusters haute disponibilité et 64-250 pour les clusters non haute disponibilité. Si aucune valeur n'est spécifiée, la valeur par défaut de maxPodsPerNode est 110. Une fois le cluster créé, cette valeur ne peut pas être mise à jour.

    La densité des pods est également limitée par les ressources IP disponibles de votre cluster. Pour plus de détails, consultez la section Mise en réseau de pods.

Créer le cluster hybride avec la configuration du cluster

Utilisez la commande bmctl pour créer le cluster:

bmctl create cluster -c CLUSTER_NAME

Remplacez CLUSTER_NAME par le nom que vous avez utilisé lors de la création du fichier de configuration du cluster dans la section précédente.

Vous trouverez ci-dessous un exemple de commande permettant de créer un cluster nommé hybrid1:

bmctl create cluster -c hybrid1

Exemples de configurations de cluster hybride

Pour obtenir des exemples de configurations de cluster hybride, consultez la section Clusters hybrides dans les exemples de configurations de cluster.