Exposition de la registry interne sur OpenShift
Prérequis
Avant de commencer, assurez-vous de remplir les conditions suivantes :
- Être en mesure de se connecter à un cluster OpenShift.
- Avoir les privilèges
cluster-admin
.
1. Créer un PVC
Pour commencer, créez un PVC dédié à la registry interne sur OpenShift :
Si vous avez OpenShift Data Foundation (conseillé) :
Créez le fichier image-registry-storage.yml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: image-registry-storage
namespace: openshift-image-registry
spec:
storageClassName: <your_odf_fs_storage_class>
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
Créez la ressource OpenShift :
oc apply -f image-registry-storage.yml
Si vous avez du stockage local (SNO) :
Créez le fichier image-registry-storage.yml
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: image-registry-storage
namespace: openshift-image-registry
spec:
storageClassName: <your_local_storage_class>
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Gi
volumeMode: Filesystem
Créez la ressource OpenShift :
oc apply -f image-registry-storage.yml
2. Modifier la configuration de l'Opérateur
Editez la configuration de l'Opérateur image registry
:
oc edit configs.imageregistry.operator.openshift.io -n openshift-image-registry
Modifiez les attributs suivants :
spec:
defaultRoute: true
managementState: Managed
storage:
pvc:
claim: image-registry-storage
rolloutStrategy: Recreate # Uniquement si on utilise du stockage RWO pour éviter les problèmes de montage
Attendez que l'Opérateur soit à nouveau disponible :
watch oc get co image-registry
3. Pousser une image sur la registry
Récupérez la route de la registry :
HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')
Ajoutez les certificats de la registry :
oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm
sudo mv tls.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust enable
Connectez vous à la registry :
sudo podman login -u <user> -p $(oc whoami -t) $HOST
Taguez l'image que vous souahitez pousser :
podman tag <your_image> $HOST/<your_project>/<your_image>
Créez le namespace associé à votre projet :
oc new-project <your_project>
Poussez votre image sur la registry :
podman push $HOST/<your_project>/<your_image>
Conclusion
Vous avez maintenant exposé votre registry interne OpenShift. Vous pouvez pousser et récupérer des images via la route exposée.
Auteur : Romain GASQUET