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
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
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
5.4.2. Permettre aux pods de référencer des images provenant d'autres registres sécurisés
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
{ "auths":{ "cloud.openshift.com":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io/repository-main":{ "auth":"b3Blb=", "email":"you@example.com" } } }
Exemple de secret de tirage
apiVersion: v1 data: .dockerconfigjson: ewogICAiYXV0aHMiOnsKICAgICAgIm0iOnsKICAgICAgIsKICAgICAgICAgImF1dGgiOiJiM0JsYj0iLAogICAgICAgICAiZW1haWwiOiJ5b3VAZXhhbXBsZS5jb20iCiAgICAgIH0KICAgfQp9Cg== kind: Secret metadata: creationTimestamp: "2021-09-09T19:10:11Z" name: pull-secret namespace: default resourceVersion: "37676" uid: e2851531-01bc-48ba-878c-de96cfe31020 type: Opaque
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
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
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>
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
5.4.2.1. Utilisation de registres privés avec authentification déléguée
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é :
$ oc create secret docker-registry \ --docker-server=sso.redhat.com \ --docker-username=developer@example.com \ --docker-password=******** \ --docker-email=unused \ redhat-connect-sso secret/redhat-connect-sso
Créer un secret pour le registre privé :
$ oc create secret docker-registry \ --docker-server=privateregistry.example.com \ --docker-username=developer@example.com \ --docker-password=******** \ --docker-email=unused \ private-registry secret/private-registry
5.4.3. Mise à jour du secret d'extraction du cluster global
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> 1
- 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>" \ 1 --auth-basic="<username>:<password>" \ 2 --to=<pull_secret_location> 3
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> 1
- 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.