5.4. En utilisant des secrets de tirage d’image
Lorsque 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 autorisations correctes et aucune action supplémentaire ne devrait être requise.
Cependant, pour d’autres scénarios, tels que le référencement d’images à travers Red Hat OpenShift Service sur des projets AWS ou à partir de registres sécurisés, des étapes de configuration supplémentaires sont nécessaires.
Il est possible d’obtenir le secret de l’image de Red Hat OpenShift Cluster Manager. Ce secret de traction s’appelle pullSecret.
Ce pull secret vous permet d’authentifier avec les services fournis par les autorités incluses, Quay.io et Registry.redhat.io, qui servent les images de conteneur pour Red Hat OpenShift Service sur les composants AWS.
5.4.1. Autoriser les pods à 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 dans le projet-a de référencer des images dans le projet-b, un compte de service dans le projet-a doit être lié au rôle système: image-puller dans le projet-b.
Lorsque vous créez un compte de service pod ou un espace de noms, attendez que le compte de service soit fourni avec un secret de traction docker; si vous créez un pod avant que son compte de service ne soit entièrement fourni, le pod ne parvient pas à accéder au registre d’images OpenShift.
Procédure
Afin de permettre aux pods de projet-a de référencer des images dans le projet-b, lier un compte de service dans le projet-a au système: image-puller role in project-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 dans le projet - une référence au compte de service par défaut sont capables de tirer des images du projet-b.
Afin de permettre l’accès à n’importe quel compte de service dans le projet-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. Autoriser les pods à référencer des images d’autres registres sécurisés Copier lienLien copié sur presse-papiers!
Afin de tirer un conteneur sécurisé à partir d’autres registres privés ou sécurisés, vous devez créer un secret de traction à partir des informations d’identification client de votre conteneur, tels que Docker ou Podman, et l’ajouter à votre compte de service.
Docker et Podman utilisent un fichier de configuration pour stocker les détails d’authentification pour se connecter à un registre sécurisé ou non sécurisé:
- Docker: Par défaut, Docker utilise $HOME/.docker/config.json.
- Le Podman: Par défaut, Podman utilise $HOME/.config/containers/auth.json.
Ces fichiers stockent vos informations d’authentification si vous vous êtes déjà connecté à un registre sécurisé ou non sécurisé.
Les fichiers d’identification Docker et Podman ainsi que le secret d’attraction associé peuvent contenir plusieurs références au même registre s’ils ont des chemins uniques, par exemple quay.io et quay.<example_repository> io/. Cependant, ni Docker ni Podman ne prennent en charge plusieurs entrées pour le même chemin de registre.
Exemple de fichier config.json
Exemple tirer secret
5.4.2.1. Créer un secret d’attraction Copier lienLien copié sur presse-papiers!
Procédure
Créer un secret à partir d’un fichier d’authentification existant:
Dans le cas des clients Docker utilisant .docker/config.json, entrez la commande suivante:
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 Dans le cas des clients Podman utilisant .config/containers/auth.json, entrez la commande suivante:
oc create secret generic <pull_secret_name> \ --from-file=<path/to/.config/containers/auth.json> \ --type=kubernetes.io/podmanconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=<path/to/.config/containers/auth.json> \ --type=kubernetes.io/podmanconfigjson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Lorsque vous n’avez pas déjà un fichier d’identification Docker pour le registre sécurisé, vous pouvez créer un secret en exécutant la commande suivante:
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
5.4.2.2. En utilisant un secret d’attraction dans une charge de travail Copier lienLien copié sur presse-papiers!
Il est possible d’utiliser un pull secret pour permettre aux charges de travail de tirer des images d’un registre privé avec l’une des méthodes suivantes:
- En liant le secret à un compte ServiceAccount, qui applique automatiquement le secret à tous les pods utilisant ce compte de service.
- En définissant imagePullSecrets directement dans les configurations de charge de travail, ce qui est utile pour des environnements comme GitOps ou ArgoCD.
Procédure
Il est possible d’utiliser un secret pour tirer des images pour les pods en ajoutant le secret à votre compte de service. Il est à noter que le nom du compte de service doit correspondre au nom du compte de service utilisé par Pod. Le compte de service par défaut est par défaut.
Entrez la commande suivante pour lier le pull secret à un compte ServiceAccount:
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 Afin de vérifier le changement, entrez la commande suivante:
oc get serviceaccount default -o yaml
$ oc get serviceaccount default -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Au lieu de lier le secret à un compte de service, vous pouvez alternativement le référencer directement dans votre pod ou la définition de votre charge de travail. Ceci est utile pour les flux de travail GitOps tels que ArgoCD. À titre d’exemple:
Exemple de spécification de pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de flux de travail ArgoCD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.3. Extraction des registres privés avec authentification déléguée Copier lienLien copié sur presse-papiers!
Le registre privé peut déléguer l’authentification à un service distinct. Dans ces cas, les secrets de tirage d’image doivent être définis pour les points de terminaison d’authentification et de registre.
Procédure
Créer 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