12.3. Mise à jour d'un cluster dans un environnement déconnecté à l'aide du service de mise à jour d'OpenShift
Pour obtenir une expérience de mise à jour similaire aux clusters connectés, vous pouvez utiliser les procédures suivantes pour installer et configurer OpenShift Update Service (OSUS) dans un environnement déconnecté.
Les étapes suivantes décrivent le processus de haut niveau de mise à jour d'un cluster dans un environnement déconnecté à l'aide d'OSUS :
- Configurer l'accès à un registre sécurisé.
- Mettez à jour le secret d'extraction du cluster global pour accéder à votre registre miroir.
- Installer l'OSUS Operator.
- Créer une image de conteneur de données graphiques pour le service de mise à jour OpenShift.
- Installez l'application OSUS et configurez vos clusters pour utiliser le service de mise à jour local d'OpenShift.
- Effectuez une procédure de mise à jour prise en charge à partir de la documentation, comme vous le feriez avec un cluster connecté.
12.3.1. Utiliser le service de mise à jour OpenShift dans un environnement déconnecté Copier lienLien copié sur presse-papiers!
Le service de mise à jour OpenShift (OSUS) fournit des recommandations de mise à jour aux clusters OpenShift Container Platform. Red Hat héberge publiquement le service de mise à jour OpenShift, et les clusters dans un environnement connecté peuvent se connecter au service via des API publiques pour récupérer les recommandations de mise à jour.
Cependant, les clusters dans un environnement déconnecté ne peuvent pas accéder à ces API publiques pour récupérer les informations de mise à jour. Pour avoir une expérience de mise à jour similaire dans un environnement déconnecté, vous pouvez installer et configurer OpenShift Update Service localement afin qu'il soit disponible dans l'environnement déconnecté.
Les sections suivantes décrivent comment installer une instance locale d'OSUS et la configurer pour qu'elle fournisse des recommandations de mise à jour à un cluster.
Ressources supplémentaires
12.3.2. Conditions préalables Copier lienLien copié sur presse-papiers!
-
L'outil d'interface de ligne de commande (CLI)
oc
doit être installé. - Vous devez approvisionner un registre local d'images de conteneurs avec les images de conteneurs pour votre mise à jour, comme décrit dans Mirroring the OpenShift Container Platform image repository.
12.3.3. Configurer l'accès à un registre sécurisé pour OpenShift Update Service Copier lienLien copié sur presse-papiers!
Si les images de version sont contenues dans un registre dont le certificat HTTPS X.509 est signé par une autorité de certification personnalisée, suivez les étapes de la section Configuration de référentiels de confiance supplémentaires pour l'accès au registre d'images, ainsi que les modifications suivantes pour le service de mise à jour.
L'opérateur du service de mise à jour OpenShift a besoin du nom de la clé de la carte de configuration updateservice-registry
dans le certificat de l'autorité de certification du registre.
Registre d'images Exemple de carte de configuration de l'autorité de certification pour le service de mise à jour
- 1
- L'opérateur du service de mise à jour OpenShift nécessite le nom de la clé de la carte de configuration updateservice-registry dans le certificat de l'autorité de certification du registre.
- 2
- Si le registre comporte le port, tel que
registry-with-port.example.com:5000
,:
doit être remplacé par..
.
12.3.4. Mise à jour du secret d'extraction du cluster global Copier lienLien copié sur presse-papiers!
Vous pouvez mettre à jour le secret d'extraction global pour votre cluster en remplaçant le secret d'extraction actuel ou en ajoutant un nouveau secret d'extraction.
Cette procédure est nécessaire lorsque les utilisateurs utilisent, pour stocker les images, un registre différent de celui utilisé lors de l'installation.
Conditions préalables
-
Vous avez accès au cluster en tant qu'utilisateur ayant le rôle
cluster-admin
.
Procédure
Facultatif : Pour ajouter un nouveau secret d'extraction au secret d'extraction existant, procédez comme suit :
Entrez la commande suivante pour télécharger le secret d'extraction :
oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' ><pull_secret_location>
$ oc get secret/pull-secret -n openshift-config --template='{{index .data ".dockerconfigjson" | base64decode}}' ><pull_secret_location>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquer le chemin d'accès au fichier de secret d'extraction.
Entrez la commande suivante pour ajouter le nouveau secret d'extraction :
oc registry login --registry="<registry>" \ --auth-basic="<username>:<password>" \ --to=<pull_secret_location>
$ oc registry login --registry="<registry>" \
1 --auth-basic="<username>:<password>" \
2 --to=<pull_secret_location>
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vous pouvez également procéder à une mise à jour manuelle du fichier "pull secret".
Entrez la commande suivante pour mettre à jour le secret d'extraction global pour votre cluster :
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location>
oc set data secret/pull-secret -n openshift-config --from-file=.dockerconfigjson=<pull_secret_location>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le chemin d'accès au nouveau fichier de secret d'extraction.
Cette mise à jour est déployée sur tous les nœuds, ce qui peut prendre un certain temps en fonction de la taille de votre cluster.
NoteDepuis OpenShift Container Platform 4.7.4, les modifications apportées au secret de tirage global ne déclenchent plus la vidange ou le redémarrage d'un nœud.
12.3.5. Installation de l'opérateur OpenShift Update Service Copier lienLien copié sur presse-papiers!
Pour installer OpenShift Update Service, vous devez d'abord installer OpenShift Update Service Operator en utilisant la console web ou le CLI d'OpenShift Container Platform.
Pour les clusters qui sont installés dans des environnements déconnectés, également connus sous le nom de clusters déconnectés, Operator Lifecycle Manager ne peut pas accéder par défaut aux sources OperatorHub fournies par Red Hat et hébergées sur des registres distants car ces sources distantes requièrent une connectivité Internet complète. Pour plus d'informations, voir Utilisation d'Operator Lifecycle Manager sur des réseaux restreints.
12.3.5.1. Installation de l'opérateur OpenShift Update Service à l'aide de la console web Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la console web pour installer l'opérateur OpenShift Update Service.
Procédure
Dans la console web, cliquez sur Operators
OperatorHub. NoteEntrez
Update Service
dans le champ Filter by keyword… pour trouver l'opérateur plus rapidement.Choisissez OpenShift Update Service dans la liste des opérateurs disponibles et cliquez sur Install.
-
Le canal
v1
est sélectionné comme Update Channel car c'est le seul canal disponible dans cette version. - Sélectionnez A specific namespace on the cluster sous Installation Mode.
-
Sélectionnez un espace de noms pour Installed Namespace ou acceptez l'espace de noms recommandé
openshift-update-service
. Sélectionnez un site Approval Strategy:
- La stratégie Automatic permet à Operator Lifecycle Manager (OLM) de mettre automatiquement à jour l'opérateur lorsqu'une nouvelle version est disponible.
- La stratégie Manual exige qu'un administrateur de cluster approuve la mise à jour de l'opérateur.
- Cliquez sur Install.
-
Le canal
-
Vérifiez que l'opérateur OpenShift Update Service est installé en passant à la page Operators
Installed Operators. - Assurez-vous que OpenShift Update Service est répertorié dans l'espace de noms sélectionné avec un Status de Succeeded.
12.3.5.2. Installation de l'opérateur OpenShift Update Service à l'aide de la CLI Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser l'OpenShift CLI (oc
) pour installer l'OpenShift Update Service Operator.
Procédure
Créer un espace de noms pour l'opérateur de service de mise à jour OpenShift :
Créez un fichier YAML de l'objet
Namespace
, par exemple,update-service-namespace.yaml
, pour l'opérateur du service de mise à jour OpenShift :Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Définissez l'étiquette
openshift.io/cluster-monitoring
pour activer la surveillance des clusters recommandée par l'opérateur sur cet espace de noms.
Créer l'espace de noms :
oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc create -f update-service-namespace.yaml
$ oc create -f update-service-namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Installez l'opérateur OpenShift Update Service en créant les objets suivants :
Créez un fichier YAML de l'objet
OperatorGroup
, par exempleupdate-service-operator-group.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un objet
OperatorGroup
:oc -n openshift-update-service create -f <filename>.yaml
oc -n openshift-update-service create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc -n openshift-update-service create -f update-service-operator-group.yaml
$ oc -n openshift-update-service create -f update-service-operator-group.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez un fichier YAML de l'objet
Subscription
, par exempleupdate-service-subscription.yaml
:Exemple d'abonnement
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Indiquez le nom de la source de catalogue qui fournit l'opérateur. Pour les clusters qui n'utilisent pas un Operator Lifecycle Manager (OLM) personnalisé, indiquez
redhat-operators
. Si votre cluster OpenShift Container Platform est installé dans un environnement déconnecté, indiquez le nom de l'objetCatalogSource
créé lorsque vous avez configuré Operator Lifecycle Manager (OLM).
Créer l'objet
Subscription
:oc create -f <filename>.yaml
$ oc create -f <filename>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Par exemple :
oc -n openshift-update-service create -f update-service-subscription.yaml
$ oc -n openshift-update-service create -f update-service-subscription.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow L'opérateur OpenShift Update Service est installé dans l'espace de noms
openshift-update-service
et cible l'espace de nomsopenshift-update-service
.
Vérifier l'installation de l'opérateur :
oc -n openshift-update-service get clusterserviceversions
$ oc -n openshift-update-service get clusterserviceversions
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
NAME DISPLAY VERSION REPLACES PHASE update-service-operator.v4.6.0 OpenShift Update Service 4.6.0 Succeeded ...
NAME DISPLAY VERSION REPLACES PHASE update-service-operator.v4.6.0 OpenShift Update Service 4.6.0 Succeeded ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si l'opérateur OpenShift Update Service est listé, l'installation a réussi. Le numéro de version peut être différent de celui indiqué.
12.3.6. Création de l'image du conteneur de données graphiques d'OpenShift Update Service Copier lienLien copié sur presse-papiers!
Le service de mise à jour OpenShift nécessite une image de conteneur de données graphiques, à partir de laquelle le service de mise à jour OpenShift récupère des informations sur l'appartenance à un canal et les bords de mise à jour bloqués. Les données de graphe sont généralement récupérées directement à partir du référentiel de données de graphe de la mise à jour. Dans les environnements où une connexion internet n'est pas disponible, le chargement de ces informations à partir d'un conteneur init est une autre façon de rendre les données graphiques disponibles pour le service de mise à jour OpenShift. Le rôle du conteneur init est de fournir une copie locale des données du graphe, et pendant l'initialisation du pod, le conteneur init copie les données sur un volume accessible par le service.
Le plugin oc-mirror OpenShift CLI (oc
) crée cette image de conteneur de données graphiques en plus de la mise en miroir des images de version. Si vous avez utilisé le plugin oc-mirror pour créer un miroir de vos images, vous pouvez sauter cette procédure.
Procédure
Créez un fichier Docker, par exemple
./Dockerfile
, contenant les éléments suivants :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Utilisez le fichier docker créé à l'étape précédente pour construire une image de conteneur de données graphiques, par exemple,
registry.example.com/openshift/graph-data:latest
:podman build -f ./Dockerfile -t registry.example.com/openshift/graph-data:latest
$ podman build -f ./Dockerfile -t registry.example.com/openshift/graph-data:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pousser l'image du conteneur de données graphiques créée à l'étape précédente vers un dépôt accessible à OpenShift Update Service, par exemple,
registry.example.com/openshift/graph-data:latest
:podman push registry.example.com/openshift/graph-data:latest
$ podman push registry.example.com/openshift/graph-data:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NotePour pousser une image de données graphiques vers un registre local dans un environnement déconnecté, copiez l'image du conteneur de données graphiques créée à l'étape précédente vers un référentiel accessible au service de mise à jour OpenShift. Exécutez
oc image mirror --help
pour connaître les options disponibles.
12.3.7. Création d'une application OpenShift Update Service Copier lienLien copié sur presse-papiers!
Vous pouvez créer une application OpenShift Update Service en utilisant la console web ou le CLI d'OpenShift Container Platform.
12.3.7.1. Créer une application OpenShift Update Service en utilisant la console web Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser la console web d'OpenShift Container Platform pour créer une application OpenShift Update Service en utilisant l'OpenShift Update Service Operator.
Conditions préalables
- L'opérateur de service de mise à jour OpenShift a été installé.
- L'image du conteneur de données graphiques d'OpenShift Update Service a été créée et poussée vers un dépôt accessible à OpenShift Update Service.
- La version actuelle et les versions cibles des mises à jour ont été mises en miroir dans un registre accessible localement.
Procédure
-
Dans la console web, cliquez sur Operators
Installed Operators. - Choisissez OpenShift Update Service dans la liste des opérateurs installés.
- Cliquez sur l'onglet Update Service.
- Cliquez sur Create UpdateService.
-
Entrez un nom dans le champ Name, par exemple
service
. -
Saisissez le pullspec local dans le champ Graph Data Image vers l'image du conteneur de données graphiques créée dans \N "Création de l'image du conteneur de données graphiques d'OpenShift Update Service\N", par exemple,
registry.example.com/openshift/graph-data:latest
. -
Dans le champ Releases, saisissez le registre local et le référentiel créés pour contenir les images de version dans le document "Mirroring the OpenShift Container Platform image repository", par exemple,
registry.example.com/ocp4/openshift4-release-images
. -
Saisissez
2
dans le champ Replicas. - Cliquez sur Create pour créer l'application OpenShift Update Service.
Vérifiez l'application OpenShift Update Service :
- Dans la liste UpdateServices de l'onglet Update Service, cliquez sur l'application Update Service que vous venez de créer.
- Cliquez sur l'onglet Resources.
- Vérifiez que chaque ressource d'application a un statut de Created.
12.3.7.2. Créer une application OpenShift Update Service en utilisant le CLI Copier lienLien copié sur presse-papiers!
Vous pouvez utiliser l'OpenShift CLI (oc
) pour créer une application OpenShift Update Service.
Conditions préalables
- L'opérateur de service de mise à jour OpenShift a été installé.
- L'image du conteneur de données graphiques d'OpenShift Update Service a été créée et poussée vers un dépôt accessible à OpenShift Update Service.
- La version actuelle et les versions cibles des mises à jour ont été mises en miroir dans un registre accessible localement.
Procédure
Configurez l'espace de noms cible d'OpenShift Update Service, par exemple,
openshift-update-service
:NAMESPACE=openshift-update-service
$ NAMESPACE=openshift-update-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow L'espace de noms doit correspondre à la valeur
targetNamespaces
du groupe d'opérateurs.Configurez le nom de l'application OpenShift Update Service, par exemple,
service
:NAME=service
$ NAME=service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configurez le registre local et le référentiel pour les images de version comme configuré dans "Mirroring the OpenShift Container Platform image repository", par exemple,
registry.example.com/ocp4/openshift4-release-images
:RELEASE_IMAGES=registry.example.com/ocp4/openshift4-release-images
$ RELEASE_IMAGES=registry.example.com/ocp4/openshift4-release-images
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définir le pullspec local pour l'image de données graphiques à l'image de conteneur de données graphiques créée dans " Création de l'image de conteneur de données graphiques d'OpenShift Update Service ", par exemple,
registry.example.com/openshift/graph-data:latest
:GRAPH_DATA_IMAGE=registry.example.com/openshift/graph-data:latest
$ GRAPH_DATA_IMAGE=registry.example.com/openshift/graph-data:latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un objet d'application OpenShift Update Service :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Vérifiez l'application OpenShift Update Service :
Utilisez la commande suivante pour obtenir un itinéraire de moteur de stratégie :
while sleep 1; do POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"; SCHEME="${POLICY_ENGINE_GRAPH_URI%%:*}"; if test "${SCHEME}" = http -o "${SCHEME}" = https; then break; fi; done
$ while sleep 1; do POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"; SCHEME="${POLICY_ENGINE_GRAPH_URI%%:*}"; if test "${SCHEME}" = http -o "${SCHEME}" = https; then break; fi; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Il se peut que vous deviez interroger le système jusqu'à ce que la commande aboutisse.
Récupérer un graphe du moteur de politiques. Veillez à spécifier une version valide pour
channel
. Par exemple, si vous utilisez OpenShift Container Platform 4.12, utilisezstable-4.12
:while sleep 10; do HTTP_CODE="$(curl --header Accept:application/json --output /dev/stderr --write-out "%{http_code}" "${POLICY_ENGINE_GRAPH_URI}?channel=stable-4.6")"; if test "${HTTP_CODE}" -eq 200; then break; fi; echo "${HTTP_CODE}"; done
$ while sleep 10; do HTTP_CODE="$(curl --header Accept:application/json --output /dev/stderr --write-out "%{http_code}" "${POLICY_ENGINE_GRAPH_URI}?channel=stable-4.6")"; if test "${HTTP_CODE}" -eq 200; then break; fi; echo "${HTTP_CODE}"; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette opération s'effectue jusqu'à ce que la demande de graphique aboutisse ; toutefois, le graphique résultant peut être vide en fonction des images de version que vous avez mises en miroir.
Le nom de la route du moteur de stratégie ne doit pas comporter plus de 63 caractères, conformément à la norme RFC-1123. Si vous voyez le statut ReconcileCompleted
comme false
avec la raison CreateRouteFailed
causée par host must conform to DNS 1123 naming convention and must be no more than 63 characters
, essayez de créer le service de mise à jour avec un nom plus court.
12.3.7.2.1. Configuration de l'opérateur de version de cluster (CVO) Copier lienLien copié sur presse-papiers!
Après l'installation de l'opérateur OpenShift Update Service et la création de l'application OpenShift Update Service, le Cluster Version Operator (CVO) peut être mis à jour pour extraire les données graphiques de l'OpenShift Update Service installé localement.
Conditions préalables
- L'opérateur de service de mise à jour OpenShift a été installé.
- L'image du conteneur de données graphiques d'OpenShift Update Service a été créée et poussée vers un dépôt accessible à OpenShift Update Service.
- La version actuelle et les versions cibles des mises à jour ont été mises en miroir dans un registre accessible localement.
- L'application OpenShift Update Service a été créée.
Procédure
Définissez l'espace de noms cible du service de mise à jour OpenShift, par exemple,
openshift-update-service
:NAMESPACE=openshift-update-service
$ NAMESPACE=openshift-update-service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définissez le nom de l'application OpenShift Update Service, par exemple,
service
:NAME=service
$ NAME=service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Obtenir la route du moteur de politique :
POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"
$ POLICY_ENGINE_GRAPH_URI="$(oc -n "${NAMESPACE}" get -o jsonpath='{.status.policyEngineURI}/api/upgrades_info/v1/graph{"\n"}' updateservice "${NAME}")"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définir le patch pour les données du graphique de traction :
PATCH="{\"spec\":{\"upstream\":\"${POLICY_ENGINE_GRAPH_URI}\"}}"
$ PATCH="{\"spec\":{\"upstream\":\"${POLICY_ENGINE_GRAPH_URI}\"}}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Patch de l'OVE pour utiliser le service de mise à jour local d'OpenShift :
oc patch clusterversion version -p $PATCH --type merge
$ oc patch clusterversion version -p $PATCH --type merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Voir Activation du proxy à l'échelle du cluster pour configurer l'autorité de certification de manière à ce qu'elle fasse confiance au serveur de mise à jour.
12.3.8. Prochaines étapes Copier lienLien copié sur presse-papiers!
Avant de mettre à jour votre cluster, vérifiez que les conditions suivantes sont remplies :
- Le Cluster Version Operator (CVO) est configuré pour utiliser votre application OpenShift Update Service installée localement.
- La carte de configuration de la signature de l'image de version pour la nouvelle version est appliquée à votre cluster.
- Les images de la version actuelle et de la version cible de la mise à jour sont mises en miroir dans un registre accessible localement.
- Une image récente du conteneur de données graphiques a été mise en miroir dans votre registre local.
Après avoir configuré votre cluster pour utiliser le service de mise à jour OpenShift installé localement et le registre miroir local, vous pouvez utiliser l'une des méthodes de mise à jour suivantes :