Zum Hauptinhalt springen

Container (OCI) Registry

Die Registry ist ein Service zum Speichern privater Container Images und Helm Charts.

Verfügbarkeit

Bei NKE ist die Registry als optionaler Service verfügbar. Das Feature kann über das Cockpit deployed und von mehreren NKE Clustern aus genutzt werden.

Pushen von Container Images

Um Container Images zu pushen, müssen Sie sich mit der Kombination aus URL, Nutzername und Passwort anmelden, die Sie im Cockpit finden.

$ docker login <url>
Username: <username>
Password: <password>
Login Succeded

Danach können Images mit docker tag getaggt und mit docker push gepusht werden:

$ docker tag <image id> <url>/<image name>:<image version>
$ docker push <url>/<image name>:<image version>
The push refers to repository [<url>]
...

Pushen von Helm Charts

Hinweis: Um Helm Charts zur Registry zu pushen, wird mindestens Helm v3.8.0 benötigt. Vor v3.8.0 wurde der OCI-Support als experimentell betrachtet und muss daher in früheren Versionen explizit durch Setzen der Umgebungsvariable HELM_EXPERIMENTAL_OCI=1 aktiviert werden. Weiteres zu diesem Thema erfahren Sie hier.

Um ein Helm Chart auf die Registry hochzuladen, müssen Sie sich mit der Kombination aus URL, Nutzername und Passwort anmelden, die Sie im Cockpit finden.

$ helm registry login -u <user> <url>
Password:
Login Succeeded

Nach erfolgreicher Authentifizierung kann das Chart mit dem Befehl helm push gepusht werden:

$ helm push <chart.tgz> oci://<url>
Pushed: ...
Digest: ...

Damit dies funktioniert, muss die URL mit oci:// statt mit https:// beginnen.

Hinweis: Der push Befehl kann nur für .tgz Dateien genutzt werden, die zuvor mit helm package erstellt wurden.

Für weitere Informationen über die Verwendung von Helm mit der Registry sehen Sie sich bitte die offizielle Helm Dokumentation an.

Pullen von Container Images in Ihrem Kubernetes Cluster

Um Ihre private Registry in Ihrem Kubernetes Cluster zu nutzen, muss ein Container Image Pull Secret erstellt werden und Ihre Deployment-Manifeste müssen darauf verweisen.

Die Erstellung des Secrets erfolgt mithilfe der .dockerconfigjson aus dem Cockpit über kubectl in Ihrem Cluster:

kubectl create secret docker-registry <secret name> \
--from-file=.dockerconfigjson=<path to .dockerconfigjson>

Auf dieses Secret wird dann in der imagePullSecrets Liste des Pods verwiesen. Weitere Informationen zur Nutzung privater Registries finden Sie in der offiziellen Kubernetes Dokumentation.