Configurer vos clusters pour utiliser OpenStack

Google Distributed Cloud permet d'utiliser OpenStack en tant que plate-forme de cloud privé. Ce guide explique comment configurer un cluster Google Distributed Cloud pour qu'il fonctionne avec un fournisseur cloud externe. L'exécution de clusters Google Distributed Cloud sur OpenStack vous permet d'utiliser les services OpenStack suivants:

  • Infrastructure as a Service (IaaS)

  • Load balancing as a Service (LBaaS)

  • Espace de stockage

Pour configurer un cluster afin qu'il fonctionne avec OpenStack, vous devez:

  • Lorsque vous créez le cluster, vous ajoutez une annotation baremetal.cluster.gke.io/external-cloud-provider.

  • Cette annotation force Google Distributed Cloud à ajouter un indicateur kubelet cloud-provider=external

  • Le kubelet ajoute ensuite node.cloudprovider.kubernetes.io/uninitialized:NoSchedule rejets aux nœuds du cluster

Cette configuration vous permet, à vous et à OpenStack, de posséder les processus d'initialisation des nœuds. Par exemple, vous pouvez déployer Google Distributed Cloud sur OpenStack pour provisionner automatiquement des ressources OpenStack Load Balancing en tant que service (LBaaS) ou pour utiliser d'autres fonctionnalités OpenStack. Les ressources LBaaS peuvent remplacer les ressources MetalLB pour exposer les services exécutés sur vos clusters Google Distributed Cloud à d'autres locataires OpenStack ou en dehors du réseau OpenStack. Pour en savoir plus sur les fonctionnalités et les avantages d'OpenStack, consultez la documentation OpenStack.

Ce document explique uniquement comment configurer votre cluster pour l'utiliser avec OpenStack. Les guides suivants présentent un exemple de déploiement:

  • La page Déployer un cluster Google Distributed Cloud sur OpenStack présente un exemple de déploiement d'un cluster hybride Google Distributed Cloud sur des machines virtuelles (VM) OpenStack. Le déploiement utilise un script pour simplifier l'installation. Il présente également une façon d'activer l'équilibrage de charge en tant que service (LBaaS).

  • Configurer le fournisseur cloud OpenStack pour Kubernetes : ce tutoriel explique comment installer le fournisseur cloud OpenStack sur un cluster Google Distributed Cloud déployé sur OpenStack. Le fournisseur cloud OpenStack n'est pas obligatoire pour utiliser Google Distributed Cloud avec OpenStack.

Avant de commencer

  • Déterminez quels clusters GKE doivent utiliser les ressources OpenStack LBaaS.

    Une fois que vous avez créé un cluster configuré pour utiliser des ressources OpenStack LBaaS, vous ne pouvez plus modifier la configuration pour passer aux ressources MetalLB. Assurez-vous d'initialiser vos clusters avec la configuration appropriée du fournisseur cloud.

  • Assurez-vous d'avoir accès aux machines que vous essayez de configurer.

Découvrez comment exécuter cloud-controller-manager dans la documentation de Kubernetes.

Modifier le fichier de configuration du cluster

Le fournisseur cloud OpenStack Kubernetes nécessite que kubelet s'exécute sur tous les nœuds avec l'argument suivant :

cloud-provider: "external"

Pour vous assurer que votre cluster GKE répond à cette exigence, ajoutez l'annotation baremetal.cluster.gke.io/external-cloud-provider: "true" à votre fichier de configuration de cluster dans la section des métadonnées avant de créer le cluster.

L'entrée de votre fichier de configuration doit ressembler à l'exemple suivant :

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
  ...

Certains fournisseurs cloud sur d'autres plates-formes cloud exigent un format spécial pour providerID. Google Distributed Cloud génère un fichier providerID au format baremetal://MACHINE_ADDRESS pour chaque machine de nœud. Si vous souhaitez utiliser un providerID différent, vous pouvez en spécifier un pour chaque nœud, ainsi que l'adresse IP.

L'exemple de fichier de configuration de cluster suivant montre comment spécifier providerID pour vos nœuds de cluster:

 apiVersion: baremetal.cluster.gke.io/v1
 kind: Cluster
 metadata:
   name: cluster1
   namespace: cluster-cluster1
 spec:
   clusterNetwork:
     pods:
       cidrBlocks:
       - 192.168.0.0/16
     services:
       cidrBlocks:
       - 10.96.0.0/20
   controlPlane:
     nodePoolSpec:
       nodes:
       - address: 10.200.0.1
+        providerID: some-prefix://unique-string
       - address: 10.200.0.2
+        providerID: some-prefix2://unique-string2
  ...

---
 apiVersion: baremetal.cluster.gke.io/v1
 kind: NodePool
 metadata:
   name: nodepool1
   namespace: cluster-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

Créer votre cluster

Après avoir modifié le fichier de configuration, utilisez la commande suivante pour initialiser votre cluster :

bmctl create cluster -c cluster1

Pour en savoir plus sur la création de clusters, consultez la page Présentation de la création de clusters.

Configuration des nœuds

Lorsque vous créez un cluster configuré pour OpenStack, les nœuds du cluster apportent les modifications suivantes:

  • Tous les nœuds de cluster1 s'exécutent avec l'argument requis: cloud-provider: "external".

  • Tous les nœuds ont également le rejet suivant ajouté à leurs fichiers de configuration:

    taints:
    - effect: NoSchedule
      key: node.cloudprovider.kubernetes.io/uninitialized
      value: "true"
    

    Ces rejets sont supprimés une fois que vous avez initialisé votre fournisseur cloud sur ce cluster.

  • kubelet s'exécute avec le providerID que vous avez spécifié dans le fichier de configuration du cluster.

Étapes suivantes