5.4. Utilisation des secrets de tirage des images
Si vous utilisez le registre d'images OpenShift et que vous tirez des flux d'images situés dans le même projet, alors votre compte de service pod devrait déjà avoir les permissions correctes et aucune action supplémentaire ne devrait être nécessaire.
Cependant, pour d'autres scénarios, tels que le référencement d'images à travers les projets OpenShift Container Platform ou à partir de registres sécurisés, des étapes de configuration supplémentaires sont nécessaires.
Vous pouvez obtenir le secret d'extraction de l'image à partir du Red Hat OpenShift Cluster Manager. Ce secret d'extraction est appelé pullSecret
.
Vous utilisez ce secret pour vous authentifier auprès des services fournis par les autorités incluses, Quay.io et registry.redhat.io, qui servent les images de conteneurs pour les composants d'OpenShift Container Platform.
5.4.1. Permettre aux pods de référencer des images à travers les projets Copier lienLien copié sur presse-papiers!
Lors de l'utilisation du registre d'images OpenShift, pour permettre aux pods de project-a
de référencer les images de project-b
, un compte de service de project-a
doit être lié au rôle de system:image-puller
de project-b
.
Lorsque vous créez un compte de service pod ou un espace de noms, attendez que le compte de service soit provisionné avec un secret docker pull ; si vous créez un pod avant que son compte de service ne soit entièrement provisionné, le pod ne parvient pas à accéder au registre d'images OpenShift.
Procédure
Pour permettre aux pods de
project-a
de faire référence aux images deproject-b
, liez un compte de service deproject-a
au rôle desystem:image-puller
deproject-b
:oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
$ oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après avoir ajouté ce rôle, les pods de
project-a
qui font référence au compte de service par défaut sont en mesure d'extraire des images deproject-b
.Pour autoriser l'accès à n'importe quel compte de service sur
project-a
, utilisez le groupe :oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
$ oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2. Permettre aux pods de référencer des images provenant d'autres registres sécurisés Copier lienLien copié sur presse-papiers!
Le fichier .dockercfg
$HOME/.docker/config.json
pour les clients Docker est un fichier d'informations d'identification Docker qui stocke vos informations d'authentification si vous vous êtes précédemment connecté à un registre sécurisé ou non.
Pour extraire une image de conteneur sécurisée qui ne provient pas du registre d'images d'OpenShift, vous devez créer un secret d'extraction à partir de vos informations d'identification Docker et l'ajouter à votre compte de service.
Le fichier d'informations d'identification Docker et le secret d'extraction associé peuvent contenir plusieurs références au même registre, chacune avec son propre ensemble d'informations d'identification.
Exemple de fichier config.json
Exemple de secret de tirage
Procédure
Si vous disposez déjà d'un fichier
.dockercfg
pour le registre sécurisé, vous pouvez créer un secret à partir de ce fichier en exécutant :oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ou si vous avez un fichier
$HOME/.docker/config.json
:oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Si vous n'avez pas encore de fichier d'informations d'identification Docker pour le registre sécurisé, vous pouvez créer un secret en exécutant :
oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour utiliser un secret afin d'extraire des images pour les pods, vous devez ajouter le secret à votre compte de service. Le nom du compte de service dans cet exemple doit correspondre au nom du compte de service utilisé par le pod. Le compte de service par défaut est
default
:oc secrets link default <pull_secret_name> --for=pull
$ oc secrets link default <pull_secret_name> --for=pull
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.1. Utilisation de registres privés avec authentification déléguée Copier lienLien copié sur presse-papiers!
Un registre privé peut déléguer l'authentification à un service distinct. Dans ce cas, des secrets d'extraction d'image doivent être définis à la fois pour l'authentification et pour les points finaux du registre.
Procédure
Créez un secret pour le serveur d'authentification délégué :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer un secret pour le registre privé :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3. 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.
Pour transférer votre cluster à un autre propriétaire, vous devez d'abord initier le transfert dans OpenShift Cluster Manager Hybrid Cloud Console, puis mettre à jour le pull secret sur le cluster. La mise à jour du secret d'extraction d'un cluster sans initier le transfert dans OpenShift Cluster Manager entraîne l'arrêt du reporting des métriques de télémétrie dans OpenShift Cluster Manager.
Pour plus d'informations sur le transfert de la propriété d'un cluster, voir "Transferring cluster ownership" dans la documentation de Red Hat OpenShift Cluster Manager.
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.