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-Registrierungmyacrregistry
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:
- Erstellen der verbundenen Registry
- Bereitstellen der Arc-Erweiterung für die verbundene Registry
- Überprüfen der Bereitstellung der Erweiterung für die verbundene Registry
- 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.
Erstellen Sie die verbundene Registry, die mit der ACR-Registrierung synchronisiert wird:
Um die verbundene Registry
myconnectedregistry
zu erstellen, die mit der ACR-Registrierungmyacrregistry
in der Ressourcengruppemyresourcegroup
und dem Repositoryhello-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 Namenmysynctoken
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).
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.
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ürservice.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 sichservice.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:
Ü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
}
Ü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 |
Ü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:
- 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
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 Imagenamenhello-world
mit dem Taglatest
: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.
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.
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