Share via


ACR-átvitel ARM-sablonokkal

Előfeltételek teljesítése

A cikkben ismertetett műveletek megkísérlése előtt végezze el az itt ismertetett előfeltételeket. Ez azt jelenti, hogy:

  • Mindkét felhőben rendelkezik prémium termékváltozat-beállításjegyzékcel.
  • Mindkét felhőben rendelkezik egy meglévő tárfióktárolóval.
  • Rendelkezik egy meglévő keyvaulttal, amely egy érvényes SAS-jogkivonatot tartalmaz, és mindkét felhőben rendelkezik a szükséges engedélyekkel.
  • Az Az CLI legújabb verziója mindkét felhőben telepítve van.

Fontos

Az ACR Transfer a technikai korlátozások miatt 8 GB-ra korlátozott rétegméretű összetevőket támogat.

Fontolja meg az Az CLI-bővítmény használatát

A legtöbb nemautomatált használati eset esetében javasoljuk, hogy ha lehetséges, használja az Az CLI-bővítményt. Az Az CLI-bővítmény dokumentációját itt tekintheti meg.

ExportPipeline létrehozása a Resource Managerrel

Hozzon létre egy ExportPipeline-erőforrást a forrástároló-beállításjegyzékhez az Azure Resource Manager-sablon üzembe helyezésével.

Másolja az ExportPipeline Resource Manager sablonfájljait egy helyi mappába.

Adja meg a következő paraméterértékeket a fájlban azuredeploy.parameters.json:

Paraméter Érték
registryName A forrástároló-beállításjegyzék neve
exportPipelineName Az exportálási folyamathoz választott név
targetUri A tároló URI-ja a forráskörnyezetben (az exportálási folyamat célja).
Példa: https://sourcestorage.blob.core.windows.net/transfer
keyVaultName A forráskulcstartó neve
sasTokenSecretName Az SAS-jogkivonat titkos kódjának neve a forráskulcstartóban
Példa: acrexportsas

Exportálási lehetőségek

Az options exportálási folyamatok tulajdonsága támogatja az opcionális logikai értékeket. A következő értékek ajánlottak:

Paraméter Érték
Lehetőségek OverwriteBlobs – Meglévő célblobok felülírása
ContinueOnErrors – Ha egy összetevő exportálása meghiúsul, folytassa a forrásregisztrációs adatbázisban lévő fennmaradó összetevők exportálását.

Az erőforrás létrehozása

Futtassa az az deployment group create parancsot egy exportPipeline nevű erőforrás létrehozásához az alábbi példákban látható módon. Alapértelmezés szerint az első beállítással a példasablon lehetővé teszi a rendszer által hozzárendelt identitást az ExportPipeline erőforrásban.

A második lehetőséggel megadhat egy felhasználó által hozzárendelt identitást az erőforrásnak. (A felhasználó által hozzárendelt identitás létrehozása nem jelenik meg.)

Bármelyik beállítással a sablon úgy konfigurálja az identitást, hogy hozzáférjen az SAS-jogkivonathoz az exportálási kulcstartóban.

1. lehetőség: Erőforrás létrehozása és a rendszer által hozzárendelt identitás engedélyezése

az deployment group create \
  --resource-group $SOURCE_RG \
  --template-file azuredeploy.json \
  --name exportPipeline \
  --parameters azuredeploy.parameters.json

2. lehetőség: Erőforrás létrehozása és felhasználó által hozzárendelt identitás biztosítása

Ebben a parancsban adja meg a felhasználó által hozzárendelt identitás erőforrás-azonosítóját további paraméterként.

az deployment group create \
  --resource-group $SOURCE_RG \
  --template-file azuredeploy.json \
  --name exportPipeline \
  --parameters azuredeploy.parameters.json \
  --parameters userAssignedIdentity="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"

A parancs kimenetében jegyezze fel a folyamat erőforrás-azonosítóját (id). Ezt az értéket egy környezeti változóban tárolhatja későbbi használatra az az deployment group show futtatásával. Példa:

EXPORT_RES_ID=$(az deployment group show \
  --resource-group $SOURCE_RG \
  --name exportPipeline \
  --query 'properties.outputResources[1].id' \
  --output tsv)

ImportPipeline létrehozása a Resource Managerrel

Hozzon létre egy ImportPipeline-erőforrást a céltároló-beállításjegyzékben az Azure Resource Manager-sablon üzembe helyezésével. Alapértelmezés szerint a folyamat automatikusan importálható, ha a célkörnyezet tárfiókja összetevőblobot használ.

Másolja az ImportPipeline Resource Manager sablonfájljait egy helyi mappába.

Adja meg a következő paraméterértékeket a fájlban azuredeploy.parameters.json:

Paraméter Érték
registryName A céltároló beállításjegyzékének neve
importPipelineName Az importálási folyamathoz választott név
sourceUri A tároló URI-ja a célkörnyezetben (az importálási folyamat forrása).
Példa: https://targetstorage.blob.core.windows.net/transfer
keyVaultName A célkulcstartó neve
sasTokenSecretName A sas-jogkivonat titkos kódjának neve a célkulcstartóban
Példa: acr importas

Importálási beállítások

Az options importálási folyamat tulajdonsága támogatja az opcionális logikai értékeket. A következő értékek ajánlottak:

Paraméter Érték
Lehetőségek Felülíráscímkék – Meglévő célcímkék felülírása
DeleteSourceBlobOnSuccess – A forrástároló blob törlése a célregisztrációs adatbázisba való sikeres importálás után
ContinueOnErrors – Ha egy összetevő importálása meghiúsul, folytassa a fennmaradó összetevők importálását a célregisztrációs adatbázisban.

Az erőforrás létrehozása

Futtassa az az deployment group create parancsot egy importPipeline nevű erőforrás létrehozásához az alábbi példákban látható módon. Alapértelmezés szerint az első lehetőséggel a példasablon lehetővé teszi a rendszer által hozzárendelt identitást az ImportPipeline erőforrásban.

A második lehetőséggel megadhat egy felhasználó által hozzárendelt identitást az erőforrásnak. (A felhasználó által hozzárendelt identitás létrehozása nem jelenik meg.)

Bármelyik beállítással a sablon úgy konfigurálja az identitást, hogy hozzáférjen az SAS-jogkivonathoz az importálási kulcstartóban.

1. lehetőség: Erőforrás létrehozása és a rendszer által hozzárendelt identitás engedélyezése

az deployment group create \
  --resource-group $TARGET_RG \
  --template-file azuredeploy.json \
  --name importPipeline \
  --parameters azuredeploy.parameters.json

2. lehetőség: Erőforrás létrehozása és felhasználó által hozzárendelt identitás biztosítása

Ebben a parancsban adja meg a felhasználó által hozzárendelt identitás erőforrás-azonosítóját további paraméterként.

az deployment group create \
  --resource-group $TARGET_RG \
  --template-file azuredeploy.json \
  --name importPipeline \
  --parameters azuredeploy.parameters.json \
  --parameters userAssignedIdentity="/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myUserAssignedIdentity"

Ha manuálisan szeretné futtatni az importálást, jegyezze fel a folyamat erőforrás-azonosítóját (id). Ezt az értéket egy környezeti változóban tárolhatja későbbi használatra az az deployment group show parancs futtatásával. Példa:

IMPORT_RES_ID=$(az deployment group show \
  --resource-group $TARGET_RG \
  --name importPipeline \
  --query 'properties.outputResources[1].id' \
  --output tsv)

PipelineRun létrehozása exportáláshoz a Resource Managerrel

Hozzon létre egy PipelineRun-erőforrást a forrástároló-beállításjegyzékhez az Azure Resource Manager-sablon üzembe helyezésével. Ez az erőforrás futtatja a korábban létrehozott ExportPipeline-erőforrást, és blobként exportálja a megadott összetevőket a tárolóregisztrációs adatbázisból a forrástárfiókba.

PipelineRun Resource Manager-sablonfájlok másolása egy helyi mappába.

Adja meg a következő paraméterértékeket a fájlban azuredeploy.parameters.json:

Paraméter Érték
registryName A forrástároló-beállításjegyzék neve
pipelineRunName A futtatáshoz választott név
pipelineResourceId Az exportálási folyamat erőforrás-azonosítója.
Példa: /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ContainerRegistry/registries/<sourceRegistryName>/exportPipelines/myExportPipeline
targetName A forrás tárfiókba exportált összetevők blobjának (például myblob) választott neve
Leletek Átvinni kívánt forrásösszetevők tömbje címkékként vagy jegyzékkivonatként
Példa: [samples/hello-world:v1", "samples/nginx:v1" , "myrepository@sha256:0a2e01852872..."]

Ha azonos tulajdonságokkal rendelkező PipelineRun-erőforrás ismételt üzembe helyezésekor a forceUpdateTag tulajdonságot is használnia kell.

Futtassa az az deployment group create parancsot a PipelineRun erőforrás létrehozásához. Az alábbi példa az üzembehelyezési exportPipelineRun nevet adja.

az deployment group create \
  --resource-group $SOURCE_RG \
  --template-file azuredeploy.json \
  --name exportPipelineRun \
  --parameters azuredeploy.parameters.json

Későbbi használatra tárolja a folyamatfuttatás erőforrás-azonosítóját egy környezeti változóban:

EXPORT_RUN_RES_ID=$(az deployment group show \
  --resource-group $SOURCE_RG \
  --name exportPipelineRun \
  --query 'properties.outputResources[0].id' \
  --output tsv)

Az összetevők exportálása több percet is igénybe vehet. Ha az üzembe helyezés sikeresen befejeződött, ellenőrizze az összetevők exportálását úgy, hogy felsorolja az exportált blobot a forrástárfiók átviteli tárolójában. Futtassa például az az storage bloblista parancsot:

az storage blob list \
  --account-name $SOURCE_SA \
  --container transfer \
  --output table

Blob átvitele (nem kötelező)

Az AzCopy eszközzel vagy más módszerekkel blobadatokat továbbíthat a forrástárfiókból a céltárfiókba.

Az alábbi azcopy copy parancs például átmásolja a myblobot a forrásfiók átviteli tárolójából a célfiók átviteli tárolójába. Ha a blob létezik a célfiókban, az felülíródik. A hitelesítés SAS-jogkivonatokat használ a forrás- és céltárolók megfelelő engedélyeivel. (A jogkivonatok létrehozásának lépései nem jelennek meg.)

azcopy copy \
  'https://<source-storage-account-name>.blob.core.windows.net/transfer/myblob'$SOURCE_SAS \
  'https://<destination-storage-account-name>.blob.core.windows.net/transfer/myblob'$TARGET_SAS \
  --overwrite true

Trigger ImportPipeline-erőforrás

Ha engedélyezte az sourceTriggerStatus ImportPipeline paraméterét (az alapértelmezett értéket), a folyamat akkor aktiválódik, ha a blobot a céltárfiókba másolja. Az összetevők importálása több percet is igénybe vehet. Ha az importálás sikeresen befejeződött, ellenőrizze az összetevők importálását a tárolóregisztrációs adatbázis adattárainak listázásával. Futtassa például az az acr-adattár listáját:

az acr repository list --name <target-registry-name>

Feljegyzés

A forrás-eseményindító csak azokat a blobokat importálja, amelyek az elmúlt 60 napon belül utoljára módosultak. Ha a forrásindítóval ennél régebbi blobokat szeretne importálni, frissítse a blobok utolsó módosítási idejét úgy, hogy blob metaadatokat ad hozzájuk, vagy manuálisan létrehozott folyamatfuttatásokkal importálja őket.

Ha nem engedélyezte az sourceTriggerStatus importálási folyamat paraméterét, futtassa manuálisan az ImportPipeline erőforrást az alábbi szakaszban látható módon.

PipelineRun létrehozása importáláshoz a Resource Managerrel (nem kötelező)

PipelineRun-erőforrással is aktiválhat egy ImportPipeline-et az összetevőknek a tárolóregisztrációs adatbázisba való importálásához.

PipelineRun Resource Manager-sablonfájlok másolása egy helyi mappába.

Adja meg a következő paraméterértékeket a fájlban azuredeploy.parameters.json:

Paraméter Érték
registryName A céltároló beállításjegyzékének neve
pipelineRunName A futtatáshoz választott név
pipelineResourceId Az importálási folyamat erőforrás-azonosítója.
Példa: /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.ContainerRegistry/registries/<sourceRegistryName>/importPipelines/myImportPipeline
sourceName A tárfiókban exportált összetevők meglévő blobjának neve, például myblob

Ha azonos tulajdonságokkal rendelkező PipelineRun-erőforrás ismételt üzembe helyezésekor a forceUpdateTag tulajdonságot is használnia kell.

Futtassa az az deployment group create parancsot az erőforrás futtatásához.

az deployment group create \
  --resource-group $TARGET_RG \
  --name importPipelineRun \
  --template-file azuredeploy.json \
  --parameters azuredeploy.parameters.json

Későbbi használatra tárolja a folyamatfuttatás erőforrás-azonosítóját egy környezeti változóban:

IMPORT_RUN_RES_ID=$(az deployment group show \
  --resource-group $TARGET_RG \
  --name importPipelineRun \
  --query 'properties.outputResources[0].id' \
  --output tsv)

Ha az üzembe helyezés sikeresen befejeződött, ellenőrizze az összetevők importálását a tárolóregisztrációs adatbázis adattárainak listázásával. Futtassa például az az acr-adattár listáját:

az acr repository list --name <target-registry-name>

PipelineRun-erőforrás újbóli üzembe helyezése

Ha egy PipelineRun-erőforrás ismételt üzembe helyezése azonos tulajdonságokkal, a forceUpdateTag tulajdonságot kell használnia. Ez a tulajdonság azt jelzi, hogy a PipelineRun erőforrást akkor is újra létre kell hozni, ha a konfiguráció nem változott. Győződjön meg arról, hogy a ForceUpdateTag minden alkalommal eltér, amikor újra üzembe helyezi a PipelineRun erőforrást. Az alábbi példa újra létrehoz egy PipelineRun-t az exportáláshoz. Az aktuális dátumidő a forceUpdateTag beállítására szolgál, így biztosítva, hogy ez a tulajdonság mindig egyedi legyen.

CURRENT_DATETIME=`date +"%Y-%m-%d:%T"`
az deployment group create \
  --resource-group $SOURCE_RG \
  --template-file azuredeploy.json \
  --name exportPipelineRun \
  --parameters azuredeploy.parameters.json \
  --parameters forceUpdateTag=$CURRENT_DATETIME

Folyamaterőforrások törlése

Az alábbi példaparancsok az erőforrás-törlés használatával törlik a cikkben létrehozott folyamaterőforrásokat. Az erőforrásazonosítókat korábban környezeti változókban tárolták.

# Delete export resources
az resource delete \
--resource-group $SOURCE_RG \
--ids $EXPORT_RES_ID $EXPORT_RUN_RES_ID \
--api-version 2019-12-01-preview

# Delete import resources
az resource delete \
--resource-group $TARGET_RG \
--ids $IMPORT_RES_ID $IMPORT_RUN_RES_ID \
--api-version 2019-12-01-preview

Az ACR-átvitel hibaelhárítása

Hibaelhárítási útmutatásért tekintse meg az ACR-átvitel hibaelhárítását .

Következő lépések

  • Megtudhatja, hogyan tilthatja le az exportálási folyamatok létrehozását egy hálózat által korlátozott tárolóregisztrációs adatbázisból.