Memindahkan registri kontainer secara manual ke wilayah lain

Anda mungkin perlu memindahkan registri kontainer Azure dari satu wilayah Azure ke wilayah lainnya. Misalnya, Anda dapat menjalankan alur pengembangan atau menghosting target penyebaran baru di wilayah yang berbeda, dan ingin menyediakan registri terdekat.

Meskipun Azure Resource Mover saat ini tidak dapat mengotomatiskan perpindahan untuk registri kontainer Azure, Anda dapat memindahkan registri kontainer secara manual ke wilayah yang berbeda:

  • Ekspor pengaturan registri ke templat Resource Manager.
  • Menggunakan templat untuk menyebarkan registri di wilayah Azure yang berbeda
  • Mengimpor konten registri dari registri sumber ke registri target

Catatan

Jika Anda ingin mendistribusikan citra kontainer yang identik di beberapa wilayah Azure, Azure Container Registry juga mendukung replikasi geografis. Dengan mereplikasi registri secara geografis (diperlukan tingkat layanan Premium), Anda dapat melayani beberapa wilayah dengan nama citra dan tag yang identik dari satu registri.

Prasyarat

Azure CLI

Pertimbangan

  • Gunakan langkah-langkah dalam artikel ini untuk memindahkan registri ke wilayah yang berbeda dalam langganan yang sama. Konfigurasi lainnya mungkin diperlukan untuk memindahkan registri ke langganan Azure yang berbeda di penyewa Direktori Aktif yang sama.
  • Mengekspor dan menggunakan template Resource Manager dapat membantu membuat kembali banyak pengaturan registri. Anda dapat mengedit template untuk mengonfigurasi lebih banyak pengaturan atau memperbarui registri target setelah pembuatan.
  • Saat ini, Azure Container Registry tidak mendukung perpindahan registri ke penyewa Direktori Aktif yang berbeda. Batasan ini berlaku untuk kedua pendaftar yang dienkripsi dengan kunci yang dikelola pelanggan dan pendaftar yang tidak terenkripsi.
  • Jika Anda tidak dapat memindahkan registri yang diuraikan dalam artikel ini, buat registri baru, buat ulang pengaturan secara manual, dan Impor konten registri di registri target.
  • Anda dapat menemukan langkah-langkah untuk memindahkan sumber daya registri ke grup sumber daya baru dalam langganan yang sama atau memindahkan sumber daya ke langganan baru.

Mengekspor template dari registri sumber

Gunakan portal Azure, Azure CLI, Azure PowerShell, atau alat Azure lainnya untuk mengekspor template Resource Manager. Untuk menggunakan portal Microsoft Azure:

  1. Di portal Azure, navigasike registri sumber Anda.

  2. Di menu, pada Automasi, pilih Ekspor template>Unduh.

    Mengekspor template untuk registri kontainer

Menyebarkan ulang registri target di wilayah baru

Mengubah template

Periksa properti registri dalam file JSON template yang Anda unduh, dan buat perubahan yang diperlukan. Paling sedikit:

  • Mengubah defaultValue nama registri ke nama yang diinginkan dari registri target
  • Memperbarui location wilayah Azure yang diinginkan untuk registri target
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "registries_myregistry_name": {
            "defaultValue": "myregistry",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ContainerRegistry/registries",
            "apiVersion": "2020-11-01-preview",
            "name": "[parameters('myregistry_name')]",
            "location": "centralus",
        ...
        }
    ]
}

Untuk mengetahui informasi selengkapnya, lihat Gunakan template yang diekspor dari portal Azure dan referensi template.

Penting

Jika Anda ingin mengenkripsi registri target menggunakan kunci yang dikelola pelanggan, pastikan untuk memperbarui template dengan pengaturan untuk identitas terkelola, brankas kunci, dan kunci yang diperlukan. Anda hanya dapat mengaktifkan kunci yang dikelola pelanggan saat menggunakan registri.

Untuk mengetahui informasi selengkapnya, lihat Enkripsi registri menggunakan kunci yang dikelola pelanggan.

Buat grup sumber daya

Buat grup sumber daya untuk registri target menggunakan az group create. Contoh berikut ini membuat grup sumber daya bernama myResourceGroup di lokasi eastus.

az group create --name myResourceGroup --location eastus

Menyebarkan registri target di wilayah baru

Gunakan perintah az deployment group create untuk menyebarkan registri target, menggunakan template:

az deployment group create --resource-group myResourceGroup \
   --template-file template.json --name mydeployment

Catatan

Jika Anda melihat kesalahan selama penyebaran, Anda mungkin perlu memperbarui konfigurasi tertentu dalam file template dan mencoba kembali perintah.

Mengimpor konten registri di registri target

Setelah membuat registri di wilayah target, gunakan perintah az acr import, atau perintah PowerShell yang setara Import-AzContainerImage, untuk mengimpor gambar dan artefak lain yang ingin Anda simpan dari registri sumber ke registri target. Untuk contoh perintah, lihat Mengimpor gambar kontainer ke registri kontainer.

  • Gunakan perintah Azure CLI az acr repository list dan az acr repository show-tags, atau setara Azure PowerShell, untuk membantu menghitung konten registri sumber Anda.
  • Jalankan perintah impor untuk artefak individu, atau buat skripnya untuk menjalankan daftar artefak.

Sampel skrip Azure CLI berikut menghitung repositori sumber dan tag, kemudian mengimpor artefak ke registri target di langganan Azure yang sama. Modifikasi sesuai kebutuhan untuk mengimpor repositori atau tag tertentu. Untuk mengimpor dari registri dalam berbagai langganan atau penyewa, lihat contoh dalam Mengimpor gambar kontainer ke registri kontainer.

#!/bin/bash
# Modify registry names for your environment
SOURCE_REG=myregistry
TARGET_REG=targetregistry

# Get list of source repositories
REPO_LIST=$(az acr repository list \
    --name $SOURCE_REG --output tsv)

# Enumerate tags and import to target registry
for repo in $REPO_LIST; do
    TAGS_LIST=$(az acr repository show-tags --name $SOURCE_REG --repository $repo --output tsv);
    for tag in $TAGS_LIST; do
        echo "Importing $repo:$tag";
        az acr import --name $TARGET_REG --source $SOURCE_REG.azurecr.io/$repo":"$tag;
    done
done

Memverifikasi registri target

Konfirmasikan informasi berikut di registri target Anda:

  • Pengaturan registri seperti nama registri, tingkat layanan, akses publik, dan replikasi
  • Repositori dan tag untuk konten yang ingin Anda simpan.

Konfigurasi tambahan

  • Jika diperlukan, konfigurasikan pengaturan secara manual di registri target seperti titik akhir privat, aturan akses IP, dan identitas terkelola.

  • Perbarui sistem pengembangan dan penyebaran untuk menggunakan registri target alih-alih registri sumber.

  • Perbarui aturan firewall klien apa pun untuk memungkinkan akses ke registri target.

Menghapus registri asli

Setelah Anda berhasil menerapkan registri target, konten yang dimigrasikan, dan pengaturan registri terverifikasi, Anda dapat menghapus registri sumber.

Langkah berikutnya