Registry-Spiegelungen konfigurieren

Registry-Spiegelung

Registry-Spiegelungen sind dafür vorgesehen, Images von gcr.io und docker.io zu spiegeln. Wenn Sie beispielsweise versuchen, ein Image mit dem Namen gcr.io/kubernetes-e2e-test-images/nautilus:1.0 abzurufen, funktioniert dies nur, wenn Ihr Registry-Dienst dieses Image im exakt gleichen Pfad enthält, z. B. 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0. Alle Nicht-gcr.io-Images funktionieren weiterhin wie gewohnt, z. B. können Sie k8s.gcr.io/pause:3.1 weiterhin abrufen.

Die Verwendung einer Registry-Spiegelung hilft Ihnen, Traffic zu sparen, und bietet eine Alternative zur Verwendung von gcr.io, wenn Sie Ihre Cluster vor gcr.io-Ausfällen isolieren müssen. Sie können auch Ihre eigenen Scans auf Sicherheitslücken durchführen.

Hinweis

  • In Ihrem Netzwerk muss ein Container Registry-Server eingerichtet sein.
  • Wenn Ihr Registry-Server ein privates TLS-Zertifikat ausführt, benötigen Sie die Datei der Zertifizierungsstelle (Certificate Authority, CA).
  • Wenn Ihr Registry-Server eine Authentifizierung benötigt, benötigen Sie die entsprechenden Anmeldedaten oder eine Docker-Konfigurationsdatei.

Container-Images auf den Registry-Server hochladen

Laden Sie die Images mit dem folgenden Befehl aus dem Image-Paket auf Ihren Registry-Server hoch:

actl images push \
    --private-registry=PRIVATE_REGISTRY \
    --images ~/anthos-baremetal-private-mode

Ersetzen Sie Folgendes:

  • PRIVATE_REGISTRY durch die private Registry-Adresse (und den Port) und das Unterprojekt, z. B. 172.18.0.20:5000/test-namespace.

  • Geben Sie Ihren Nutzernamen und Ihr Passwort ein, wenn Sie dazu aufgefordert werden, oder wählen Sie eine Docker-Konfigurationsdatei aus. Wenn für Ihren Registry-Server keine Anmeldedaten erforderlich sind, geben Sie --no-registry-credential an.

Weitere Informationen zum Befehl actl images push erhalten Sie durch:

actl images push --help

Eigenen Namespace verwenden

Wenn Sie auf dem Registry-Server Ihren eigenen Namespace anstelle des Stamm-Namespace verwenden möchten, kann containerd aus diesem Unter-Namespace abrufen, wenn Sie den API-Endpunkt für Ihre private Registry in registryMirrors.endpoint angeben. Der Endpunkt hat normalerweise das Format <REGISTRY_IP:PORT>/v2/<NAMESPACE>. Weitere Informationen finden Sie im Nutzerhandbuch für Ihre private Registry.

Wenn Sie beispielsweise nur Zugriff auf 172.18.0.20:5000/test-namespace/ haben, können Sie den folgenden Befehl verwenden, um alle Bilder unter dem Namespace test-namespace hochzuladen:

actl images push \
    --images= ~/anthos-baremetal-private-mode \
    --private-registry=172.18.0.20:5000/test-namespace

Anschließend können Sie in der YAML-Clusterdatei Folgendes eingeben, um containerd aus dem untergeordneten Namespace abzurufen:

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

Cluster über die Registry-Spiegelung erstellen

Unten sehen Sie eine Konfigurationsdatei für einen Beispielcluster, die anstelle von gcr.io Ihren eigenen Registry-Spiegelungsserver verwendet.

Wenn Ihre Registry kein privates TLS-Zertifikat erfordert, können Sie das Feld caCertPath leer lassen.

Wenn Ihr Registry-Server keine Docker-Konfigurationsdatei zur Authentifizierung erfordert, können Sie das Feld pullCredentialConfigPath leer lassen.

Ausführliche Informationen zur Clusterkonfiguration finden Sie unter Clusterkonfiguration.

# Sample cluster config with registry mirror:
---
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin
  namespace: cluster-admin
spec:
  nodeConfig:
    containerRuntime: containerd
...

Alle Knoten in diesem Cluster verwenden die Registry-Spiegelung 172.18.0.20:5000 anstelle von gcr.io (und docker.io).

Failover auf gcr.io

Wenn der Cluster nicht von Ihrer Registry-Spiegelung abrufen kann, wird automatisch ein Failover auf gcr.io durchgeführt. Daher empfehlen wir, in der Clusterkonfigurationsdatei einen Wert für privateRegistryConfigPath anzugeben. Wenn kein Wert angegeben ist, kann der Cluster keine gcr.io abrufen, falls die Registry-Spiegelung fehlschlägt.

# Sample cluster config with registry mirror:
---
privateRegistryConfigPath: /root/.docker/config.json
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json

Wenn Sie das Pull-Failover-Feature nicht benötigen, müssen Sie privateRegistryConfigPath oder gcr.io (und docker.io) nicht zur Proxy-Zulassungsliste hinzufügen.

Registry-Spiegelungs-Endpunkte, Zertifikate und Pull-Anmeldedaten aktualisieren

So aktualisieren Sie Endpunkte, Zertifikate oder Pull-Anmeldedaten für die Registry-Spiegelung:

  1. Aktualisieren Sie in der Clusterkonfigurationsdatei den Endpunkt, die CA-Zertifikatsdatei und den Pfad zur Konfigurationsdatei für den Abruf der Anmeldedaten.

  2. Übernehmen Sie die Änderungen mit dem folgenden Befehl:

    actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG
    

Weitere Informationen