Übertragen von Artefakten in eine andere Registrierung
In diesem Artikel wird beschrieben, wie Sammlungen von Images oder anderen Registrierungsartefakten aus einer Azure Container Registry in eine andere Registrierung übertragen werden. Die Quell- und Zielregistrierungen können sich im selben Abonnement oder in unterschiedlichen Abonnements, Active Directory-Mandanten, Azure-Clouds oder physisch getrennten Clouds befinden.
Zum Übertragen von Artefakten erstellen Sie eine Übertragungspipeline, von der Artefakte zwischen zwei Registrierungen mithilfe von Blobspeicher repliziert werden:
- Artefakte aus einer Quellregistrierung werden in ein Blob in einem Quellspeicherkonto exportiert.
- Das Blob wird aus dem Quellspeicherkonto in ein Zielspeicherkonto kopiert.
- Das Blob im Zielspeicherkonto wird als Artefakte in die Zielregistrierung importiert. Sie können die Importpipeline so einrichten, dass sie immer dann ausgelöst wird, wenn das Artefaktblob im Zielspeicher aktualisiert wird.
In diesem Artikel erstellen Sie die erforderlichen Ressourcen zum Erstellen und Ausführen der Übertragungspipeline. Die Azure CLI wird verwendet, um die zugehörigen Ressourcen wie Speichergeheimnisse bereitzustellen. Azure CLI-Version 2.2.0 oder höher wird empfohlen. Informationen zum Installieren und Aktualisieren der Befehlszeilenschnittstelle finden Sie bei Bedarf unter Installieren der Azure CLI.
Diese Funktion ist auf der Dienstebene Premium der Containerregistrierung verfügbar. Weitere Informationen zu den Tarifen des Registrierungsdiensts und zu den Einschränkungen finden Sie unter Azure Container Registry-Tarife.
Wichtig
Diese Funktion steht derzeit als Vorschau zur Verfügung. Vorschauversionen werden Ihnen zur Verfügung gestellt, wenn Sie die zusätzlichen Nutzungsbedingungen akzeptieren. Einige Aspekte dieses Features werden bis zur allgemeinen Verfügbarkeit unter Umständen noch geändert.
Überprüfen Ihres Anwendungsfalls
Übertragung eignet sich ideal zum Kopieren von Inhalten zwischen zwei Azure Container Registrys in physisch getrennten Clouds, wobei die Vermittlung durch Speicherkonten in jeder Cloud erfolgt. Wenn Sie stattdessen Images aus Containerregistrierungen in verbundenen Clouds wie Docker Hub und von anderen Cloudanbietern kopieren möchten, sollten Sie Imageimport verwenden.
Voraussetzungen
Containerregistrierungen: Sie benötigen eine vorhandene Quellregistrierung mit zu übertragenden Artefakten und eine Zielregistrierung. Die ACR-Übertragung ist für die Verschiebung über physisch getrennte Clouds hinweg vorgesehen. Zu Testzwecken können sich die Quell- und Zielregistrierungen in demselben oder einem anderen Azure-Abonnement, Active Directory-Mandanten bzw. in einer Cloud befinden.
Wenn Sie eine Registrierung erstellen müssen, finden Sie weitere Informationen unter Schnellstart: Erstellen einer privaten Containerregistrierung mit der Azure CLI.
Speicherkonten: Erstellen Sie Quell- und Zielspeicherkonten in einem Abonnement und an einem Speicherort Ihrer Wahl. Zu Testzwecken können Sie dasselbe Abonnement oder dieselben Abonnements wie Ihre Quell- und Zielregistrierungen verwenden. Für Cloudszenarien erstellen Sie in der Regel in jeder Cloud ein separates Speicherkonto.
Erstellen Sie bei Bedarf die Speicherkonten mit der Azure CLI oder anderen Tools.
Erstellen Sie einen Blobcontainer für die Artefaktübertragung in jedem Konto.Erstellen Sie einen Blobcontainer für die Artefaktübertragung in jedem Konto. Erstellen Sie z. B. einen Container namens transfer.
Schlüsseltresore: Schlüsseltresore sind erforderlich, um SAS-Tokengeheimnisse für den Zugriff auf Quell- und Zielspeicherkonten zu speichern. Erstellen Sie die Quell- und Zielschlüsseltresore in demselben Azure-Abonnement oder in den gleichen Abonnements wie Ihre Quell- und Zielregistrierungen. Bei den in diesem Artikel zu Demonstrationszwecken verwendeten Vorlagen und Befehlen wird vorausgesetzt, dass sich die Quell- und Zielschlüsseltresore in denselben Ressourcengruppen wie die Quell- und Zielregistrierungen befinden. Diese Verwendung von gemeinsamen Ressourcengruppen ist nicht erforderlich. Dadurch werden jedoch die in diesem Artikel verwendeten Vorlagen und Befehle vereinfacht.
Erstellen Sie Schlüsseltresore bei Bedarf mit der Azure CLI oder anderen Tools.
Umgebungsvariablen: Legen Sie für die Beispielbefehle in diesem Artikel die folgenden Umgebungsvariablen für die Quell- und Zielumgebungen fest. Alle Beispiele sind für die Bash-Shell formatiert.
SOURCE_RG="<source-resource-group>" TARGET_RG="<target-resource-group>" SOURCE_KV="<source-key-vault>" TARGET_KV="<target-key-vault>" SOURCE_SA="<source-storage-account>" TARGET_SA="<target-storage-account>"
Übersicht über das Szenario
Sie erstellen die folgenden drei Pipelineressourcen für die Imageübertragung zwischen Registrierungen. Alle Ressourcen werden mithilfe von PUT-Vorgängen erstellt. Diese Ressourcen werden für Ihre Quell- und Zielregistrierungen und Speicherkonten verwendet.
Die Speicherauthentifizierung verwendet SAS-Token, die als Geheimnisse in Schlüsseltresoren verwaltet werden. Die Pipelines verwenden verwaltete Identitäten, um die Geheimnisse in den Tresoren zu lesen.
- ExportPipeline : Dauerhafte Ressource, die allgemeine Informationen zur Quellregistrierung und zum -speicherkonto enthält. Diese Informationen umfassen den URI des Quellspeicher-Blobcontainers und den Schlüsseltresor, der das SAS-Quelltoken verwaltet.
- ImportPipeline : Dauerhafte Ressource, die allgemeine Informationen zur Zielregistrierung und zum -speicherkonto enthält. Diese Informationen umfassen den URI des Zielspeicher-Blobcontainers und den Schlüsseltresor, der das SAS-Zieltoken verwaltet. Ein Importtrigger ist standardmäßig aktiviert, sodass die Pipeline automatisch ausgeführt wird, wenn ein Artefaktblob in den Zielspeichercontainer gelangt.
- PipelineRun : Ressource, die zum Aufrufen einer ExportPipeline- oder ImportPipeline-Ressource verwendet wird.
- Sie führen die ExportPipeline manuell aus, indem Sie eine PipelineRun-Ressource erstellen und die zu exportierenden Artefakte angeben.
- Wenn ein Importtrigger aktiviert ist, wird die ImportPipeline automatisch ausgeführt. Sie kann auch manuell mit einem PipelineRun-Vorgang ausgeführt werden.
- Derzeit können pro PipelineRun-Vorgang maximal 50 Artefakte übertragen werden.
Wichtige Hinweise
- ExportPipeline und ImportPipeline befinden sich in der Regel in unterschiedlichen Active Directory-Mandanten, die mit den Quell- und Zielclouds verknüpft sind. Dieses Szenario erfordert separate verwaltete Identitäten und Schlüsseltresore für die Export- und Importressourcen. Zu Testzwecken können diese Ressourcen in derselben Cloud platziert werden und Identitäten gemeinsam nutzen.
- Mit den Vorlagen „ExportPipeline“ und „ImportPipeline“ wird für jeweils eine vom System zugewiesene verwaltete Identität der Zugriff auf Schlüsseltresorgeheimnisse aktiviert. Die Vorlagen „ExportPipeline“ und „ImportPipeline“ unterstützen darüber hinaus auch eine vom Benutzer zugewiesene Identität, die Sie bereitstellen.
Erstellen und Speichern von SAS-Schlüsseln
Bei der Übertragung werden SAS-Token (Shared Access Signature) für den Zugriff auf die Speicherkonten in den Quell- und Zielumgebungen verwendet. Generieren und speichern Sie Token wie in den folgenden Abschnitten beschrieben.
Wichtig
Die ACR-Übertragung funktioniert zwar mit einem manuell generierten SAS-Token, das in einem Keyvault-Geheimnis gespeichert ist, für Produktionsworkloads wird aber dringend die Verwendung von Geheimnissen mit einer von KeyVault verwalteten Speicher-SAS-Definition empfohlen.
Generieren von SAS-Token für den Export
Führen Sie den Befehl az storage container generate-sas aus, um ein SAS-Token für den Container im Quellspeicherkonto zu generieren, das für den Artefaktexport verwendet wird.
Empfohlene Tokenberechtigungen: Lesen, Schreiben, Auflisten, Hinzufügen.
Im folgenden Beispiel wird die Befehlsausgabe der Umgebungsvariablen EXPORT_SAS zugewiesen, der das Zeichen „?“ vorangestellt wird. Aktualisieren Sie den --expiry
-Wert für Ihre Umgebung:
EXPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $SOURCE_SA \
--expiry 2021-01-01 \
--permissions alrw \
--https-only \
--output tsv)
Speichern von SAS-Token für den Export
Speichern Sie das SAS-Token in der Azure Key Vault-Quelle mithilfe von az keyvault secret set:
az keyvault secret set \
--name acrexportsas \
--value $EXPORT_SAS \
--vault-name $SOURCE_KV
Generieren von SAS-Token für den Import
Führen Sie den Befehl az storage container generate-sas aus, um ein SAS-Token für den Container im Zielspeicherkonto zu generieren, das für den Artefaktimport verwendet wird.
Empfohlene Tokenberechtigungen: Lesen, Löschen, Auflisten
Im folgenden Beispiel wird die Befehlsausgabe der Umgebungsvariablen IMPORT_SAS zugewiesen, der das Zeichen „?“ vorangestellt wird. Aktualisieren Sie den --expiry
-Wert für Ihre Umgebung:
IMPORT_SAS=?$(az storage container generate-sas \
--name transfer \
--account-name $TARGET_SA \
--expiry 2021-01-01 \
--permissions dlr \
--https-only \
--output tsv)
Speichern von SAS-Token für den Import
Speichern Sie das SAS-Token im Azure Key Vault-Ziel mithilfe von az keyvault secret set:
az keyvault secret set \
--name acrimportsas \
--value $IMPORT_SAS \
--vault-name $TARGET_KV
Nächste Schritte
Führen Sie eines der folgenden Tutorials aus, um Ihre Ressourcen für die ACR-Übertragung zu erstellen. Für die meisten nicht automatisierten Anwendungsfälle empfehlen wir die Verwendung der Azure CLI-Erweiterung.