21.9. Configuration avancée des clusters gérés avec les ressources PolicyGenTemplate
Vous pouvez utiliser les CR PolicyGenTemplate
pour déployer des fonctionnalités personnalisées dans vos clusters gérés.
21.9.1. Déploiement de modifications supplémentaires dans les clusters
Si vous souhaitez modifier la configuration du cluster en dehors de la configuration de base du pipeline ZTP de GitOps, trois options s'offrent à vous :
- Appliquer la configuration supplémentaire une fois que le pipeline ZTP est terminé
- Lorsque le déploiement du pipeline ZTP de GitOps est terminé, le cluster déployé est prêt pour les charges de travail des applications. À ce stade, vous pouvez installer des opérateurs supplémentaires et appliquer des configurations spécifiques à vos besoins. Assurez-vous que les configurations supplémentaires n'affectent pas négativement les performances de la plateforme ou le budget CPU alloué.
- Ajouter du contenu à la bibliothèque ZTP
- Les ressources personnalisées (CR) de base que vous déployez avec le pipeline ZTP de GitOps peuvent être complétées par du contenu personnalisé selon les besoins.
- Créer des manifestes supplémentaires pour l'installation du cluster
- Les manifestes supplémentaires sont appliqués pendant l'installation et rendent le processus d'installation plus efficace.
Fournir des CR source supplémentaires ou modifier des CR source existants peut avoir un impact significatif sur la performance ou le profil CPU d'OpenShift Container Platform.
Ressources supplémentaires
- Voir Personnaliser les manifestes d'installation supplémentaires dans le pipeline ZTP GitOps pour plus d'informations sur l'ajout de manifestes supplémentaires.
21.9.2. Utilisation des CR PolicyGenTemplate pour remplacer le contenu des CR sources
PolicyGenTemplate
les ressources personnalisées (CR) vous permettent de superposer des détails de configuration supplémentaires aux CR de base fournis avec le plugin GitOps dans le conteneur ztp-site-generate
. Vous pouvez considérer les CR PolicyGenTemplate
comme une fusion logique ou un correctif de la CR de base. Utilisez les CR PolicyGenTemplate
pour mettre à jour un seul champ du CR de base, ou pour superposer l'ensemble du contenu du CR de base. Vous pouvez mettre à jour des valeurs et insérer des champs qui ne figurent pas dans le CR de base.
L'exemple de procédure suivant décrit comment mettre à jour les champs du CR PerformanceProfile
généré pour la configuration de référence sur la base du CR PolicyGenTemplate
dans le fichier group-du-sno-ranGen.yaml
. Utilisez cette procédure comme base pour modifier d'autres parties de PolicyGenTemplate
en fonction de vos besoins.
Conditions préalables
- Créez un dépôt Git où vous gérez les données de configuration de votre site personnalisé. Le dépôt doit être accessible depuis le cluster hub et être défini comme dépôt source pour Argo CD.
Procédure
Examinez le CR source de référence à la recherche de contenu existant. Vous pouvez examiner les CR source répertoriés dans la référence
PolicyGenTemplate
CR en les extrayant du conteneur ZTP (Zero Touch Provisioning).Créez un dossier
/out
:$ mkdir -p ./out
Extraire les CR source :
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12.1 extract /home/ztp --tar | tar x -C ./out
Examinez le document de référence
PerformanceProfile
CR à l'adresse./out/source-crs/PerformanceProfile.yaml
:apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: $name annotations: ran.openshift.io/ztp-deploy-wave: "10" spec: additionalKernelArgs: - "idle=poll" - "rcupdate.rcu_normal_after_boot=0" cpu: isolated: $isolated reserved: $reserved hugepages: defaultHugepagesSize: $defaultHugepagesSize pages: - size: $size count: $count node: $node machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/$mcp: "" net: userLevelNetworking: true nodeSelector: node-role.kubernetes.io/$mcp: '' numa: topologyPolicy: "restricted" realTimeKernel: enabled: true
NoteTous les champs du CR source qui contiennent
$…
sont supprimés du CR généré s'ils ne sont pas fournis dans le CRPolicyGenTemplate
.Mettez à jour l'entrée
PolicyGenTemplate
pourPerformanceProfile
dans le fichier de référencegroup-du-sno-ranGen.yaml
. L'exemple suivant de strophePolicyGenTemplate
CR fournit les spécifications appropriées de l'unité centrale, définit la configuration dehugepages
et ajoute un nouveau champ qui définitgloballyDisableIrqLoadBalancing
comme faux.- fileName: PerformanceProfile.yaml policyName: "config-policy" metadata: name: openshift-node-performance-profile spec: cpu: # These must be tailored for the specific hardware platform isolated: "2-19,22-39" reserved: "0-1,20-21" hugepages: defaultHugepagesSize: 1G pages: - size: 1G count: 10 globallyDisableIrqLoadBalancing: false
-
Commencer le changement
PolicyGenTemplate
dans Git, puis pousser vers le dépôt Git surveillé par l'application GitOps ZTP argo CD.
Exemple de sortie
L'application ZTP génère une politique RHACM qui contient la CR PerformanceProfile
générée. Le contenu de ce CR est obtenu en fusionnant les contenus metadata
et spec
de l'entrée PerformanceProfile
dans le PolicyGenTemplate
sur le CR source. Le CR résultant a le contenu suivant :
--- apiVersion: performance.openshift.io/v2 kind: PerformanceProfile metadata: name: openshift-node-performance-profile spec: additionalKernelArgs: - idle=poll - rcupdate.rcu_normal_after_boot=0 cpu: isolated: 2-19,22-39 reserved: 0-1,20-21 globallyDisableIrqLoadBalancing: false hugepages: defaultHugepagesSize: 1G pages: - count: 10 size: 1G machineConfigPoolSelector: pools.operator.machineconfiguration.openshift.io/master: "" net: userLevelNetworking: true nodeSelector: node-role.kubernetes.io/master: "" numa: topologyPolicy: restricted realTimeKernel: enabled: true
Dans le dossier /source-crs
que vous extrayez du conteneur ztp-site-generate
, la syntaxe $
n'est pas utilisée pour la substitution de modèle comme le suggère la syntaxe. Au contraire, si l'outil policyGen
voit le préfixe $
pour une chaîne et que vous ne spécifiez pas de valeur pour ce champ dans le CR PolicyGenTemplate
correspondant, le champ est entièrement omis du CR de sortie.
Une exception à cette règle est la variable $mcp
dans les fichiers YAML /source-crs
, qui est remplacée par la valeur spécifiée pour mcp
dans le CR PolicyGenTemplate
. Par exemple, dans example/policygentemplates/group-du-standard-ranGen.yaml
, la valeur de mcp
est worker
:
spec: bindingRules: group-du-standard: "" mcp: "worker"
L'outil policyGen
remplace les instances de $mcp
par worker
dans les CR de sortie.
21.9.3. Ajouter un nouveau contenu au pipeline ZTP de GitOps
Les CR source du conteneur de générateur de site ZTP de GitOps fournissent un ensemble de fonctionnalités critiques et de paramètres de réglage des nœuds pour les applications d'unités distribuées (UD) du RAN. Ils sont appliqués aux clusters que vous déployez avec ZTP. Pour ajouter ou modifier des CR source existants dans le conteneur ztp-site-generate
, reconstruisez le conteneur ztp-site-generate
et mettez-le à la disposition du cluster concentrateur, généralement à partir du registre déconnecté associé au cluster concentrateur. Tout CR valide de OpenShift Container Platform peut être ajouté.
Suivez la procédure suivante pour ajouter un nouveau contenu au pipeline ZTP.
Procédure
Créez un répertoire contenant un fichier Containerfile et les fichiers YAML du CR source que vous souhaitez inclure dans le conteneur
ztp-site-generate
mis à jour, par exemple :ztp-update/ ├── example-cr1.yaml ├── example-cr2.yaml └── ztp-update.in
Ajoutez le contenu suivant au fichier de conteneurs
ztp-update.in
:FROM registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 ADD example-cr2.yaml /kustomize/plugin/ran.openshift.io/v1/policygentemplate/source-crs/ ADD example-cr1.yaml /kustomize/plugin/ran.openshift.io/v1/policygentemplate/source-crs/
Ouvrez un terminal dans le dossier
ztp-update/
et reconstruisez le conteneur :$ podman build -t ztp-site-generate-rhel8-custom:v4.12-custom-1
Pousser l'image du conteneur construit vers votre registre déconnecté, par exemple :
$ podman push localhost/ztp-site-generate-rhel8-custom:v4.12-custom-1 registry.example.com:5000/ztp-site-generate-rhel8-custom:v4.12-custom-1
Patch de l'instance Argo CD sur le cluster hub pour pointer vers l'image de conteneur nouvellement construite :
$ oc patch -n openshift-gitops argocd openshift-gitops --type=json -p '[{"op": "replace", "path":"/spec/repo/initContainers/0/image", "value": "registry.example.com:5000/ztp-site-generate-rhel8-custom:v4.12-custom-1"} ]'
Lorsque l'instance Argo CD est corrigée, le pod
openshift-gitops-repo-server
redémarre automatiquement.
Vérification
Vérifiez que le nouveau pod
openshift-gitops-repo-server
a terminé son initialisation et que le pod repo précédent est terminé :$ oc get pods -n openshift-gitops | grep openshift-gitops-repo-server
Exemple de sortie
openshift-gitops-server-7df86f9774-db682 1/1 Running 1 28s
Vous devez attendre que le nouveau pod
openshift-gitops-repo-server
ait terminé son initialisation et que le pod précédent soit terminé pour que le contenu de l'image de conteneur nouvellement ajoutée soit disponible.
Ressources supplémentaires
-
Alternativement, vous pouvez patcher l'instance ArgoCD comme décrit dans Configuration du cluster hub avec ArgoCD en modifiant
argocd-openshift-gitops-patch.json
avec une imageinitContainer
mise à jour avant d'appliquer le fichier patch.
21.9.4. Configuration des délais d'évaluation de la conformité des politiques pour les CR PolicyGenTemplate
Utilisez Red Hat Advanced Cluster Management (RHACM) installé sur un cluster hub pour surveiller et signaler si vos clusters gérés sont conformes aux stratégies appliquées. RHACM utilise des modèles de politiques pour appliquer des contrôleurs de politiques et des politiques prédéfinis. Les contrôleurs de politiques sont des instances de définition de ressources personnalisées (CRD) Kubernetes.
Vous pouvez remplacer les intervalles d'évaluation des politiques par défaut par des ressources personnalisées (CR) sur le site PolicyGenTemplate
. Vous configurez les paramètres de durée qui définissent combien de temps une CR ConfigurationPolicy
peut rester dans un état de conformité ou de non-conformité à la politique avant que RHACM ne réévalue les politiques de cluster appliquées.
Le générateur de politiques ZTP (zero touch provisioning) génère des politiques CR ConfigurationPolicy
avec des intervalles d'évaluation prédéfinis. La valeur par défaut de l'état noncompliant
est de 10 secondes. La valeur par défaut de l'état compliant
est de 10 minutes. Pour désactiver l'intervalle d'évaluation, définissez la valeur sur never
.
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éé un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé.
Procédure
Pour configurer l'intervalle d'évaluation de toutes les politiques dans une CR
PolicyGenTemplate
, ajoutezevaluationInterval
au champspec
, puis définissez les valeurscompliant
etnoncompliant
appropriées. Par exemple :spec: evaluationInterval: compliant: 30m noncompliant: 20s
Pour configurer l'intervalle d'évaluation de l'objet
spec.sourceFiles
dans un CRPolicyGenTemplate
, ajoutezevaluationInterval
au champsourceFiles
, par exemple :spec: sourceFiles: - fileName: SriovSubscription.yaml policyName: "sriov-sub-policy" evaluationInterval: compliant: never noncompliant: 10s
-
Commencez les fichiers
PolicyGenTemplate
CRs dans le dépôt Git et apportez vos modifications.
Vérification
Vérifiez que les stratégies des clusters de rayons gérés sont contrôlées aux intervalles prévus.
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
sur le cluster géré. Obtenez les pods qui sont en cours d'exécution dans l'espace de noms
open-cluster-management-agent-addon
. Exécutez la commande suivante :$ oc get pods -n open-cluster-management-agent-addon
Exemple de sortie
NAME READY STATUS RESTARTS AGE config-policy-controller-858b894c68-v4xdb 1/1 Running 22 (5d8h ago) 10d
Vérifiez que les politiques appliquées sont évaluées à l'intervalle prévu dans les journaux du pod
config-policy-controller
:$ oc logs -n open-cluster-management-agent-addon config-policy-controller-858b894c68-v4xdb
Exemple de sortie
2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-config-policy-config"} 2022-05-10T15:10:25.280Z info configuration-policy-controller controllers/configurationpolicy_controller.go:166 Skipping the policy evaluation due to the policy not reaching the evaluation interval {"policy": "compute-1-common-compute-1-catalog-policy-config"}
21.9.5. Signalisation de l'achèvement du déploiement d'un cluster ZTP avec des politiques d'information du validateur
Créez une politique d'information du validateur qui signale la fin de l'installation et de la configuration du cluster déployé dans le cadre du Zero Touch Provisioning (ZTP). Cette politique peut être utilisée pour les déploiements de clusters OpenShift à un nœud, de clusters à trois nœuds et de clusters standard.
Procédure
Créez une ressource personnalisée (CR) autonome
PolicyGenTemplate
qui contient le fichier sourcevalidatorCRs/informDuValidator.yaml
. Vous n'avez besoin que d'une CRPolicyGenTemplate
autonome pour chaque type de cluster. Par exemple, cette CR applique une politique d'information du validateur pour les clusters OpenShift à nœud unique :Exemple de politique d'information de validateur de cluster à nœud unique CR (group-du-sno-validator-ranGen.yaml)
apiVersion: ran.openshift.io/v1 kind: PolicyGenTemplate metadata: name: "group-du-sno-validator" 1 namespace: "ztp-group" 2 spec: bindingRules: group-du-sno: "" 3 bindingExcludedRules: ztp-done: "" 4 mcp: "master" 5 sourceFiles: - fileName: validatorCRs/informDuValidator.yaml remediationAction: inform 6 policyName: "du-policy" 7
- 1
- Le nom de l'objet
PolicyGenTemplates
. Ce nom est également utilisé dans les noms des objetsplacementBinding
,placementRule
, etpolicy
qui sont créés dans l'objetnamespace
. - 2
- Cette valeur doit correspondre à celle de
namespace
utilisée dans le groupePolicyGenTemplates
. - 3
- L'étiquette
group-du-*
définie dansbindingRules
doit exister dans les fichiersSiteConfig
. - 4
- Le label défini dans
bindingExcludedRules
doit être "ztp-done:`". Le labelztp-done
est utilisé en coordination avec le Topology Aware Lifecycle Manager. - 5
mcp
définit l'objetMachineConfigPool
utilisé dans le fichier sourcevalidatorCRs/informDuValidator.yaml
. Il doit s'agir demaster
pour les déploiements de clusters à un ou trois nœuds et deworker
pour les déploiements de clusters standard.- 6
- Facultatif. La valeur par défaut est
inform
. - 7
- Cette valeur fait partie du nom de la stratégie RHACM générée. La stratégie de validation générée pour l'exemple d'un seul nœud est
group-du-sno-validator-du-policy
.
-
Commencez le fichier
PolicyGenTemplate
CR dans votre dépôt Git et transférez les modifications.
Ressources supplémentaires
21.9.6. Configuration des événements rapides PTP à l'aide des CR PolicyGenTemplate
Vous pouvez configurer les événements rapides PTP pour les clusters vRAN qui sont déployés à l'aide du pipeline GitOps Zero Touch Provisioning (ZTP). Utilisez les ressources personnalisées (CR) de PolicyGenTemplate
comme base pour créer une hiérarchie de fichiers de configuration adaptés aux exigences spécifiques de votre site.
Conditions préalables
- Créez un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé.
Procédure
Ajoutez le YAML suivant à
.spec.sourceFiles
dans le fichiercommon-ranGen.yaml
pour configurer l'opérateur AMQP :#AMQ interconnect operator for fast events - fileName: AmqSubscriptionNS.yaml policyName: "subscriptions-policy" - fileName: AmqSubscriptionOperGroup.yaml policyName: "subscriptions-policy" - fileName: AmqSubscription.yaml policyName: "subscriptions-policy"
Appliquez les modifications suivantes à
PolicyGenTemplate
aux fichiersgroup-du-3node-ranGen.yaml
,group-du-sno-ranGen.yaml
ougroup-du-standard-ranGen.yaml
en fonction de vos besoins :Dans
.sourceFiles
, ajoutez le fichierPtpOperatorConfig
CR qui configure l'hôte de transport AMQ àconfig-policy
:- fileName: PtpOperatorConfigForEvent.yaml policyName: "config-policy"
Configurez les pages
linuxptp
etphc2sys
pour le type d'horloge PTP et l'interface. Par exemple, ajoutez la strophe suivante à.sourceFiles
:- fileName: PtpConfigSlave.yaml 1 policyName: "config-policy" metadata: name: "du-ptp-slave" spec: profile: - name: "slave" interface: "ens5f1" 2 ptp4lOpts: "-2 -s --summary_interval -4" 3 phc2sysOpts: "-a -r -m -n 24 -N 8 -R 16" 4 ptpClockThreshold: 5 holdOverTimeout: 30 #secs maxOffsetThreshold: 100 #nano secs minOffsetThreshold: -100 #nano secs
- 1
- Il peut s'agir de
PtpConfigMaster.yaml
,PtpConfigSlave.yaml
, ouPtpConfigSlaveCvl.yaml
en fonction de vos besoins.PtpConfigSlaveCvl.yaml
configure les serviceslinuxptp
pour un NIC Intel E810 Columbiaville. Pour les configurations basées surgroup-du-sno-ranGen.yaml
ougroup-du-3node-ranGen.yaml
, utilisezPtpConfigSlave.yaml
. - 2
- Nom de l'interface spécifique au dispositif.
- 3
- Vous devez ajouter la valeur
--summary_interval -4
àptp4lOpts
dans.spec.sourceFiles.spec.profile
pour activer les événements rapides PTP. - 4
- Valeurs requises
phc2sysOpts
.-m
imprime des messages àstdout
.linuxptp-daemon
DaemonSet
analyse les journaux et génère des métriques Prometheus. - 5
- Facultatif. Si la strophe
ptpClockThreshold
n'est pas présente, des valeurs par défaut sont utilisées pour les champsptpClockThreshold
. La strophe indique les valeurs par défaut deptpClockThreshold
. Les valeurs deptpClockThreshold
configurent le délai de déclenchement des événements PTP après la déconnexion de l'horloge maître PTP.holdOverTimeout
est la valeur de temps en secondes avant que l'état de l'événement de l'horloge PTP ne passe àFREERUN
lorsque l'horloge maître PTP est déconnectée. Les paramètresmaxOffsetThreshold
etminOffsetThreshold
configurent des valeurs de décalage en nanosecondes qui se comparent aux valeurs deCLOCK_REALTIME
(phc2sys
) ou au décalage du maître (ptp4l
). Lorsque la valeur de décalageptp4l
ouphc2sys
est en dehors de cette plage, l'état de l'horloge PTP est réglé surFREERUN
. Lorsque la valeur de décalage est comprise dans cette plage, l'état de l'horloge PTP est réglé surLOCKED
.
Appliquez les modifications suivantes
PolicyGenTemplate
aux fichiers YAML de votre site, par exempleexample-sno-site.yaml
:Dans
.sourceFiles
, ajoutez le fichierInterconnect
CR qui configure le routeur AMQ àconfig-policy
:- fileName: AmqInstance.yaml policyName: "config-policy"
- Fusionnez tous les autres changements et fichiers nécessaires avec votre référentiel de site personnalisé.
- Transférez les modifications dans le référentiel de configuration de votre site pour déployer les événements rapides PTP sur de nouveaux sites à l'aide de GitOps ZTP.
Ressources supplémentaires
- Pour plus d'informations sur l'installation de l'opérateur d'interconnexion AMQ, voir Installation du bus de messagerie AMQ.
21.9.7. Configuration de l'opérateur de registre d'images pour la mise en cache locale des images
OpenShift Container Platform gère la mise en cache des images à l'aide d'un registre local. Dans les cas d'utilisation de l'edge computing, les clusters sont souvent soumis à des restrictions de bande passante lorsqu'ils communiquent avec des registres d'images centralisés, ce qui peut entraîner de longs temps de téléchargement des images.
De longs temps de téléchargement sont inévitables lors du déploiement initial. Avec le temps, CRI-O risque d'effacer le répertoire /var/lib/containers/storage
en cas d'arrêt inattendu. Pour remédier aux longs temps de téléchargement des images, vous pouvez créer un registre d'images local sur les clusters gérés à distance à l'aide de GitOps ZTP. Cette solution est utile dans les scénarios d'Edge computing où les clusters sont déployés à la périphérie du réseau.
Avant de pouvoir configurer le registre d'images local avec GitOps ZTP, vous devez configurer le partitionnement des disques dans le CR SiteConfig
que vous utilisez pour installer le cluster géré à distance. Après l'installation, vous configurez le registre d'images local à l'aide d'un CR PolicyGenTemplate
. Ensuite, le pipeline ZTP crée des CR de volume persistant (PV) et de revendication de volume persistant (PVC) et corrige la configuration imageregistry
.
Le registre d'images local ne peut être utilisé que pour les images d'applications utilisateur et ne peut pas être utilisé pour les images d'opérateurs OpenShift Container Platform ou Operator Lifecycle Manager.
Ressources supplémentaires
- Installation du bus de messagerie AMQ
- Pour plus d'informations sur les registres d'images de conteneurs, voir OpenShift image registry overview.
21.9.8. Configuration des événements bare-metal avec les CR PolicyGenTemplate
21.9.8.1. Configurer le partitionnement des disques avec SiteConfig
Configurer le partitionnement du disque pour un cluster géré à l'aide d'un CR SiteConfig
et du ZTP GitOps. Les détails de la partition du disque dans le CR SiteConfig
doivent correspondre au disque sous-jacent.
Utilisez des noms persistants pour les périphériques afin d'éviter que les noms de périphériques tels que /dev/sda
et /dev/sdb
ne soient échangés à chaque redémarrage. Vous pouvez utiliser rootDeviceHints
pour choisir le périphérique de démarrage et utiliser ensuite le même périphérique pour d'autres partitionnements.
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éé un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé pour l'utiliser avec GitOps Zero Touch Provisioning (ZTP).
Procédure
Ajoutez le fichier YAML suivant, qui décrit le partitionnement du disque hôte, au fichier
SiteConfig
CR que vous utilisez pour installer le cluster géré :nodes: rootDeviceHints: wwn: "0x62cea7f05c98c2002708a0a22ff480ea" diskPartition: - device: /dev/disk/by-id/wwn-0x62cea7f05c98c2002708a0a22ff480ea 1 partitions: - mount_point: /var/imageregistry size: 102500 2 start: 344844 3
- 1
- Ce paramètre dépend du matériel. Il peut s'agir d'un numéro de série ou d'un nom d'appareil. La valeur doit correspondre à la valeur définie pour
rootDeviceHints
. - 2
- La valeur minimale pour
size
est de 102500 MiB. - 3
- La valeur minimale pour
start
est de 25000 MiB. La valeur totale desize
etstart
ne doit pas dépasser la taille du disque, sinon l'installation échouera.
-
Sauvegardez le CR
SiteConfig
et mettez-le dans le répertoire de configuration du site.
Le pipeline ZTP approvisionne le cluster à l'aide de SiteConfig
CR et configure la partition du disque.
21.9.8.2. Configuration du registre d'images à l'aide des CR PolicyGenTemplate
Utilisez les CR PolicyGenTemplate
(PGT) pour appliquer les CR nécessaires à la configuration du registre d'images et à la correction de la configuration imageregistry
.
Conditions préalables
- Vous avez configuré une partition de disque dans le cluster géré.
-
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éé un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé pour l'utiliser avec GitOps Zero Touch Provisioning (ZTP).
Procédure
Configurez la classe de stockage, la revendication de volume persistant, le volume persistant et la configuration du registre d'images dans le CR
PolicyGenTemplate
approprié. Par exemple, pour configurer un site individuel, ajoutez le fichier YAML suivant au fichierexample-sno-site.yaml
:sourceFiles: # storage class - fileName: StorageClass.yaml policyName: "sc-for-image-registry" metadata: name: image-registry-sc annotations: ran.openshift.io/ztp-deploy-wave: "100" 1 # persistent volume claim - fileName: StoragePVC.yaml policyName: "pvc-for-image-registry" metadata: name: image-registry-pvc namespace: openshift-image-registry annotations: ran.openshift.io/ztp-deploy-wave: "100" spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: image-registry-sc volumeMode: Filesystem # persistent volume - fileName: ImageRegistryPV.yaml 2 policyName: "pv-for-image-registry" metadata: annotations: ran.openshift.io/ztp-deploy-wave: "100" - fileName: ImageRegistryConfig.yaml policyName: "config-for-image-registry" complianceType: musthave metadata: annotations: ran.openshift.io/ztp-deploy-wave: "100" spec: storage: pvc: claim: "image-registry-pvc"
- 1
- Définissez la valeur appropriée pour
ztp-deploy-wave
selon que vous configurez les registres d'images au niveau du site, du commun ou du groupe.ztp-deploy-wave: "100"
convient au développement ou aux tests car il vous permet de regrouper les fichiers source référencés. - 2
- Dans
ImageRegistryPV.yaml
, assurez-vous que le champspec.local.path
est défini à/var/imageregistry
pour correspondre à la valeur définie pour le champmount_point
dans le CRSiteConfig
.
ImportantNe définissez pas
complianceType: mustonlyhave
pour la configuration- fileName: ImageRegistryConfig.yaml
. Cela peut faire échouer le déploiement du pod de registre.-
Commencer le changement
PolicyGenTemplate
dans Git, puis pousser vers le dépôt Git surveillé par l'application GitOps ZTP ArgoCD.
Vérification
Suivez les étapes suivantes pour résoudre les erreurs du registre d'images local sur les clusters gérés :
Vérifiez que la connexion au registre est réussie lorsque vous êtes connecté au cluster géré. Exécutez les commandes suivantes :
Exporter le nom du cluster géré :
$ cluster=<nom_du_cluster_géré>
Obtenir les détails du cluster géré
kubeconfig
:$ oc get secret -n $cluster $cluster-admin-password -o jsonpath='{.data.password}' | base64 -d > kubeadmin-password-$cluster
Télécharger et exporter le cluster
kubeconfig
:$ oc get secret -n $cluster $cluster-admin-kubeconfig -o jsonpath='{.data.kubeconfig}' | base64 -d > kubeconfig-$cluster && export KUBECONFIG=./kubeconfig-$cluster
- Vérifiez l'accès au registre d'images à partir du cluster géré. Voir "Accès au registre".
Vérifiez que le CRD
Config
de l'instance du groupeimageregistry.operator.openshift.io
ne signale pas d'erreurs. Exécutez la commande suivante en vous connectant au cluster géré :$ oc get image.config.openshift.io cluster -o yaml
Exemple de sortie
apiVersion: config.openshift.io/v1 kind: Image metadata: annotations: include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" release.openshift.io/create-only: "true" creationTimestamp: "2021-10-08T19:02:39Z" generation: 5 name: cluster resourceVersion: "688678648" uid: 0406521b-39c0-4cda-ba75-873697da75a4 spec: additionalTrustedCA: name: acm-ice
Vérifiez que le site
PersistentVolumeClaim
du cluster géré contient des données. Exécutez la commande suivante en vous connectant au cluster géré :$ oc get pv image-registry-sc
Vérifiez que le pod
registry*
est en cours d'exécution et qu'il se trouve dans l'espace de nomsopenshift-image-registry
.$ oc get pods -n openshift-image-registry | grep registry*
Exemple de sortie
cluster-image-registry-operator-68f5c9c589-42cfg 1/1 Running 0 8d image-registry-5f8987879-6nx6h 1/1 Running 0 8d
Vérifiez que la partition du disque sur le cluster géré est correcte :
Ouvrez un shell de débogage sur le cluster géré :
$ oc debug node/sno-1.example.com
Exécutez
lsblk
pour vérifier les partitions du disque hôte :sh-4.4# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 446.6G 0 disk |-sda1 8:1 0 1M 0 part |-sda2 8:2 0 127M 0 part |-sda3 8:3 0 384M 0 part /boot |-sda4 8:4 0 336.3G 0 part /sysroot `-sda5 8:5 0 100.1G 0 part /var/imageregistry 1 sdb 8:16 0 446.6G 0 disk sr0 11:0 1 104M 0 rom
- 1
/var/imageregistry
indique que le disque est correctement partitionné.
Ressources supplémentaires
21.9.9. Configuration de la surveillance des événements sur le système nu à l'aide des CR PolicyGenTemplate
Vous pouvez configurer des événements matériels bare-metal pour les clusters vRAN qui sont déployés à l'aide du pipeline Zero Touch Provisioning (ZTP) de GitOps.
Conditions préalables
-
Installez le CLI OpenShift (
oc
). -
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin
. - Créez un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé.
Procédure
Pour configurer l'opérateur d'interconnexion AMQ et l'opérateur de relais d'événements Bare Metal, ajoutez le fichier YAML suivant à
spec.sourceFiles
dans le fichiercommon-ranGen.yaml
:# AMQ interconnect operator for fast events - fileName: AmqSubscriptionNS.yaml policyName: "subscriptions-policy" - fileName: AmqSubscriptionOperGroup.yaml policyName: "subscriptions-policy" - fileName: AmqSubscription.yaml policyName: "subscriptions-policy" # Bare Metal Event Rely operator - fileName: BareMetalEventRelaySubscriptionNS.yaml policyName: "subscriptions-policy" - fileName: BareMetalEventRelaySubscriptionOperGroup.yaml policyName: "subscriptions-policy" - fileName: BareMetalEventRelaySubscription.yaml policyName: "subscriptions-policy"
Ajoutez le CR
Interconnect
à.spec.sourceFiles
dans le fichier de configuration du site, par exemple le fichierexample-sno-site.yaml
:- fileName: AmqInstance.yaml policyName: "config-policy"
Ajoutez le CR
HardwareEvent
àspec.sourceFiles
dans votre fichier de configuration de groupe spécifique, par exemple dans le fichiergroup-du-sno-ranGen.yaml
:- fileName: HardwareEvent.yaml policyName: "config-policy" spec: nodeSelector: {} transportHost: "amqp://<amq_interconnect_name>.<amq_interconnect_namespace>.svc.cluster.local" 1 logLevel: "info"
- 1
- L'URL
transportHost
est composée des CR AMQ Interconnect existantsname
etnamespace
. Par exemple, danstransportHost: "amqp://amq-router.amq-router.svc.cluster.local"
, les AMQ Interconnectname
etnamespace
sont tous deux définis suramq-router
.
NoteChaque contrôleur de gestion de carte de base (BMC) ne nécessite qu'une seule ressource
HardwareEvent
.-
Validez le changement
PolicyGenTemplate
dans Git, puis transférez les changements dans le référentiel de configuration de votre site pour déployer la surveillance des événements sur de nouveaux sites à l'aide du protocole ZTP de GitOps. Créez le Secret Redfish en exécutant la commande suivante :
$ oc -n openshift-bare-metal-events create secret generic redfish-basic-auth \ --from-literal=username=<bmc_username> --from-literal=password=<bmc_password> \ --from-literal=hostaddr="<bmc_host_ip_addr>"
Ressources supplémentaires
- Pour plus d'informations sur l'installation de Bare Metal Event Relay, voir Installation de Bare Metal Event Relay à l'aide de l'interface CLI.
Ressources supplémentaires
- Pour plus d'informations sur la création du nom d'utilisateur, du mot de passe et de l'adresse IP de l'hôte pour le secret BMC, voir Création des CR d'événement et de secret bare-metal.
21.9.10. Utilisation de modèles de concentrateurs dans les CR PolicyGenTemplate
Topology Aware Lifecycle Manager prend en charge les fonctions partielles du modèle de cluster de hub de Red Hat Advanced Cluster Management (RHACM) dans les politiques de configuration utilisées avec GitOps ZTP.
Les modèles de grappes côté hub vous permettent de définir des politiques de configuration qui peuvent être dynamiquement adaptées aux grappes cibles. Il n'est donc pas nécessaire de créer des politiques distinctes pour de nombreux clusters ayant des configurations similaires mais des valeurs différentes.
Les modèles de politique sont limités au même espace de noms que celui dans lequel la politique est définie. Cela signifie que vous devez créer les objets référencés dans le modèle de hub dans le même espace de noms que celui où la politique est créée.
Les fonctions de modèle de concentrateur suivantes sont disponibles pour une utilisation dans GitOps ZTP avec TALM :
fromConfigmap
renvoie la valeur de la clé de données fournie dans la ressource nomméeConfigMap
.NoteLa taille des CR
ConfigMap
est limitée à 1 MiB. La taille effective des CRConfigMap
est encore limitée par l'annotationlast-applied-configuration
. Pour éviter la limite delast-applied-configuration
, ajoutez l'annotation suivante au modèleConfigMap
:argocd.argoproj.io/sync-options: Replace=true
-
base64enc
renvoie la valeur encodée en base64 de la chaîne d'entrée -
base64dec
renvoie la valeur décodée de la chaîne d'entrée encodée en base64 -
indent
renvoie la chaîne d'entrée avec les espaces d'indentation ajoutés -
autoindent
renvoie la chaîne d'entrée avec des espaces d'indentation ajoutés en fonction de l'espacement utilisé dans le modèle parent -
toInt
convertit et renvoie la valeur entière de la valeur d'entrée -
toBool
convertit la chaîne d'entrée en une valeur booléenne et renvoie la valeur booléenne
Diverses fonctions de la communauté Open source sont également disponibles pour une utilisation avec GitOps ZTP.
Ressources supplémentaires
21.9.10.1. Exemples de modèles de concentrateurs
Les exemples de code suivants sont des modèles de concentrateur valides. Chacun de ces modèles renvoie des valeurs provenant du CR ConfigMap
portant le nom test-config
dans l'espace de noms default
.
Renvoie la valeur avec la clé
common-key
:{{hub fromConfigMap "default" "test-config" "common-key" hub}}
Renvoie une chaîne en utilisant la valeur concaténée du champ
.ManagedClusterName
et la chaîne-name
:{{hub fromConfigMap "default" "test-config" (printf "%s-name" .ManagedClusterName) hub}}
Crée et renvoie une valeur booléenne à partir de la valeur concaténée du champ
.ManagedClusterName
et de la chaîne de caractères-name
:{{hub fromConfigMap "default" "test-config" (printf "%s-name" .ManagedClusterName) | toBool hub}}
Crée et renvoie une valeur entière à partir de la valeur concaténée du champ
.ManagedClusterName
et de la chaîne de caractères-name
:{{hub (printf "%s-name" .ManagedClusterName) | fromConfigMap "default" "test-config" | toInt hub}}
21.9.10.2. Spécification des cartes réseau de l'hôte dans les CR de PolicyGenTemplate de site avec des modèles de cluster de concentrateurs
Vous pouvez gérer les NIC des hôtes dans un seul CR ConfigMap
et utiliser les modèles de cluster de hub pour remplir les valeurs NIC personnalisées dans les polices générées qui sont appliquées aux hôtes du cluster. L'utilisation de modèles de cluster de concentrateurs dans les CR PolicyGenTemplate
(PGT) signifie qu'il n'est pas nécessaire de créer plusieurs CR PGT pour chaque site.
L'exemple suivant vous montre comment utiliser un seul CR ConfigMap
pour gérer les NIC des hôtes du cluster et les appliquer au cluster en tant que polices en utilisant un seul CR de site PolicyGenTemplate
.
Lorsque vous utilisez la fonction fromConfigmap
, la variable printf
n'est disponible que pour les champs clés de la ressource modèle data
. Vous ne pouvez pas l'utiliser pour les champs name
et namespace
.
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éé un dépôt Git dans lequel vous gérez les données de configuration de votre site personnalisé. Le dépôt doit être accessible depuis le cluster hub et être défini comme dépôt source pour l'application GitOps ZTP ArgoCD.
Procédure
Créez une ressource
ConfigMap
qui décrit les cartes réseau d'un groupe d'hôtes. Par exemple :apiVersion: v1 kind: ConfigMap metadata: name: sriovdata namespace: ztp-site annotations: argocd.argoproj.io/sync-options: Replace=true 1 data: example-sno-du_fh-numVfs: "8" example-sno-du_fh-pf: ens1f0 example-sno-du_fh-priority: "10" example-sno-du_fh-vlan: "140" example-sno-du_mh-numVfs: "8" example-sno-du_mh-pf: ens3f0 example-sno-du_mh-priority: "10" example-sno-du_mh-vlan: "150"
- 1
- L'annotation
argocd.argoproj.io/sync-options
n'est requise que si le siteConfigMap
a une taille supérieure à 1 Mio.
NoteLe site
ConfigMap
doit se trouver dans le même espace de noms que la politique pour laquelle la substitution du modèle de concentrateur a été effectuée.-
Commencer le CR
ConfigMap
dans Git, puis le pousser vers le dépôt Git contrôlé par l'application Argo CD. Créez une PGT CR de site qui utilise des modèles pour extraire les données requises de l'objet
ConfigMap
. En voici un exemple :apiVersion: ran.openshift.io/v1 kind: PolicyGenTemplate metadata: name: "site" namespace: "ztp-site" spec: remediationAction: inform bindingRules: group-du-sno: "" mcp: "master" sourceFiles: - fileName: SriovNetwork.yaml policyName: "config-policy" metadata: name: "sriov-nw-du-fh" spec: resourceName: du_fh vlan: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_fh-vlan" .ManagedClusterName) | toInt hub}}' - fileName: SriovNetworkNodePolicy.yaml policyName: "config-policy" metadata: name: "sriov-nnp-du-fh" spec: deviceType: netdevice isRdma: true nicSelector: pfNames: - '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_fh-pf" .ManagedClusterName) | autoindent hub}}' numVfs: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_fh-numVfs" .ManagedClusterName) | toInt hub}}' priority: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_fh-priority" .ManagedClusterName) | toInt hub}}' resourceName: du_fh - fileName: SriovNetwork.yaml policyName: "config-policy" metadata: name: "sriov-nw-du-mh" spec: resourceName: du_mh vlan: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_mh-vlan" .ManagedClusterName) | toInt hub}}' - fileName: SriovNetworkNodePolicy.yaml policyName: "config-policy" metadata: name: "sriov-nnp-du-mh" spec: deviceType: vfio-pci isRdma: false nicSelector: pfNames: - '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_mh-pf" .ManagedClusterName) hub}}' numVfs: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_mh-numVfs" .ManagedClusterName) | toInt hub}}' priority: '{{hub fromConfigMap "ztp-site" "sriovdata" (printf "%s-du_mh-priority" .ManagedClusterName) | toInt hub}}' resourceName: du_mh
Commencer le site
PolicyGenTemplate
CR dans Git et le pousser vers le dépôt Git qui est surveillé par l'application ArgoCD.NoteLes modifications ultérieures apportées à la CR
ConfigMap
référencée ne sont pas automatiquement synchronisées avec les politiques appliquées. Vous devez synchroniser manuellement les nouvelles modifications deConfigMap
pour mettre à jour les PolicyGenTemplate CR existants. Voir "Synchronisation des nouvelles modifications du ConfigMap avec les CR PolicyGenTemplate existantes".
21.9.10.3. Spécification des ID de VLAN dans les CR de groupe PolicyGenTemplate avec les modèles de cluster de hub
Vous pouvez gérer les ID de VLAN pour les clusters gérés dans un seul ConfigMap
CR et utiliser les modèles de cluster de hub pour remplir les ID de VLAN dans les polices générées qui sont appliquées aux clusters.
L'exemple suivant montre comment gérer les ID VLAN dans un seul ConfigMap
CR et les appliquer dans des polices de cluster individuelles en utilisant un seul PolicyGenTemplate
group CR.
Lorsque vous utilisez la fonction fromConfigmap
, la variable printf
n'est disponible que pour les champs clés de la ressource modèle data
. Vous ne pouvez pas l'utiliser pour les champs name
et namespace
.
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éé un dépôt Git où vous gérez les données de configuration de votre site personnalisé. Le dépôt doit être accessible depuis le cluster hub et être défini comme dépôt source pour l'application Argo CD.
Procédure
Créez un CR
ConfigMap
qui décrit les ID VLAN pour un groupe d'hôtes du cluster. Par exemple :apiVersion: v1 kind: ConfigMap metadata: name: site-data namespace: ztp-group annotations: argocd.argoproj.io/sync-options: Replace=true 1 data: site-1-vlan: "101" site-2-vlan: "234"
- 1
- L'annotation
argocd.argoproj.io/sync-options
n'est requise que si le siteConfigMap
a une taille supérieure à 1 Mio.
NoteLe site
ConfigMap
doit se trouver dans le même espace de noms que la politique pour laquelle la substitution du modèle de concentrateur a été effectuée.-
Commencer le CR
ConfigMap
dans Git, puis le pousser vers le dépôt Git contrôlé par l'application Argo CD. Créez un groupe PGT CR qui utilise un modèle de concentrateur pour extraire les ID VLAN requis de l'objet
ConfigMap
. Par exemple, ajoutez l'extrait YAML suivant au groupe PGT CR :- fileName: SriovNetwork.yaml policyName: "config-policy" metadata: name: "sriov-nw-du-mh" annotations: ran.openshift.io/ztp-deploy-wave: "10" spec: resourceName: du_mh vlan: '{{hub fromConfigMap "" "site-data" (printf "%s-vlan" .ManagedClusterName) | toInt hub}}'
Commencer le groupe
PolicyGenTemplate
CR dans Git, puis pousser vers le dépôt Git surveillé par l'application Argo CD.NoteLes modifications ultérieures apportées à la CR
ConfigMap
référencée ne sont pas automatiquement synchronisées avec les politiques appliquées. Vous devez synchroniser manuellement les nouvelles modifications deConfigMap
pour mettre à jour les PolicyGenTemplate CR existants. Voir "Synchronisation des nouvelles modifications du ConfigMap avec les CR PolicyGenTemplate existantes".
21.9.10.4. Synchronisation des nouveaux changements de ConfigMap avec les CR de PolicyGenTemplate existants
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éé un CR
PolicyGenTemplate
qui tire des informations d'un CRConfigMap
à l'aide de modèles de grappes de nœuds.
Procédure
-
Mettez à jour le contenu de votre
ConfigMap
CR, et appliquez les changements dans le cluster hub. Pour synchroniser le contenu de la CR
ConfigMap
mise à jour avec la politique déployée, effectuez l'une des opérations suivantes :Option 1 : Supprimer la politique existante. ArgoCD utilise la commande
PolicyGenTemplate
CR pour recréer immédiatement la politique supprimée. Par exemple, exécutez la commande suivante :oc delete policy <policy_name> -n <policy_namespace> $ oc delete policy <policy_name>
Option 2 : Appliquer une annotation spéciale
policy.open-cluster-management.io/trigger-update
à la police avec une valeur différente à chaque fois que vous mettez à jour le siteConfigMap
. Par exemple :$ oc annotate policy <policy_name> -n <policy_namespace> policy.open-cluster-management.io/trigger-update="1"
NoteVous devez appliquer la politique mise à jour pour que les modifications soient prises en compte. Pour plus d'informations, voir Annotation spéciale pour le retraitement.
Facultatif : si elle existe, supprimez la CR
ClusterGroupUpdate
qui contient la politique. Par exemple :oc delete clustergroupupgrade <cgu_name> -n <cgu_namespace>
Créez un nouveau CR
ClusterGroupUpdate
qui inclut la politique à appliquer avec les changements mis à jour deConfigMap
. Par exemple, ajoutez le fichier YAML suivant au fichiercgr-example.yaml
:apiVersion: ran.openshift.io/v1alpha1 kind: ClusterGroupUpgrade metadata: name: <cgr_name> namespace: <policy_namespace> spec: managedPolicies: - <managed_policy> enable: true clusters: - <managed_cluster_1> - <managed_cluster_2> remediationStrategy: maxConcurrency: 2 timeout: 240
Appliquer la politique mise à jour :
$ oc apply -f cgr-example.yaml