21.5. Installation manuelle d'un cluster OpenShift à un nœud avec ZTP
Vous pouvez déployer un cluster OpenShift géré à nœud unique en utilisant Red Hat Advanced Cluster Management (RHACM) et le service assisté.
Si vous créez plusieurs clusters gérés, utilisez la méthode SiteConfig
décrite dans Déploiement de sites distants avec ZTP.
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
Créez un dossier de sortie en exécutant la commande suivante :
$ mkdir -p ./out
Exporter le répertoire
argocd
à partir de l'image du conteneurztp-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érencePolicyGenTemplate
etSiteConfig
dans le dossierout/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
Créez un dossier de sortie pour les CR d'installation du site :
$ mkdir -p ./site-install
Modifiez l'exemple de CR
SiteConfig
pour le type de cluster que vous voulez installer. Copiezexample-sno.yaml
verssite-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 CRSiteConfig
. - 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écutezoc 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 CRPolicyGenTemplate
que vous définissez. Par exemple,policygentemplates/common-ranGen.yaml
s'applique à tous les clusters dont le champcommon: true
est défini,policygentemplates/group-du-sno-ranGen.yaml
s'applique à tous les clusters dont le champgroup-du-sno: ""
est défini. - 5
- Facultatif. Le CR spécifié sous
KlusterletAddonConfig
est utilisé pour remplacer le CR par défautKlusterletAddonConfig
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 avecrole: 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 CRbmh-secret
, utilisez le même espace de noms que le CRSiteConfig
qui approvisionne l'hôte. - 9
- Configure le mode de démarrage de l'hôte. La valeur par défaut est
UEFI
. UtilisezUEFISecureBoot
pour activer le démarrage sécurisé sur l'hôte. - 10
cpuset
doit correspondre à la valeur définie dans le champ clusterPerformanceProfile
CRspec.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.
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
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érenceSiteConfig
avec l'option-E
. Par exemple, exécutez les commandes suivantes :Créer un dossier de sortie pour les CR
MachineConfig
:$ mkdir -p ./site-machineconfig
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
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 :Créer un dossier de sortie pour les CR du jour 2 :
$ mkdir -p ./ref
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
- 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.
Ressources supplémentaires
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.
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
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 :
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
-
Ajoutez le chemin relatif vers
example-sno-secret.yaml
au fichierkustomization.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.
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
-
Modifiez la spécification
spec.kernelArguments
dans le CRInfraEnv
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
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
.
Ouvrez une session SSH avec l'hôte cible :
$ ssh -i /path/to/privatekey core@<nom_de_l'hôte>
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'imageSecret
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
Créez un
ClusterImageSet
pour chaque version spécifique du cluster à déployer, par exempleclusterImageSet-4.12.yaml
. UnClusterImageSet
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 parreleaseImage
, ou sur la dernière version si la version exacte n'est pas disponible.
Appliquer la CR
clusterImageSet
:$ oc apply -f clusterImageSet-4.12.yaml
Créer le CR
Namespace
dans le fichiercluster-namespace.yaml
:apiVersion: v1 kind: Namespace metadata: name: <cluster_name> 1 labels: name: <cluster_name> 2
Appliquez la CR
Namespace
en exécutant la commande suivante :$ oc apply -f cluster-namespace.yaml
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
Ressources supplémentaires
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
Vérifiez l'état du cluster géré :
$ oc get managedcluster
True
indique que le cluster géré est prêt.Vérifier le statut de l'agent :
oc get agent -n <cluster_name>
Utilisez la commande
describe
pour obtenir une description détaillée de l'état de l'agent. Les statuts à connaître sontBackendError
,InputError
,ValidationsFailing
,InstallationFailed
etAgentIsConnected
. Ces statuts concernent les ressources personnaliséesAgent
etAgentClusterInstall
.oc describe agent -n <cluster_name>
Vérifier l'état de l'approvisionnement du cluster :
oc get agentclusterinstall -n <cluster_name>
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>
Vérifiez l'état des services complémentaires du cluster géré :
oc get managedclusteraddon -n <cluster_name>
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
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
estTrue
, le cluster géré est géré par le hub.Si le statut dans la colonne
AVAILABLE
estUnknown
, 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.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
estfalse
, l'installation a échoué.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>
Résolvez les erreurs et réinitialisez le cluster :
Supprimer la ressource cluster gérée du cluster :
oc delete managedcluster <cluster_name> $ oc delete managedcluster <cluster_name>
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.- 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.
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.
CR | Description | Utilisation |
---|---|---|
| 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. |
| Contient des informations pour l'installation d'OpenShift Container Platform sur l'hôte bare-metal cible. |
Utilisé avec |
|
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 | Spécifie les informations de configuration du cluster géré et fournit un statut pendant l'installation du cluster. |
|
Fait référence au CR |
Utilisé avec |
|
Fournit des informations sur la configuration du réseau, telles que l'adresse | Définit une adresse IP statique pour le serveur API Kube du cluster géré. |
| 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. |
| 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. |
|
Contient la liste des services fournis par le hub à déployer sur la ressource |
Indique au concentrateur les services complémentaires à déployer sur la ressource |
|
Espace logique pour les ressources |
Propage les ressources sur le site |
|
Deux CR sont créés : |
|
| 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. |