Chapitre 7. En utilisant des flux d’images avec les ressources Kubernetes
Les flux d’images, étant Red Hat OpenShift Service sur les ressources natives AWS, fonctionnent avec toutes les ressources natives disponibles dans Red Hat OpenShift Service sur AWS, telles que les ressources Build ou DeploymentConfigs. Il est également possible de les faire fonctionner avec des ressources natives Kubernetes, telles que les ressources Job, ReplicationController, ReplicaSet ou Kubernetes Deployment.
7.1. Activer les flux d’images avec les ressources Kubernetes
Lorsque vous utilisez des flux d’images avec les ressources Kubernetes, vous pouvez uniquement référencer des flux d’images qui résident dans le même projet que la ressource. La référence du flux d’images doit consister en une seule valeur de segment, par exemple ruby:2.5, où ruby est le nom d’un flux d’images qui a une balise nommée 2.5 et réside dans le même projet que la ressource faisant la référence.
Évitez d’exécuter des charges de travail ou de partager l’accès aux projets par défaut. Les projets par défaut sont réservés à l’exécution de composants de cluster de base.
Les projets par défaut suivants sont considérés comme hautement privilégiés: par défaut, kube-public, kube-system, openshift, openshift-infra, openshift-node, et d’autres projets créés par système qui ont l’étiquette openshift.io / run-level définie à 0 ou 1. La fonctionnalité qui repose sur des plugins d’admission, tels que l’admission de sécurité pod, les contraintes de contexte de sécurité, les quotas de ressources de cluster et la résolution de référence d’image, ne fonctionne pas dans des projets hautement privilégiés.
Il existe deux façons d’activer les flux d’images avec les ressources Kubernetes:
- Activer la résolution de flux d’images sur une ressource spécifique. Cela permet uniquement à cette ressource d’utiliser le nom du flux d’images dans le champ image.
- Activer la résolution de flux d’images sur un flux d’images. Cela permet à toutes les ressources pointant vers ce flux d’images de l’utiliser dans le champ d’image.
Procédure
Il est possible d’utiliser oc set image-lookup pour activer la résolution de flux d’images sur une ressource spécifique ou une résolution de flux d’images sur un flux d’images.
Afin de permettre à toutes les ressources de référencer le flux d’images nommé mysql, entrez la commande suivante:
oc set image-lookup mysql
$ oc set image-lookup mysql
Copy to Clipboard Copied! Ceci définit le champ Imagestream.spec.lookupPolicy.local à true.
ImageStream avec la recherche d’image activée
apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/display-name: mysql name: mysql namespace: myproject spec: lookupPolicy: local: true
apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/display-name: mysql name: mysql namespace: myproject spec: lookupPolicy: local: true
Copy to Clipboard Copied! Lorsqu’il est activé, le comportement est activé pour toutes les balises dans le flux d’images.
Ensuite, vous pouvez interroger les flux d’images et voir si l’option est définie:
oc set image-lookup imagestream --list
$ oc set image-lookup imagestream --list
Copy to Clipboard Copied!
Il est possible d’activer la recherche d’images sur une ressource spécifique.
Afin de permettre au déploiement Kubernetes nommé mysql d’utiliser des flux d’images, exécutez la commande suivante:
oc set image-lookup deploy/mysql
$ oc set image-lookup deploy/mysql
Copy to Clipboard Copied! Cela définit l’annotation alpha.image.policy.openshift.io/resolve-names sur le déploiement.
Déploiement avec la recherche d’images activée
apiVersion: apps/v1 kind: Deployment metadata: name: mysql namespace: myproject spec: replicas: 1 template: metadata: annotations: alpha.image.policy.openshift.io/resolve-names: '*' spec: containers: - image: mysql:latest imagePullPolicy: Always name: mysql
apiVersion: apps/v1 kind: Deployment metadata: name: mysql namespace: myproject spec: replicas: 1 template: metadata: annotations: alpha.image.policy.openshift.io/resolve-names: '*' spec: containers: - image: mysql:latest imagePullPolicy: Always name: mysql
Copy to Clipboard Copied!
Désactivez la recherche d’images.
Désactiver la recherche d’image, passer --enabled=false:
oc set image-lookup deploy/mysql --enabled=false
$ oc set image-lookup deploy/mysql --enabled=false
Copy to Clipboard Copied!