Systemartefakte ändern

Systemartefakte unterstützen das GDC-System (Google Distributed Cloud) für Air-Gap-Appliances und verwalten die GDC-Bereitstellung. Im privaten GDC Artifact Registry werden die Systemartefakte gespeichert. Es gibt verschiedene Formate für Systemartefakte, darunter:

  • Container-Images für Anthos, KubeVirt und verwaltete GDC-Dienste
  • Betriebssystem-Images
  • Firmware-Formate
  • Golden-VM-Vorlagen
  • Helm-Diagramme

Artifact Registry ist an verschiedenen GDC-Systemvorgängen wie Installation, Upgrades und dem Lebenszyklus von Ressourcen beteiligt und sorgt für Sicherheit, Skalierbarkeit und Manipulationssicherheit.

Hinweise

Wenn Sie Systemartefakte ändern möchten, benötigen Sie Diagnosezugriff. Der Diagnosezugriff ist ein privilegierter Zugriffsmodus, der erforderlich ist, um einen Kunden bei einem Problem sicher zu unterstützen. Sie müssen ein Ticket erstellen, um diesen Zugriff zu erhalten.

Docker-Images hochladen

Wenn Sie Systemartefakte ändern möchten, müssen Sie neue Docker-Images hochladen. Die Uploadmethode hängt davon ab, in welche der folgenden beiden Registries Sie Ihre Container-Images übertragen:

In den folgenden Abschnitten finden Sie die Uploadanleitung für die beiden Registrierungstypen.

Artifact Registry auf dem Bootstrap-Computer

So laden Sie Container-Images auf dem Bootstrap-Computer in Artifact Registry hoch:

  1. Achten Sie darauf, dass Sie das geänderte Docker-Image mit den behobenen Problemen haben.

  2. Übertragen Sie das neue Image auf den Bootstrap-Knoten in Ihrer Air-Gap-Umgebung.

  3. Melden Sie sich am Bootstrap-Knoten an.

  4. Suchen Sie die Adresse der Artifact Registry auf der Bootstrap-Maschine zur Bootstrap-Zeit und legen Sie sie als Umgebungsvariable REGISTRY_IP fest:

    REGISTRY=$(kubectl get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Rufen Sie die Anmeldedaten für den Zugriff auf Artifact Registry ab. Verwenden Sie den folgenden Befehl, um das Administratorkonto und das Passwort abzurufen:

    ADMIN_PASS=$(kubectl -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  6. Melden Sie sich bei Artifact Registry an:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Eine Login Succeeded-Meldung wird ausgegeben, um einen erfolgreichen Login in Artifact Registry zu bestätigen.

  7. Taggen Sie das neue Bild:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Ersetzen Sie Folgendes:

    • CONTAINER_IMAGE_URL: Die lokale Container-Image-URL, z. B. gcr.io/repository/image:tag.
    • PROJECT_NAME: der Artifact Registry-Projektname.
    • IMAGE_NAME: der Name des Container-Images.
    • TAG: Das Container-Image-Tag.
  8. Übertragen Sie das neue Image per Push in Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

Artifact Registry im Administratorcluster

Führen Sie die folgenden Schritte aus, um Container-Images in die Artifact Registry im Administratorcluster hochzuladen.

  1. Achten Sie darauf, dass Sie das geänderte Docker-Image mit den behobenen Problemen haben.

  2. Übertragen Sie das neue Image auf einen Knoten mit Root-Zugriff und einer Root-kubeconfig-Datei für den Administratorcluster in Ihrer Air-Gap-Umgebung.

  3. Exportieren Sie den Dateipfad des Administratorclusters kubeconfig als Umgebungsvariable:

    export ADMIN_CLUSTER_KUBECONFIG=KUBECONFIG_FILE_PATH
    

    Ersetzen Sie KUBECONFIG_FILE_PATH durch den Pfad zur Datei kubeconfig.

  4. Suchen Sie die In-Cluster-Adresse von Artifact Registry und legen Sie sie als Umgebungsvariable REGISTRY_IP fest:

    REGISTRY=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG get harborcluster harbor -n harbor-system -o=jsonpath='{.spec.externalURL}')
    
    REGISTRY_IP=${REGISTRY#https://}
    
  5. Achten Sie darauf, dass REGISTRY_IP eine gültige URL wie 10.200.0.36:10443 enthält:

    echo ${REGISTRY_IP}
    
  6. Prüfen Sie, ob das CA-Zertifikat vorhanden ist:

    ls -al /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    

    Wenn das Zertifikat nicht vorhanden ist, erstellen und konfigurieren Sie es:

    mkdir -p /etc/docker/certs.d/${REGISTRY_IP}/
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/
    
    echo $(kubectl get secret harbor-cert-secret -n istio-system -o jsonpath='{.data.ca\.crt}' --kubeconfig $ADMIN_CLUSTER_KUBECONFIG) | openssl base64 -A -d >  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
    chmod 755  /etc/docker/certs.d/${REGISTRY_IP}/ca.crt
    
  7. Rufen Sie die Anmeldedaten für den Zugriff auf Artifact Registry ab. Verwenden Sie den folgenden Befehl, um das Administratorkonto und das Passwort abzurufen:

    ADMIN_PASS=$(kubectl --kubeconfig $ADMIN_CLUSTER_KUBECONFIG \
        -n harbor-system get secret harbor-admin \
        -o jsonpath="{.data.secret}" | base64 -d)
    
  8. Melden Sie sich bei Artifact Registry an:

    docker login $REGISTRY_IP -u admin -p $ADMIN_PASS
    

    Eine Login Succeeded-Meldung wird ausgegeben, um einen erfolgreichen Login in Artifact Registry zu bestätigen.

  9. Taggen Sie das neue Bild:

    docker image tag CONTAINER_IMAGE_URL \
        $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG
    

    Ersetzen Sie Folgendes:

    • CONTAINER_IMAGE_URL: Die lokale Container-Image-URL, z. B. gcr.io/repository/image:tag.
    • PROJECT_NAME: der Artifact Registry-Projektname.
    • IMAGE_NAME: der Name des Container-Images.
    • TAG: Das Container-Image-Tag.
  10. Übertragen Sie das neue Image per Push in Artifact Registry:

    docker image push $REGISTRY_IP/PROJECT_NAME/IMAGE_NAME:TAG