3.7. Configuration du registre pour vSphere
3.7.1. Registre d'images supprimé lors de l'installation
Sur les plateformes qui ne fournissent pas de stockage d'objets partageables, l'opérateur de registre d'images OpenShift s'amorce lui-même en tant que Removed
. Cela permet à openshift-installer
de réaliser des installations sur ces types de plateformes.
Après l'installation, vous devez modifier la configuration de l'opérateur du registre des images pour faire passer le site managementState
de Removed
à Managed
.
La console Prometheus fournit une alerte ImageRegistryRemoved
, par exemple :
"Image Registry has been removed. ImageStreamTags
il se peut que les fichiers BuildConfigs
et DeploymentConfigs
qui font référence à ImageStreamTags
ne fonctionnent pas comme prévu. Veuillez configurer le stockage et mettre à jour la configuration à l'état Managed
en éditant configs.imageregistry.operator.openshift.io."
3.7.2. Modification de l'état de gestion du registre d'images
Pour démarrer le registre d'images, vous devez modifier la configuration de l'opérateur du registre d'images managementState
de Removed
à Managed
.
Procédure
Modifier la configuration de l'opérateur du registre d'images
managementState
deRemoved
àManaged
. Par exemple :$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
3.7.3. Configuration du stockage du registre d'images
L'opérateur de registre d'images n'est pas disponible initialement pour les plates-formes qui ne fournissent pas de stockage par défaut. Après l'installation, vous devez configurer votre registre pour utiliser le stockage afin que l'opérateur de registre soit disponible.
Des instructions sont données pour la configuration d'un volume persistant, qui est nécessaire pour les clusters de production. Le cas échéant, des instructions sont fournies pour configurer un répertoire vide comme emplacement de stockage, ce qui n'est possible que pour les clusters de non-production.
Des instructions supplémentaires sont fournies pour permettre au registre d'images d'utiliser des types de stockage en bloc en utilisant la stratégie de déploiement Recreate
lors des mises à niveau.
3.7.3.1. Configuration du stockage de registre pour VMware vSphere
En tant qu'administrateur de cluster, vous devez, après l'installation, configurer votre registre pour utiliser le stockage.
Conditions préalables
- Permissions de l'administrateur du cluster.
- Un cluster sur VMware vSphere.
Stockage persistant provisionné pour votre cluster, tel que Red Hat OpenShift Data Foundation.
ImportantOpenShift Container Platform prend en charge l'accès
ReadWriteOnce
pour le stockage du registre d'images lorsque vous n'avez qu'une seule réplique. L'accèsReadWriteOnce
nécessite également que le registre utilise la stratégie de déploiementRecreate
. Pour déployer un registre d'images qui prend en charge la haute disponibilité avec deux répliques ou plus, l'accèsReadWriteMany
est requis.- Doit avoir une capacité de "100Gi".
Les tests montrent des problèmes avec l'utilisation du serveur NFS sur RHEL comme backend de stockage pour les services principaux. Cela inclut OpenShift Container Registry et Quay, Prometheus pour la surveillance du stockage, et Elasticsearch pour la journalisation du stockage. Par conséquent, il n'est pas recommandé d'utiliser le serveur NFS de RHEL pour sauvegarder les PV utilisés par les services principaux.
D'autres implémentations NFS sur le marché peuvent ne pas avoir ces problèmes. Contactez le vendeur de l'implémentation NFS pour plus d'informations sur les tests qui ont pu être réalisés avec ces composants de base d'OpenShift Container Platform.
Procédure
Pour configurer votre registre afin qu'il utilise le stockage, modifiez l'adresse
spec.storage.pvc
dans la ressourceconfigs.imageregistry/cluster
.NoteLorsque vous utilisez un espace de stockage partagé, vérifiez vos paramètres de sécurité afin d'empêcher tout accès extérieur.
Vérifiez que vous n'avez pas de pod de registre :
$ oc get pod -n openshift-image-registry -l docker-registry=default
Exemple de sortie
No resourses found in openshift-image-registry namespace
NoteSi vous avez un pod de registre dans votre sortie, il n'est pas nécessaire de poursuivre cette procédure.
Vérifier la configuration du registre :
$ oc edit configs.imageregistry.operator.openshift.io
Exemple de sortie
storage: pvc: claim: 1
- 1
- Laissez le champ
claim
vide pour permettre la création automatique d'une réclamation de volume persistant (PVC)image-registry-storage
. Le PVC est généré en fonction de la classe de stockage par défaut. Cependant, il faut savoir que la classe de stockage par défaut peut fournir des volumes ReadWriteOnce (RWO), tels qu'un RADOS Block Device (RBD), ce qui peut poser des problèmes lors de la réplication sur plusieurs répliques.
Vérifier l'état de
clusteroperator
:$ oc get clusteroperator image-registry
Exemple de sortie
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.7 True False False 6h50m
3.7.3.2. Configuration du stockage pour le registre d'images dans les clusters de non-production
Vous devez configurer le stockage pour l'opérateur de registre d'images. Pour les clusters de non-production, vous pouvez définir le registre d'images dans un répertoire vide. Dans ce cas, toutes les images seront perdues si vous redémarrez le registre.
Procédure
Pour définir le stockage du registre d'images dans un répertoire vide :
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
AvertissementConfigurez cette option pour les clusters de non-production uniquement.
Si vous exécutez cette commande avant que l'opérateur de registre d'images n'initialise ses composants, la commande
oc patch
échoue avec l'erreur suivante :Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
Attendez quelques minutes et exécutez à nouveau la commande.
3.7.3.3. Configuration du stockage dans le registre de blocs pour VMware vSphere
Pour permettre au registre d'images d'utiliser des types de stockage en bloc tels que vSphere Virtual Machine Disk (VMDK) lors des mises à niveau en tant qu'administrateur de cluster, vous pouvez utiliser la stratégie de déploiement Recreate
.
Les volumes de stockage en bloc sont pris en charge mais ne sont pas recommandés pour une utilisation avec le registre d'images sur des clusters de production. Une installation où le registre est configuré sur un stockage en bloc n'est pas hautement disponible car le registre ne peut pas avoir plus d'une réplique.
Procédure
Pour définir le stockage du registre d'images comme un type de stockage en bloc, corrigez le registre afin qu'il utilise la stratégie de déploiement
Recreate
et qu'il s'exécute avec la seule réplique1
:$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
Provisionnez le PV pour le périphérique de stockage en bloc et créez un PVC pour ce volume. Le volume bloc demandé utilise le mode d'accès ReadWriteOnce (RWO).
Créez un fichier
pvc.yaml
avec le contenu suivant pour définir un objet VMware vSpherePersistentVolumeClaim
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: image-registry-storage 1 namespace: openshift-image-registry 2 spec: accessModes: - ReadWriteOnce 3 resources: requests: storage: 100Gi 4
- 1
- Un nom unique qui représente l'objet
PersistentVolumeClaim
. - 2
- L'espace de noms de l'objet
PersistentVolumeClaim
, qui estopenshift-image-registry
. - 3
- Le mode d'accès de la demande de volume persistant. Avec
ReadWriteOnce
, le volume peut être monté avec des autorisations de lecture et d'écriture par un seul nœud. - 4
- Taille de la demande de volume persistant.
Créer l'objet
PersistentVolumeClaim
à partir du fichier :$ oc create -f pvc.yaml -n openshift-image-registry
Modifiez la configuration du registre de manière à ce qu'elle fasse référence au PVC correct :
$ oc edit config.imageregistry.operator.openshift.io -o yaml
Exemple de sortie
storage: pvc: claim: 1
- 1
- La création d'un PVC personnalisé vous permet de laisser le champ
claim
vide pour la création automatique par défaut d'un PVCimage-registry-storage
.
Pour obtenir des instructions sur la configuration du stockage du registre afin qu'il référence le PVC correct, voir Configuration du registre pour vSphere.
3.7.3.4. Configurer l'opérateur de registre d'images pour utiliser le stockage Ceph RGW avec Red Hat OpenShift Data Foundation
Red Hat OpenShift Data Foundation intègre plusieurs types de stockage que vous pouvez utiliser avec le registre d'images interne :
- Ceph, un système de fichiers partagé et distribué et un système de stockage d'objets sur site
- NooBaa, une passerelle d'objets multicloud
Ce document décrit la procédure à suivre pour configurer le registre d'images afin d'utiliser le stockage Ceph RGW.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Vous avez accès à la console web de OpenShift Container Platform.
-
Vous avez installé le CLI
oc
. - Vous avez installé l'opérateur OpenShift Data Foundation pour fournir le stockage d'objets et le stockage d'objets Ceph RGW.
Procédure
Créez la demande de seau d'objets à l'aide de la classe de stockage
ocs-storagecluster-ceph-rgw
. Par exemple :cat <<EOF | oc apply -f - apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: rgwtest namespace: openshift-storage spec: storageClassName: ocs-storagecluster-ceph-rgw generateBucketName: rgwtest EOF
Obtenez le nom du seau en entrant la commande suivante :
$ bucket_name=$(oc get obc -n openshift-storage rgwtest -o jsonpath='{.spec.bucketName}')
Obtenez les informations d'identification AWS en entrant les commandes suivantes :
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage rgwtest -o yaml | grep -w "AWS_ACCESS_KEY_ID:" | head -n1 | awk '{print $2}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage rgwtest -o yaml | grep -w "AWS_SECRET_ACCESS_KEY:" | head -n1 | awk '{print $2}' | base64 --decode)
Créez le secret
image-registry-private-configuration-user
avec les informations d'identification AWS pour le nouveau seau sousopenshift-image-registry project
en entrant la commande suivante :$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
Créez une route de cryptage pour Ceph RGW en entrant la commande suivante :
$ oc create route reencrypt <route_name> --service=rook-ceph-rgw-ocs-storagecluster-cephobjectstore --port=https -n openshift-storage
Obtenez l'hôte de la route en entrant la commande suivante :
route_host=$(oc get route <route_name> -n openshift-storage -o=jsonpath='{.spec.host}')
Créez une carte de configuration qui utilise un certificat d'entrée en entrant les commandes suivantes :
$ oc extract secret/router-certs-default -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
Configurez le registre d'images pour utiliser le stockage d'objets Ceph RGW en entrant la commande suivante :
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
3.7.3.5. Configurer l'opérateur de registre d'images pour utiliser le stockage Noobaa avec Red Hat OpenShift Data Foundation
Red Hat OpenShift Data Foundation intègre plusieurs types de stockage que vous pouvez utiliser avec le registre d'images interne :
- Ceph, un système de fichiers partagé et distribué et un système de stockage d'objets sur site
- NooBaa, une passerelle d'objets multicloud
Ce document décrit la procédure à suivre pour configurer le registre d'images afin d'utiliser le stockage Noobaa.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Vous avez accès à la console web de OpenShift Container Platform.
-
Vous avez installé le CLI
oc
. - Vous avez installé l'opérateur OpenShift Data Foundation pour fournir le stockage d'objets et le stockage d'objets Noobaa.
Procédure
Créez la demande de seau d'objets à l'aide de la classe de stockage
openshift-storage.noobaa.io
. Par exemple :cat <<EOF | oc apply -f - apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: noobaatest namespace: openshift-storage spec: storageClassName: openshift-storage.noobaa.io generateBucketName: noobaatest EOF
Obtenez le nom du seau en entrant la commande suivante :
$ bucket_name=$(oc get obc -n openshift-storage noobaatest -o jsonpath='{.spec.bucketName}')
Obtenez les informations d'identification AWS en entrant les commandes suivantes :
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_ACCESS_KEY_ID:" | head -n1 | awk '{print $2}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_SECRET_ACCESS_KEY:" | head -n1 | awk '{print $2}' | base64 --decode)
Créez le secret
image-registry-private-configuration-user
avec les informations d'identification AWS pour le nouveau seau sousopenshift-image-registry project
en entrant la commande suivante :$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
Obtenez l'hôte de la route en entrant la commande suivante :
$ route_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
Créez une carte de configuration qui utilise un certificat d'entrée en entrant les commandes suivantes :
$ oc extract secret/router-certs-default -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
Configurez le registre d'images pour utiliser le stockage d'objets Nooba en entrant la commande suivante :
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
3.7.4. Configurer l'opérateur de registre d'images pour utiliser le stockage CephFS avec Red Hat OpenShift Data Foundation
Red Hat OpenShift Data Foundation intègre plusieurs types de stockage que vous pouvez utiliser avec le registre d'images interne :
- Ceph, un système de fichiers partagé et distribué et un système de stockage d'objets sur site
- NooBaa, une passerelle d'objets multicloud
Ce document décrit la procédure à suivre pour configurer le registre d'images afin d'utiliser le stockage CephFS.
CephFS utilise le stockage par revendication de volume persistant (PVC). Il n'est pas recommandé d'utiliser les PVC pour le stockage des registres d'images s'il existe d'autres options, telles que Ceph RGW ou Noobaa.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
. - Vous avez accès à la console web de OpenShift Container Platform.
-
Vous avez installé le CLI
oc
. - Vous avez installé OpenShift Data Foundation Operator pour fournir le stockage d'objets et le stockage de fichiers CephFS.
Procédure
Créez un PVC pour utiliser la classe de stockage
cephfs
. Par exemple :cat <<EOF | oc apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: registry-storage-pvc namespace: openshift-image-registry spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi storageClassName: ocs-storagecluster-cephfs EOF
Configurez le registre d'images pour utiliser le système de stockage de fichiers CephFS en entrant la commande suivante :
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","pvc":{"claim":"registry-storage-pvc"}}}}' --type=merge