Anmeldung bei der Container-Registry

created: Mittwoch, Feb. 26, 2025

Vorbereitungen

Bevor Sie die DTZ-Container-Registry nutzen können, müssen Sie den Dienst zuerst aktivieren.

  1. Dienst aktivieren

Anleitung zum Aktivieren der Container-Registry

  1. Auf das Container-Registry-Dashboard zugreifen

Link zum Container-Registry-Dashboard

  1. Container-Registry-Dashboard

Container-Registry-Dashboard

  1. Testen des Registry-Endpunkts

Sie können den Link im Dashboard anklicken, um Ihre Registry-Instanz zu testen. Dieser Link sollte Sie zu folgender Seite führen.

Container-Registry-Seite

Nach Abschluss der Einrichtung müssen Sie die URL Ihrer Instanz aus dem Container-Registry-Dashboard abrufen, in diesem Fall, https://66fc19af.cr.dtz.dev/.

Alle Images werden also unter 66fc19af.cr.dtz.dev gehostet.

Docker-Anmeldung

Der einfachste Weg, sich anzumelden, ist über einen API-Schlüssel. Sie können der Anleitung in unserer Dokumentation folgen: wie man einen API-Schlüssel erstellt.

Um die Anmeldung durchzuführen, können Sie das Terminal verwenden:

docker login 66fc19af.cr.dtz.dev
Username: apikey
Password: {past in you API-key here}

Login Succeeded

Dadurch werden Ihre Zugangsdaten im Docker-Daemon registriert und Sie können nun Images bei dieser Registry pushen und pullen.

Kubernetes-Zugangsdaten

In Kubernetes können Anmeldeinformationen nicht durch direkte Interaktion mit dem Docker-Daemon verwaltet werden. Daher müssen Sie die Zugangsdaten über die Deployment-Definitionen als Secret bereitstellen.

Wenn Sie Zugriff auf kubectl haben, können Sie den Anweisungen der offiziellen Dokumentation folgen.

kubectl create secret docker-registry <name> \
  --docker-server=DOCKER_REGISTRY_SERVER \
  --docker-username=DOCKER_USER \
  --docker-password=DOCKER_PASSWORD \
  --docker-email=DOCKER_EMAIL

Oft ist der Zugriff auf kubectl keine Option, da alle Deployments über ein CI/CD-System laufen, das das Secret als YAML benötigt. Hier sind die Schritte, um ein solches Secret manuell zu erstellen.

  1. Kodieren Sie Ihre Zugangsdaten mit base64
echo 'DOCKER_USER:DOCKER_PASSWORD' | base64
RE9DS0VSX1VTRVI6RE9DS0VSX1BBU1NXT1JECg==
  1. Platzieren Sie die Zugangsdaten-Zeichenkette in einer Docker-Config-JSON und speichern Sie diese als credentials.json.
{
    "auths": {
        "66fc19af.cr.dtz.dev": {
            "auth": "RE9DS0VSX1VTRVI6RE9DS0VSX1BBU1NXT1JECg=="
        }
    }
}
  1. Kodieren Sie die gesamte Datei mit base64
cat credentials.json | base64
ewogICAgImF1dGhzIjogewogICAgICAgICI2NmZjMTlhZi5jci5kdHouZGV2IjogewogICAgICAgICAgICAiYXV0aCI6ICJSRTlEUzBWU1gxVlRSVkk2UkU5RFMwVlNYMUJCVTFOWFQxSkVDZz09IgogICAgICAgIH0KICAgIH0KfQo=
  1. Erstellen Sie ein Secret mit der kodierten Datei als Inhalt.
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
  name: dtz-credentials
data:
  .dockerconfigjson: ewogICAgImF1dGhzIjogewogICAgICAgICI2NmZjMTlhZi5jci5kdHouZGV2IjogewogICAgICAgICAgICAiYXV0aCI6ICJSRTlEUzBWU1gxVlRSVkk2UkU5RFMwVlNYMUJCVTFOWFQxSkVDZz09IgogICAgICAgIH0KICAgIH0KfQo=
  1. Nachdem Sie dieses Secret in Ihrem Kubernetes-Cluster angewendet haben, können Sie private Images verwenden.
apiVersion: v1
kind: Pod
metadata:
  name: private-ubuntu
spec:
  containers:
  - name: private-ubuntu-container
    image: 66fc19af.cr.dtz.dev/ubuntu
  imagePullSecrets:
  - name: dtz-credentials