Rechercher

21.5. Installation manuelle d'un cluster OpenShift à un nœud avec ZTP

download PDF

Vous pouvez déployer un cluster OpenShift géré à nœud unique en utilisant Red Hat Advanced Cluster Management (RHACM) et le service assisté.

Note

Si vous créez plusieurs clusters gérés, utilisez la méthode SiteConfig décrite dans Déploiement de sites distants avec ZTP.

Important

L'hôte bare-metal cible doit répondre aux exigences en matière de réseau, de firmware et de matériel énumérées dans Configuration de cluster recommandée pour les charges de travail de l'application vDU.

21.5.1. Générer manuellement les CR d'installation et de configuration de ZTP

Utilisez le point d'entrée generator pour le conteneur ztp-site-generate afin de générer les ressources personnalisées (CR) d'installation et de configuration du site pour un cluster basé sur les CR SiteConfig et PolicyGenTemplate.

Conditions préalables

  • Vous avez installé l'OpenShift CLI (oc).
  • Vous vous êtes connecté au cluster hub en tant qu'utilisateur avec les privilèges cluster-admin.

Procédure

  1. Créez un dossier de sortie en exécutant la commande suivante :

    $ mkdir -p ./out
  2. Exporter le répertoire argocd à partir de l'image du conteneur ztp-site-generate:

    $ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./out

    Le répertoire ./out contient les CR de référence PolicyGenTemplate et SiteConfig dans le dossier out/argocd/example/.

    Exemple de sortie

    out
     └── argocd
          └── example
               ├── policygentemplates
               │     ├── common-ranGen.yaml
               │     ├── example-sno-site.yaml
               │     ├── group-du-sno-ranGen.yaml
               │     ├── group-du-sno-validator-ranGen.yaml
               │     ├── kustomization.yaml
               │     └── ns.yaml
               └── siteconfig
                      ├── example-sno.yaml
                      ├── KlusterletAddonConfigOverride.yaml
                      └── kustomization.yaml

  3. Créez un dossier de sortie pour les CR d'installation du site :

    $ mkdir -p ./site-install
  4. Modifiez l'exemple de CR SiteConfig pour le type de cluster que vous voulez installer. Copiez example-sno.yaml vers site-1-sno.yaml et modifiez le CR pour qu'il corresponde aux détails du site et de l'hôte bare-metal que vous souhaitez installer, par exemple :

    Exemple de cluster OpenShift à nœud unique SiteConfig CR

    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "<site_name>"
      namespace: "<site_name>"
    spec:
      baseDomain: "example.com"
      pullSecretRef:
        name: "assisted-deployment-pull-secret" 1
      clusterImageSetNameRef: "openshift-4.12" 2
      sshPublicKey: "ssh-rsa AAAA..." 3
      clusters:
      - clusterName: "<site_name>"
        networkType: "OVNKubernetes"
        clusterLabels: 4
          common: true
          group-du-sno: ""
          sites : "<site_name>"
        clusterNetwork:
          - cidr: 1001:1::/48
            hostPrefix: 64
        machineNetwork:
          - cidr: 1111:2222:3333:4444::/64
        serviceNetwork:
          - 1001:2::/112
        additionalNTPSources:
          - 1111:2222:3333:4444::2
        #crTemplates:
        #  KlusterletAddonConfig: "KlusterletAddonConfigOverride.yaml" 5
        nodes:
          - hostName: "example-node.example.com" 6
            role: "master"
            bmcAddress: idrac-virtualmedia://<out_of_band_ip>/<system_id>/ 7
            bmcCredentialsName:
              name: "bmh-secret" 8
            bootMACAddress: "AA:BB:CC:DD:EE:11"
            bootMode: "UEFI" 9
            rootDeviceHints:
              wwn: "0x11111000000asd123"
            cpuset: "0-1,52-53"  10
            nodeNetwork: 11
              interfaces:
                - name: eno1
                  macAddress: "AA:BB:CC:DD:EE:11"
              config:
                interfaces:
                  - name: eno1
                    type: ethernet
                    state: up
                    ipv4:
                      enabled: false
                    ipv6: 12
                      enabled: true
                      address:
                      - ip: 1111:2222:3333:4444::aaaa:1
                        prefix-length: 64
                dns-resolver:
                  config:
                    search:
                    - example.com
                    server:
                    - 1111:2222:3333:4444::2
                routes:
                  config:
                  - destination: ::/0
                    next-hop-interface: eno1
                    next-hop-address: 1111:2222:3333:4444::1
                    table-id: 254

    1
    Créez le CR assisted-deployment-pull-secret avec le même espace de noms que le CR SiteConfig.
    2
    clusterImageSetNameRef définit un jeu d'images disponible sur le hub cluster. Pour voir la liste des versions supportées sur votre hub cluster, exécutez oc get clusterimagesets.
    3
    Configurer la clé publique SSH utilisée pour accéder au cluster.
    4
    Les libellés des grappes doivent correspondre au champ bindingRules dans les CR PolicyGenTemplate que vous définissez. Par exemple, policygentemplates/common-ranGen.yaml s'applique à tous les clusters dont le champ common: true est défini, policygentemplates/group-du-sno-ranGen.yaml s'applique à tous les clusters dont le champ group-du-sno: "" est défini.
    5
    Facultatif. Le CR spécifié sous KlusterletAddonConfig est utilisé pour remplacer le CR par défaut KlusterletAddonConfig qui est créé pour le cluster.
    6
    Pour les déploiements à un seul nœud, définissez un seul hôte. Pour les déploiements à trois nœuds, définissez trois hôtes. Pour les déploiements standard, définissez trois hôtes avec role: master et deux hôtes ou plus avec role: worker.
    7
    Adresse BMC que vous utilisez pour accéder à l'hôte. S'applique à tous les types de clusters.
    8
    Nom du CR bmh-secret que vous créez séparément avec les informations d'identification BMC de l'hôte. Lorsque vous créez le CR bmh-secret, utilisez le même espace de noms que le CR SiteConfig qui approvisionne l'hôte.
    9
    Configure le mode de démarrage de l'hôte. La valeur par défaut est UEFI. Utilisez UEFISecureBoot pour activer le démarrage sécurisé sur l'hôte.
    10
    cpuset doit correspondre à la valeur définie dans le champ cluster PerformanceProfile CR spec.cpu.reserved pour le partitionnement de la charge de travail.
    11
    Spécifie les paramètres du réseau pour le nœud.
    12
    Configure l'adresse IPv6 pour l'hôte. Pour les clusters OpenShift à un seul nœud avec des adresses IP statiques, l'API spécifique au nœud et les IP d'entrée doivent être les mêmes.
  5. Générer les CR d'installation du jour 0 en traitant le CR SiteConfig modifié site-1-sno.yaml en exécutant la commande suivante :

    $ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12.1 generator install site-1-sno.yaml /output

    Exemple de sortie

    site-install
    └── site-1-sno
        ├── site-1_agentclusterinstall_example-sno.yaml
        ├── site-1-sno_baremetalhost_example-node1.example.com.yaml
        ├── site-1-sno_clusterdeployment_example-sno.yaml
        ├── site-1-sno_configmap_example-sno.yaml
        ├── site-1-sno_infraenv_example-sno.yaml
        ├── site-1-sno_klusterletaddonconfig_example-sno.yaml
        ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml
        ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml
        ├── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml
        ├── site-1-sno_managedcluster_example-sno.yaml
        ├── site-1-sno_namespace_example-sno.yaml
        └── site-1-sno_nmstateconfig_example-node1.example.com.yaml

  6. Facultatif : Générer uniquement les CR d'installation du jour 0 MachineConfig pour un type de cluster particulier en traitant le CR de référence SiteConfig avec l'option -E. Par exemple, exécutez les commandes suivantes :

    1. Créer un dossier de sortie pour les CR MachineConfig:

      $ mkdir -p ./site-machineconfig
    2. Générer les CR d'installation de MachineConfig:

      $ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12.1 generator install -E site-1-sno.yaml /output

      Exemple de sortie

      site-machineconfig
      └── site-1-sno
          ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml
          ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml
          └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml

  7. Générez et exportez les CR de configuration du jour 2 en utilisant les CR de référence PolicyGenTemplate de l'étape précédente. Exécutez les commandes suivantes :

    1. Créer un dossier de sortie pour les CR du jour 2 :

      $ mkdir -p ./ref
    2. Générer et exporter les CR de configuration du jour 2 :

      $ podman run -it --rm -v `pwd`/out/argocd/example/policygentemplates:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12.1 generator config -N . /output

      La commande génère des exemples de CR de groupe et de site PolicyGenTemplate pour OpenShift à un nœud, des clusters à trois nœuds et des clusters standard dans le dossier ./ref.

      Exemple de sortie

      ref
       └── customResource
            ├── common
            ├── example-multinode-site
            ├── example-sno
            ├── group-du-3node
            ├── group-du-3node-validator
            │    └── Multiple-validatorCRs
            ├── group-du-sno
            ├── group-du-sno-validator
            ├── group-du-standard
            └── group-du-standard-validator
                 └── Multiple-validatorCRs

  8. Utilisez les CR générés comme base pour les CR que vous utilisez pour installer le cluster. Vous appliquez les CR d'installation au cluster concentrateur comme décrit dans la section "Installation d'un cluster géré unique". Les CR de configuration peuvent être appliqués à la grappe une fois l'installation de la grappe terminée.

21.5.2. Création des secrets de l'hôte bare-metal géré

Ajoutez les ressources personnalisées (CR) Secret requises pour l'hôte bare-metal géré au cluster du concentrateur. Vous avez besoin d'un secret pour le pipeline ZTP afin d'accéder au Baseboard Management Controller (BMC) et d'un secret pour le service d'installation assistée afin d'extraire les images d'installation de cluster du registre.

Note

Les secrets sont référencés à partir du CR SiteConfig par leur nom. L'espace de noms doit correspondre à l'espace de noms de SiteConfig.

Procédure

  1. Créer un fichier secret YAML contenant les informations d'identification pour le contrôleur de gestion de carte de base (BMC) de l'hôte et un secret d'extraction requis pour l'installation d'OpenShift et de tous les opérateurs de cluster supplémentaires :

    1. Enregistrer le YAML suivant dans le fichier example-sno-secret.yaml:

      apiVersion: v1
      kind: Secret
      metadata:
        name: example-sno-bmc-secret
        namespace: example-sno 1
      data: 2
        password: <base64_password>
        username: <base64_username>
      type: Opaque
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: pull-secret
        namespace: example-sno  3
      data:
        .dockerconfigjson: <pull_secret> 4
      type: kubernetes.io/dockerconfigjson
      1
      Doit correspondre à l'espace de noms configuré dans la CR SiteConfig correspondante
      2
      Valeurs encodées en base64 pour password et username
      3
      Doit correspondre à l'espace de noms configuré dans la CR SiteConfig correspondante
      4
      Secret d'extraction codé en base64
  2. Ajoutez le chemin relatif vers example-sno-secret.yaml au fichier kustomization.yaml que vous utilisez pour installer le cluster.

21.5.3. Configuration des arguments du noyau Discovery ISO pour les installations manuelles à l'aide de GitOps ZTP

Le flux de travail GitOps ZTP utilise l'ISO Discovery dans le cadre du processus d'installation d'OpenShift Container Platform sur les hôtes bare-metal gérés. Vous pouvez éditer la ressource InfraEnv pour spécifier les arguments du noyau pour l'ISO de découverte. Ceci est utile pour les installations de clusters avec des exigences environnementales spécifiques. Par exemple, configurez l'argument de noyau rd.net.timeout.carrier pour l'ISO de découverte afin de faciliter la mise en réseau statique du cluster ou de recevoir une adresse DHCP avant de télécharger le système de fichiers racine pendant l'installation.

Note

Dans OpenShift Container Platform 4.12, vous ne pouvez qu'ajouter des arguments de noyau. Vous ne pouvez pas remplacer ou supprimer des arguments du noyau.

Conditions préalables

  • Vous avez installé le CLI OpenShift (oc).
  • Vous vous êtes connecté au cluster hub en tant qu'utilisateur disposant des privilèges cluster-admin.
  • Vous avez généré manuellement les ressources personnalisées (RC) d'installation et de configuration.

Procédure

  1. Modifiez la spécification spec.kernelArguments dans le CR InfraEnv pour configurer les arguments du noyau :
apiVersion: agent-install.openshift.io/v1beta1
kind: InfraEnv
metadata:
  name: <cluster_name>
  namespace: <cluster_name>
spec:
  kernelArguments:
    - operation: append 1
      value: audit=0 2
    - operation: append
      value: trace=1
  clusterRef:
    name: <cluster_name>
    namespace: <cluster_name>
  pullSecretRef:
    name: pull-secret
1
Spécifier l'opération d'ajout d'un argument du noyau.
2
Spécifiez l'argument du noyau que vous souhaitez configurer. Cet exemple configure l'argument de noyau audit et l'argument de noyau trace.
Note

La CR SiteConfig génère la ressource InfraEnv dans le cadre des CR d'installation du jour 0.

Vérification

Pour vérifier que les arguments du noyau sont appliqués, après que l'image Discovery a vérifié qu'OpenShift Container Platform est prêt pour l'installation, vous pouvez vous connecter en SSH à l'hôte cible avant que le processus d'installation ne commence. À ce moment-là, vous pouvez voir les arguments du noyau pour l'ISO Discovery dans le fichier /proc/cmdline.

  1. Ouvrez une session SSH avec l'hôte cible :

    $ ssh -i /path/to/privatekey core@<nom_de_l'hôte>
  2. Affichez les arguments du noyau du système à l'aide de la commande suivante :

    $ cat /proc/cmdline

21.5.4. Installation d'un seul cluster géré

Vous pouvez déployer manuellement un seul cluster géré à l'aide du service assisté et de Red Hat Advanced Cluster Management (RHACM).

Conditions préalables

  • Vous avez installé l'OpenShift CLI (oc).
  • Vous vous êtes connecté au cluster hub en tant qu'utilisateur avec les privilèges cluster-admin.
  • Vous avez créé le contrôleur de gestion de carte de base (BMC) Secret et le secret d'extraction d'image Secret ressources personnalisées (CR). Voir "Création des secrets de l'hôte bare-metal géré" pour plus de détails.
  • L'hôte bare-metal cible répond aux exigences matérielles et de mise en réseau pour les clusters gérés.

Procédure

  1. Créez un ClusterImageSet pour chaque version spécifique du cluster à déployer, par exemple clusterImageSet-4.12.yaml. Un ClusterImageSet a le format suivant :

    apiVersion: hive.openshift.io/v1
    kind: ClusterImageSet
    metadata:
      name: openshift-4.12.0 1
    spec:
       releaseImage: quay.io/openshift-release-dev/ocp-release:4.12.0-x86_64 2
    1
    La version descriptive que vous souhaitez déployer.
    2
    Spécifie le site releaseImage à déployer et détermine la version de l'image du système d'exploitation. L'ISO de découverte est basée sur la version de l'image définie par releaseImage, ou sur la dernière version si la version exacte n'est pas disponible.
  2. Appliquer la CR clusterImageSet:

    $ oc apply -f clusterImageSet-4.12.yaml
  3. Créer le CR Namespace dans le fichier cluster-namespace.yaml:

    apiVersion: v1
    kind: Namespace
    metadata:
         name: <cluster_name> 1
         labels:
            name: <cluster_name> 2
    1 2
    Le nom du cluster géré à provisionner.
  4. Appliquez la CR Namespace en exécutant la commande suivante :

    $ oc apply -f cluster-namespace.yaml
  5. Appliquez les CR du jour 0 que vous avez extraites du conteneur ztp-site-generate et que vous avez personnalisées pour répondre à vos besoins :

    $ oc apply -R ./site-install/site-sno-1

21.5.5. Surveillance de l'état de l'installation du cluster géré

Assurez-vous que le provisionnement de la grappe a réussi en vérifiant l'état de la grappe.

Conditions préalables

  • Toutes les ressources personnalisées ont été configurées et provisionnées, et la ressource personnalisée Agent est créée sur le hub pour le cluster géré.

Procédure

  1. Vérifiez l'état du cluster géré :

    $ oc get managedcluster

    True indique que le cluster géré est prêt.

  2. Vérifier le statut de l'agent :

    oc get agent -n <cluster_name>
  3. Utilisez la commande describe pour obtenir une description détaillée de l'état de l'agent. Les statuts à connaître sont BackendError, InputError, ValidationsFailing, InstallationFailed et AgentIsConnected. Ces statuts concernent les ressources personnalisées Agent et AgentClusterInstall.

    oc describe agent -n <cluster_name>
  4. Vérifier l'état de l'approvisionnement du cluster :

    oc get agentclusterinstall -n <cluster_name>
  5. Utilisez la commande describe pour obtenir une description détaillée de l'état de l'approvisionnement de la grappe :

    oc describe agentclusterinstall -n <cluster_name>
  6. Vérifiez l'état des services complémentaires du cluster géré :

    oc get managedclusteraddon -n <cluster_name>
  7. Récupérer les informations d'authentification du fichier kubeconfig pour le cluster géré :

    $ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig

21.5.6. Dépannage du cluster géré

Cette procédure permet de diagnostiquer les problèmes d'installation qui pourraient survenir avec le cluster géré.

Procédure

  1. Vérifiez l'état du cluster géré :

    $ oc get managedcluster

    Exemple de sortie

    NAME            HUB ACCEPTED   MANAGED CLUSTER URLS   JOINED   AVAILABLE   AGE
    SNO-cluster     true                                   True     True      2d19h

    Si le statut dans la colonne AVAILABLE est True, le cluster géré est géré par le hub.

    Si le statut dans la colonne AVAILABLE est Unknown, le cluster géré n'est pas géré par le concentrateur. Suivez les étapes suivantes pour continuer la vérification et obtenir plus d'informations.

  2. Vérifiez l'état de l'installation de AgentClusterInstall:

    oc get clusterdeployment -n <cluster_name>

    Exemple de sortie

    NAME        PLATFORM            REGION   CLUSTERTYPE   INSTALLED    INFRAID    VERSION  POWERSTATE AGE
    Sno0026    agent-baremetal                               false                          Initialized
    2d14h

    Si l'état de la colonne INSTALLED est false, l'installation a échoué.

  3. Si l'installation a échoué, entrez la commande suivante pour vérifier l'état de la ressource AgentClusterInstall:

    oc describe agentclusterinstall -n <cluster_name> <cluster_name> $ oc describe agentclusterinstall -n <cluster_name>
  4. Résolvez les erreurs et réinitialisez le cluster :

    1. Supprimer la ressource cluster gérée du cluster :

      oc delete managedcluster <cluster_name> $ oc delete managedcluster <cluster_name>
    2. Supprimer l'espace de noms du cluster :

      oc delete namespace <cluster_name> $ oc delete namespace <cluster_name>

      Cette opération supprime toutes les ressources personnalisées de l'espace de nommage créées pour ce cluster. Vous devez attendre que la suppression de ManagedCluster CR soit terminée avant de poursuivre.

    3. Recréer les ressources personnalisées pour le cluster géré.

21.5.7. Référence des CR d'installation de clusters générés par RHACM

Red Hat Advanced Cluster Management (RHACM) prend en charge le déploiement d'OpenShift Container Platform sur des clusters à un nœud, des clusters à trois nœuds et des clusters standard avec un ensemble spécifique de ressources personnalisées (CR) d'installation que vous générez à l'aide de SiteConfig CR pour chaque site.

Note

Chaque cluster géré possède son propre espace de noms, et tous les CR d'installation, à l'exception de ManagedCluster et ClusterImageSet, se trouvent dans cet espace de noms. ManagedCluster et ClusterImageSet sont à l'échelle du cluster, et non à l'échelle de l'espace de noms. L'espace de noms et les noms des CR correspondent au nom du cluster.

Le tableau suivant répertorie les CR d'installation qui sont automatiquement appliqués par le service RHACM assisté lorsqu'il installe des clusters à l'aide des CR SiteConfig que vous configurez.

Tableau 21.4. CR d'installation de clusters générés par le RHACM
CRDescriptionUtilisation

BareMetalHost

Contient les informations de connexion pour le contrôleur de gestion de la carte de base (BMC) de l'hôte nu-métal cible.

Permet d'accéder à la BMC pour charger et démarrer l'image de découverte sur le serveur cible à l'aide du protocole Redfish.

InfraEnv

Contient des informations pour l'installation d'OpenShift Container Platform sur l'hôte bare-metal cible.

Utilisé avec ClusterDeployment pour générer l'ISO de découverte pour le cluster géré.

AgentClusterInstall

Spécifie les détails de la configuration du cluster géré, tels que la mise en réseau et le nombre de nœuds du plan de contrôle. Affiche le cluster kubeconfig et les informations d'identification une fois l'installation terminée.

Spécifie les informations de configuration du cluster géré et fournit un statut pendant l'installation du cluster.

ClusterDeployment

Fait référence au CR AgentClusterInstall à utiliser.

Utilisé avec InfraEnv pour générer l'ISO de découverte pour le cluster géré.

NMStateConfig

Fournit des informations sur la configuration du réseau, telles que l'adresse MAC et le mappage IP, le serveur DNS, la route par défaut et d'autres paramètres du réseau.

Définit une adresse IP statique pour le serveur API Kube du cluster géré.

Agent

Contient des informations matérielles sur l'hôte bare-metal cible.

Créé automatiquement sur le concentrateur lorsque l'image de découverte de la machine cible démarre.

ManagedCluster

Lorsqu'un cluster est géré par le hub, il doit être importé et connu. Cet objet Kubernetes fournit cette interface.

Le hub utilise cette ressource pour gérer et afficher l'état des clusters gérés.

KlusterletAddonConfig

Contient la liste des services fournis par le hub à déployer sur la ressource ManagedCluster.

Indique au concentrateur les services complémentaires à déployer sur la ressource ManagedCluster.

Namespace

Espace logique pour les ressources ManagedCluster existant sur le hub. Unique par site.

Propage les ressources sur le site ManagedCluster.

Secret

Deux CR sont créés : BMC Secret et Image Pull Secret.

  • BMC Secret s'authentifie sur l'hôte nu cible à l'aide de son nom d'utilisateur et de son mot de passe.
  • Image Pull Secret contient des informations d'authentification pour l'image OpenShift Container Platform installée sur l'hôte bare-metal cible.

ClusterImageSet

Contient des informations sur l'image OpenShift Container Platform, telles que le dépôt et le nom de l'image.

Passé dans les ressources pour fournir des images OpenShift Container Platform.

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.