Configurer vos clusters pour utiliser OpenStack

Google Distributed Cloud permet d'utiliser OpenStack comme plate-forme cloud privée. Ce guide explique comment configurer un cluster Google Distributed Cloud pour qu'il fonctionne avec un fournisseur de 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)

  • Stockage

Pour configurer un cluster afin qu'il fonctionne avec OpenStack, procédez comme suit :

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

  • Cette annotation entraîne l'ajout d'un indicateur kubelet cloud-provider=external par Google Distributed Cloud.

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

Cette configuration vous permet, à vous et à OpenStack, d'être propriétaire des processus d'initialisation du nœud. Par exemple, vous pouvez déployer Google Distributed Cloud sur OpenStack pour provisionner automatiquement des ressources LBaaS (Load Balancing as a Service) OpenStack 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 vous présentent un exemple de déploiement :

  • Déployez un cluster Google Distributed Cloud sur OpenStack vous explique comment déployer un cluster hybride Google Distributed Cloud sur des machines virtuelles (VM) OpenStack. Le déploiement utilise un script pour simplifier l'installation. Le guide vous explique également comment activer l'équilibrage de charge en tant que service (LBaaS).

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

Avant de commencer

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

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

  • Vérifiez que vous avez accès aux machines que vous essayez de configurer.

Obtenez plus d'informations sur l'exécution de cloud-controller-manager dans la documentation de Kubernetes.

Modifier le fichier de configuration de votre 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" au fichier de configuration de votre 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 nécessitent un format spécial pour providerID. Google Distributed Cloud génère un providerID au format baremetal://MACHINE_ADDRESS pour chaque machine de nœud. Si vous souhaitez utiliser une valeur providerID différente, vous pouvez en spécifier une pour chaque nœud en même temps que l'adresse IP.

L'exemple de fichier de configuration de cluster suivant montre comment spécifier providerID pour les nœuds de votre 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 de cluster subissent les modifications suivantes :

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

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

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

    Ces champs sont supprimés après l'initialisation de 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.

Étape suivante