Anthos-Cluster mithilfe einer Registry-Spiegelung auf Bare Metal installieren

Auf dieser Seite wird beschrieben, wie Sie Anthos-Cluster auf Bare Metal mithilfe einer Registry-Spiegelung statt mit gcr.io installieren. Wenn Sie eine Registry-Spiegelung verwenden möchten, müssen Sie die Containerlaufzeit auf containerd festlegen.

Registry-Spiegelungen sind so konzipiert, dass sie die gesamte Ebene von gcr.io spiegeln und nicht nur gcr.io/anthos-baremetal-release/, wo normalerweise die Anthos-Cluster auf Bare Metal-Images gespeichert werden.

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.

Alle erforderlichen Images für Anthos-Cluster auf Bare Metal herunterladen

Laden Sie die neueste Version des bmctl-Tools und des Image-Pakets von der Downloadseite herunter.

Container-Images auf den Registry-Server hochladen

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

[HTTPS_PROXY=http://PROXY_IP:PORT] ./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=REGISTRY_IP:PORT \
    [--cacert=CERT_PATH] \
    [--need-credential=false]

Ersetzen Sie Folgendes:

  • PROXY_IP:PORT durch die IP-Adresse und den Port des Proxys, wenn Sie einen Proxy zum Hochladen der Images von Ihrer Workstation auf den Registry-Server benötigen.
  • REGISTRY_IP:PORT durch die IP-Adresse und den Port des privaten Registry-Servers.
  • CERT_PATH durch den Pfad zur CA-Zertifikatsdatei, wenn Ihr Registry-Server ein privates TLS-Zertifikat verwendet.

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 --need-credential=false an.

Weitere Informationen zum Befehl bmctl push images erhalten Sie durch:

bmctl push images --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:

./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=172.18.0.20:5000/test-namespace
    --username=<USERNAME>
    --password=<PASSWORD>
    --cacert <path/to/cert.crt>

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 zum Erstellen von Clustern finden Sie unter Cluster erstellen.

# Sample cluster config with registry mirror:
---
gcrKeyPath: /bmctl/bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin1
  namespace: cluster-admin1
spec:
  nodeConfig:
    containerRuntime: containerd
...

Alle Knoten in diesem Cluster verwenden die Registry-Spiegelung 172.18.0.20:5000 anstelle von gcr.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 gcrKeyPath anzugeben. Wenn kein Wert angegeben ist, kann der Cluster keine gcr.io abrufen, falls die Registry-Spiegelung fehlschlägt.

Wenn Sie das Pull-Failover-Feature nicht benötigen, müssen Sie gcrKeyPath oder gcr.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:

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Ersetzen Sie Folgendes:

    • CLUSTER_NAME durch den Namen des Clusters, den Sie aktualisieren möchten.
    • ADMIN_KUBECONFIG durch den Pfad zur Konfigurationsdatei des Administratorclusters.