Freigeben über


Schnellstart: Bereitstellen der Arc-Erweiterung für die verbundene Registry (Vorschau)

In dieser Schnellstartanleitung erfahren Sie, wie Sie die Arc-Erweiterung für die verbundene Registry über die CLI-Benutzeroberfläche mit standardmäßig sicheren Einstellungen bereitstellen, um eine stabile Sicherheits- und Betriebsintegrität sicherzustellen.

Die verbundene Registry ist ein zentrales Tool für Edgekunden, das eine effiziente Verwaltung und den Zugriff auf containerisierte Workloads lokal oder an Remotestandorten ermöglicht. Durch die Integration in Azure Arc sorgt der Dienst für eine nahtlose und einheitliche Lebenszyklusverwaltung für Kubernetes-basierte containerisierte Workloads. Die Bereitstellung der Arc-Erweiterung für die verbundene Registry für Arc-fähige Kubernetes-Clustern vereinfacht die Verwaltung und den Zugriff auf diese Workloads.

Voraussetzungen

  • Richten Sie die Azure CLI ein, um eine Verbindung mit Azure und Kubernetes herzustellen.

  • Erstellen oder verwenden Sie eine vorhandene Azure Container Registry-Instanz (ACR) mit diesem Schnellstart.

  • Richten Sie den Firewallzugriff und die Kommunikation zwischen ACR und der verbundenen Registry ein, indem Sie die dedizierten Datenendpunkte aktivieren.

  • Erstellen oder verwenden Sie einen vorhandenen Azure Kubernetes Service-Cluster (AKS) mit diesem Tutorial.

  • Richten Sie die Verbindung zwischen dem Kubernetes-Cluster kubernetescluster und Azure Arc ein, indem Sie die Anweisungen in diesem Schnellstart befolgen.

  • Verwenden Sie den Befehl k8s-extension zum Verwalten von Kubernetes-Erweiterungen.

    az extension add --name k8s-extension
    
  • Registrieren Sie die erforderlichen Azure-Ressourcenanbieter in Ihrem Abonnement, und verwenden Sie Kubernetes mit Azure Arc-Unterstützung:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

    Ein Azure-Ressourcenanbieter ist ein Satz von REST-Vorgängen, die Funktionen für einen bestimmten Azure-Dienst ermöglichen.

  • Repository in der ACR-Registrierung, das mit der verbundenen Registry synchronisiert werden soll:

    az acr import --name myacrregistry --source mcr.microsoft.com/mcr/hello-world:latest --image hello-world:latest
    

    Das Repository hello-world wird in der ACR-Registrierung myacrregistry erstellt und soll mit der verbundenen Registry synchronisiert werden:

Bereitstellen der Arc-Erweiterung für die verbundene Registry mit standardmäßig sicheren Einstellungen

Nachdem die Voraussetzungen und die erforderlichen Bedingungen erfüllt und die benötigten Komponenten bereitgestellt wurden, befolgen Sie den optimierten Ansatz, um die Erweiterung für eine verbundene Registry sicher auf einem Arc-fähigen Kubernetes-Cluster mithilfe der folgenden Einstellungen bereitzustellen. Diese Einstellungen definieren die folgende Konfiguration mit HTTPS, Schreibschutz, Verteilung von Vertrauensstellungen und dem Cert Manager-Dienst. Führen Sie die folgenden Schritte für eine erfolgreiche Bereitstellung aus:

  1. Erstellen der verbundenen Registry
  2. Bereitstellen der Arc-Erweiterung für die verbundene Registry
  3. Überprüfen der Bereitstellung der Erweiterung für die verbundene Registry
  4. Bereitstellen eines Pods, der ein Image aus der verbundenen Registry verwendet

Erstellen der verbundenen Registry und Synchronisieren mit ACR

Die Erstellung der verbundenen Registry zur Synchronisierung mit ACR ist der grundlegende Schritt für die Bereitstellung der Arc-Erweiterung für ei verbundene Registry.

  1. Erstellen Sie die verbundene Registry, die mit der ACR-Registrierung synchronisiert wird:

    Um die verbundene Registry myconnectedregistry zu erstellen, die mit der ACR-Registrierung myacrregistry in der Ressourcengruppe myresourcegroup und dem Repository hello-world synchronisiert wird, können Sie den Befehl az acr connected-registry create ausführen:

    az acr connected-registry create --registry myacrregistry \ 
    --name myconnectedregistry \
    --resource-group myresourcegroup \ 
    --repository "hello-world"
    
  • Der Befehl az acr connected-registry create erstellt die verbundene Registry mit dem angegebenen Repository
  • Die Befehl az acr connected-registry create überschreibt Aktionen, wenn die Synchronisierungsbereichszuordnung mit dem Namen myscopemap vorhanden ist, und überschreibt Eigenschaften, wenn das Synchronisierungstoken mit dem Namen mysynctoken vorhanden ist.
  • Der Befehl az acr connected-registry create überprüft einen dedizierten Datenendpunkt während der Erstellung der verbundenen Registry und stellt einen Befehl zum Aktivieren des dedizierten Datenendpunkts für die ACR-Registrierung zur Verfügung.

Bereitstellen der Arc-Erweiterung für die verbundene Registry im Arc-fähigen Kubernetes-Cluster

Durch die Bereitstellung der Arc-Erweiterung für die verbundene Registry können Sie Containerimages und andere OCI-Artefakte (Open Container Initiative) mit Ihrer ACR-Registrierung synchronisieren. Die Bereitstellung beschleunigt den Zugriff auf Registrierungsartefakte und ermöglicht erweiterte Szenarien. Die Erweiterungsbereitstellung stellt eine sichere Verteilung von Vertrauensstellungen zwischen der verbundenen Registry und allen Clientknoten innerhalb des Clusters sicher und installiert den Cert Manager-Dienst für die TLS-Verschlüsselung (Transport Layer Security).

  1. Generieren der Verbindungszeichenfolge und der JSON-Datei mit geschützten Einstellungen

    Generieren Sie für die sichere Bereitstellung der Erweiterung für die verbundene Registry die Verbindungszeichenfolge, einschließlich eines neuen Kennworts und eines Transportprotokolls, und erstellen Sie die Datei protected-settings-extension.json, die für die Erweiterungsbereitstellung mit dem Befehl az acr connected-registry get-settings erforderlich ist:

    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    echo "{\"connectionString\":\"$(az acr connected-registry get-settings \
    --name myconnectedregistry \
    --registry myacrregistry \
    --parent-protocol https \
    --generate-password 1 \
    --query ACR_REGISTRY_CONNECTION_STRING \
    --output tsv \
    --yes | tr -d '\r')\" }" > settings.json

Hinweis

Mit den Befehlen „cat“ und „echo“ wird die Datei protected-settings-extension.json mit den Verbindungszeichenfolgendetails erstellt und der Inhalt der Verbindungszeichenfolge in die Datei protected-settings-extension.json eingefügt. Dies ist ein erforderlicher Schritt für die Bereitstellung der Erweiterung. Der Befehl az acr connected-registry get-settings generiert die Verbindungszeichenfolge, erstellt u. a. ein neues Kennwort und gibt ein Transportprotokoll an.

  1. Bereitstellen der Erweiterung für die verbundene Registry

    Stellen Sie die Erweiterung der verbundenen Registry mit den angegebenen Konfigurationsdetails mithilfe des Befehls az k8s-extension create bereit:

  az k8s-extension create --cluster-name myarck8scluster \ 
  --cluster-type connectedClusters \
  --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \
  --name myconnectedregistry \
  --resource-group myresourcegroup \ 
  --config service.clusterIP=192.100.100.1 \ 
  --config-protected-file protected-settings-extension.json  
  • Der Befehl az k8s-extension create stellt die Erweiterung für die verbundene Registry im Kubernetes-Cluster mit den angegebenen Konfigurationsparametern und der Datei mit den geschützten Einstellungen bereit.
  • Es wird eine sichere Verteilung von Vertrauensstellungen zwischen der verbundenen Registry und allen Clientknoten innerhalb des Clusters sichergestellt, und der Cert Manager-Dienst für die TLS-Verschlüsselung (Transport Layer Security) wird installiert.
  • Die Cluster-IP (clusterIP) muss aus dem IP-Adressbereich des AKS-Clustersubnetzes stammen. Der Parameter service.clusterIP gibt die IP-Adresse des Diensts für die verbundene Registry innerhalb des Clusters an. Es ist wichtig, service.clusterIP innerhalb des Bereichs gültiger Dienst-IPs für den Kubernetes-Cluster festzulegen. Stellen Sie sicher, dass die für service.clusterIP angegebene IP-Adresse im angegebenen Dienst-IP-Bereichs liegt, der während der Erstkonfiguration des Clusters definiert wurde. Sie finden diese IP-Adresse normalerweise in den Netzwerkeinstellungen des Clusters. Wenn sich service.clusterIP nicht innerhalb dieses Bereichs befindet, muss der Wert auf eine IP-Adresse aktualisiert werden, die sich innerhalb des gültigen Bereichs befindet und derzeit nicht von einem anderen Dienst verwendet wird.

Überprüfen der Bereitstellung der Erweiterung für die verbundene Registry

Um die Bereitstellung der Erweiterung für die verbundene Registry im Arc-fähigen Kubernetes-Cluster zu überprüfen, führen Sie die folgenden Schritte aus:

  1. Überprüfen des Bereitstellungsstatus

    Führen Sie den Befehl az k8s-extension show aus, um den Bereitstellungsstatus der Erweiterung für die verbundene Registry zu überprüfen:

  az k8s-extension show --name myconnectedregistry \ 
  --cluster-name myarck8scluster \
  --resource-group myresourcegroup \
  --cluster-type connectedClusters

Beispielausgabe

    {
    "aksAssignedIdentity": null,
    "autoUpgradeMinorVersion": true,
    "configurationProtectedSettings": {
      "connectionString": ""
    },
    "configurationSettings": {
      "pvc.storageClassName": "standard",
      "pvc.storageRequest": "250Gi",
      "service.clusterIP": "[your service cluster ip]"
    },
    "currentVersion": "0.11.0",
    "customLocationSettings": null,
    "errorInfo": null,
    "extensionType": "microsoft.containerregistry.connectedregistry",
    "id": "/subscriptions/[your subscription id]/resourceGroups/[your resource group name]/providers/Microsoft.Kubernetes/connectedClusters/[your arc cluster name]/providers/Microsoft.KubernetesConfiguration/extensions/[your extension name]",
    "identity": {
      "principalId": "[identity principal id]",
      "tenantId": null,
      "type": "SystemAssigned"
    },
    "isSystemExtension": false,
    "name": "[your extension name]",
    "packageUri": null,
    "plan": null,
    "provisioningState": "Succeeded",
    "releaseTrain": "preview",
    "resourceGroup": "[your resource group]",
    "scope": {
      "cluster": {
        "releaseNamespace": "connected-registry"
      },
      "namespace": null
    },
    "statuses": [],
    "systemData": {
      "createdAt": "2024-07-12T18:17:51.364427+00:00",
      "createdBy": null,
      "createdByType": null,
      "lastModifiedAt": "2024-07-12T18:22:42.156799+00:00",
      "lastModifiedBy": null,
      "lastModifiedByType": null
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": null
  }
  1. Überprüfen des Status und Zustands der verbundenen Registry

    Sie können für jede verbundene Registry den Status und Zustand mithilfe des Befehls az acr connected-registry list anzeigen:

        az acr connected-registry list --registry myacrregistry \
        --output table
    

Beispielausgabe

    | NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) |
    |------|------|------------------|--------|--------------|----------------|
    | myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
    | myreadonlyacr | ReadOnly | offline | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
  1. Überprüfen der Details für eine spezifische verbundene Registry

    Ausführliche Informationen zu einer bestimmten verbundenen Registrierung können Sie mit dem Befehl az acr connected-registry show abrufen:

  az acr connected-registry show --registry myacrregistry \
  --name myreadonlyacr \ 
  --output table

Beispielausgabe

   | NAME                | MODE      | CONNECTION STATE | PARENT        | LOGIN SERVER             | LAST SYNC(UTC)      | SYNC SCHEDULE | SYNC WINDOW       |
   | ------------------- | --------- | ---------------- | ------------- | ------------------------ | ------------------- | ------------- | ----------------- |
   | myconnectedregistry | ReadWrite | online           | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 | 0 0 * * *     | 00:00:00-23:59:59 |
  • Mit dem Befehl az k8s-extension show wird der Zustand der Erweiterungsbereitstellung überprüft.
  • Der Befehl gibt außerdem Details zum Verbindungsstatus der verbundenen Registry, zur letzten Synchronisierung, zum Synchronisierungsfenster, zum Synchronisierungszeitplan und vieles mehr an.

Bereitstellen eines Pods, der ein Image aus der verbundenen Registry verwendet

Um einen Pod bereitzustellen, der ein Image aus einer verbundenen Registry innerhalb des Clusters verwendet, muss der Vorgang innerhalb des Clusterknotens selbst ausgeführt werden. Führen Sie folgende Schritte aus:

  1. Erstellen Sie ein Geheimnis im Cluster, um sich bei der verbundenen Registry zu authentifizieren:

Führen Sie den Befehl kubectl create secret docker-registry aus, um ein Geheimnis im Cluster zu erstellen und sich bei der verbundenen Registry zu authentifizieren:

kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
  1. Stellen Sie den Pod bereit, der das gewünschte Image aus der verbundenen Registry nutzt. Verwenden Sie dazu den Wert der IP-Adresse des Dienstclusters (192.100.100.1) der verbundenen Registry und den Imagenamen hello-world mit dem Tag latest:

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-world-deployment
      labels:
        app: hello-world
    spec:
      selector:
        matchLabels:
          app: hello-world
      replicas: 1
      template:
        metadata:
          labels:
            app: hello-world
        spec:
          imagePullSecrets:
            - name: regcred
          containers:
            - name: hello-world
              image: 192.100.100.1/hello-world:latest
    EOF
    

Bereinigen von Ressourcen

Durch Löschen der bereitgestellten Erweiterung für die verbundene Registry entfernen Sie die entsprechenden Pods der verbundenen Registry und Konfigurationseinstellungen.

  1. Löschen der Erweiterung für die verbundene Registry

    Führen Sie den Befehl az k8s-extension delete aus, um die Erweiterung für die verbundene Registry zu löschen:

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    

Indem Sie die bereitgestellte verbundene Registry löschen, entfernen Sie die Cloudinstanz der verbundenen Registry und die zugehörigen Konfigurationsdetails.

  1. Löschen der verbundenen Registry

    Führen Sie den Befehl az acr connected-registry delete aus, um die verbundene Registry zu löschen:

    az acr connected-registry delete --registry myacrregistry \
    --name myconnectedregistry \
    --resource-group myresourcegroup 
    

Nächste Schritte