Azure Container Registry'yi başka bir bölgeye yeniden yerleştirme

Bu makalede, Azure Container Registry kaynaklarını Active Directory kiracısının aynı aboneliğindeki başka bir bölgeye nasıl yeniden dağıtabileceğiniz gösterilmektedir.

Not

Aynı kapsayıcı görüntülerini birden çok Azure bölgesine dağıtmanız gerekiyorsa, Azure Container Registry coğrafi çoğaltmayı da destekler. Bir kayıt defterini coğrafi olarak çoğaltarak (Premium hizmet katmanı gereklidir), tek bir kayıt defterinden aynı görüntü ve etiket adlarına sahip birden çok bölgeye hizmet vekleyebilirsiniz.

Önkoşullar

  • Kayıt defterini yalnızca aynı Active Directory kiracısı içinde yeniden yerleştirebilirsiniz. Bu sınırlama, müşteri tarafından yönetilen bir anahtarla şifrelenen ve şifrelenmemiş kayıt defterleri için geçerlidir.

  • Kaynak kayıt defterinde kullanılabilirlik alanları etkinleştirildiyse hedef bölgenin kullanılabilirlik alanlarını da desteklemesi gerekir. Azure Container Registry için kullanılabilirlik alanı desteği hakkında daha fazla bilgi için bkz . Azure Container Registry'de bölge yedekliliğini etkinleştirme.

Hizmet Uç Noktaları için Dikkat Edilmesi Gerekenler

Azure Container Registry için sanal ağ hizmet uç noktaları, belirtilen bir sanal ağa erişimi kısıtlar. Uç noktalar ayrıca IPv4 (internet protokolü sürüm 4) adres aralıkları listesine erişimi kısıtlayabilir. Kayıt defterine bu kaynakların dışından bağlanan tüm kullanıcıların erişimi reddedilir. Hizmet uç noktaları kayıt defteri kaynağının kaynak bölgesinde yapılandırıldıysa, hedef bölgede de aynı işlem yapılması gerekir. Bu senaryonun adımları aşağıda belirtilmişti:

  • Kayıt defterinin hedef bölgeye başarıyla yeniden oluşturulması için VNet ve Alt Ağ önceden oluşturulmalıdır. Bu iki kaynağın taşınması Azure Kaynak Taşıyıcı aracıyla gerçekleştiriliyorsa, hizmet uç noktaları otomatik olarak yapılandırılmaz ve bu nedenle el ile yapılandırma sağlamanız gerekir.

  • İkinci olarak, değişikliklerin Azure Container Registry'nin IaC'sinde yapılması gerekir. bölümünde networkAcl , altında virtualNetworkRuleshedef alt ağ için kuralı ekleyin. Hizmet uç noktasının ignoreMissingVnetServiceEndpoint hedef bölgede yapılandırılmaması durumunda IaC'nin Azure Container Registry'yi dağıtamaması için bayrağın False olarak ayarlandığından emin olun. Bu, hedef bölgedeki önkoşulların karşılanmasını sağlar

Özel uç nokta için dikkat edilmesi gerekenler

Azure Özel Bağlantı sanal ağdan Hizmet olarak Azure platformu (PaaS), müşteriye ait veya Microsoft iş ortağı hizmetleri. Özel Bağlantı ağ mimarisini basitleştirir ve verilerin genel İnternet'e açık olmasını ortadan kaldırarak Azure'daki uç noktalar arasındaki bağlantıyı güvence altına alır.

Kaynağınızın hedef bölgede başarılı bir şekilde yeniden oluşturulması için gerçek rekreasyon gerçekleşmeden önce VNet ve Alt Ağ oluşturulmalıdır.

Azure Özel Uç Nokta DNS tümleştirmesi için dikkat edilmesi gerekenler

Özel uç nokta IP adresini bağlantı dizesi tam etki alanı adına (FQDN) çözümlemek için DNS ayarlarınızı doğru şekilde yapılandırmanız önemlidir.

Mevcut Microsoft Azure hizmetleri genel uç nokta için zaten bir DNS yapılandırmasına sahip olabilir. Özel uç noktanızı kullanarak bağlanmak için bu yapılandırma geçersiz kılınmalıdır.

Özel uç noktayla ilişkilendirilmiş ağ arabirimi, DNS'nizi yapılandırma bilgilerini içerir. Ağ arabirimi bilgileri, özel bağlantı kaynağınız için FQDN ve özel IP adreslerini içerir.

Özel uç noktalar için DNS ayarlarınızı yapılandırmak için aşağıdaki seçenekleri kullanabilirsiniz:

  • Ana bilgisayar dosyasını kullanın (yalnızca test için önerilir). DNS’i geçersiz kılmak için sanal makinedeki ana bilgisayar dosyasını kullanabilirsiniz.
  • Özel DNS bölgesi kullanın. Özel uç noktanın DNS çözümlemesini geçersiz kılmak için özel DNS bölgelerini kullanabilirsiniz. Bir özel DNS bölgesi belirli etki alanlarını çözümlemek için sanal ağınıza bağlanabilir.
  • DNS ileticinizi kullanın (isteğe bağlı). Özel uç noktanın DNS çözümlemesini geçersiz kılmak için DNS ileticinizi kullanabilirsiniz. Sanal ağda barındırılan DNS sunucunuzda özel bir DNS bölgesi kullanmak için bir DNS iletme kuralı oluşturun.
  • Azure Container Registry'nin premium katmanla hedef bölgede yapılandırılması gerekir.

  • Bir kayıt defterine genel ağ erişimi devre dışı bırakıldığında, Azure Güvenlik Merkezi dahil olmak üzere bazı güvenilen hizmetler tarafından kayıt defteri erişimi, ağ kurallarını atlamak için bir ağ ayarının etkinleştirilmesini gerektirir.

  • Kayıt defterinin onaylı bir özel uç noktası varsa ve genel ağ erişimi devre dışıysa, depolar ve etiketler Azure portalı, Azure CLI veya diğer araçlar kullanılarak sanal ağın dışında listelenemez.

  • Yeni bir çoğaltma söz konusu olduğunda, hedef bölgedeki veri uç noktası için el ile yeni bir DNS kaydı eklemek zorunlu olur.

Kesinti süresi

Olası kapalı kalma sürelerini anlamak için bkz. Azure için Bulut Benimseme Çerçevesi: Yeniden konumlandırma yöntemi seçme.

Hazırlama

Not

Yalnızca istemciye özgü verileri barındırmayan ve tek başına taşınacak bir Container Registry'yi yeniden dağıtmak istiyorsanız, Bicep veya JSON kullanarak kayıt defterini yeniden dağıtabilirsiniz.

Diğer kullanılabilirlik yapılandırma şablonlarını görüntülemek için Bicep, ARM şablonları ve Terraform AzAPI sağlayıcısı ile kaynakları tanımlama bölümüne gidin

Veri geçişiyle yeniden konumlandırmaya hazırlanmak için:

  1. Kayıt defteri tarafından kullanılan tüm Azure hizmetleriyle bir bağımlılık eşlemesi oluşturun. Yeniden konumlandırma kapsamındaki hizmetler için uygun yeniden konumlandırma stratejisini seçmeniz gerekir.

  2. Azure Container Registry (ACR) için güvenlik duvarı ve ağ yalıtımı gibi kaynak ağ düzenini belirleyin.

  3. Hedef kayıt defterine aktarmak için kaynak kayıt defterinden gerekli görüntüleri alın. Görüntüleri almak için aşağıdaki komutu çalıştırın:

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. Hedef kayıt defterine içeri aktarmak üzere kaynak kayıt defterinin otomasyon yapılandırmalarını almak için ACR Görevlerini kullanın.

Şablonu dışarı aktarma

Başlamak için bir Resource Manager şablonunu dışarı aktarın. Bu şablon, Container Registry'nizi açıklayan ayarları içerir. Dışarı aktarılan şablonları kullanma hakkında daha fazla bilgi için bkz. [Azure portalından dışarı aktarılan şablonu kullanma](.. /azure-resource-manager/templates/template-tutorial-Azure portale.md) ve şablon başvurusu.

  1. Azure portalında kaynak kayıt defterinize gidin.

  2. Menüde, Otomasyon'un altında Şablonu>dışarı aktar İndir'i seçin.

    Kapsayıcı kayıt defteri için dışarı aktarma şablonunun ekran görüntüsü.

  3. Portaldan indirdiğiniz .zip dosyasını bulun ve bu dosyanın sıkıştırmasını istediğiniz bir klasöre açın.

    Bu zip dosyası, şablonun dağıtılacağı şablonu ve betikleri içeren .json dosyalarını içerir.

Şablonu değiştir

İndirdiğiniz şablon JSON dosyasındaki kayıt defteri özelliklerini inceleyin ve gerekli değişiklikleri yapın. En azından:

  • Kayıt defteri adlarını defaultValue hedef kayıt defterinin istenen adıyla değiştirin
  • location hedef kayıt defteri için istenen Azure bölgesine güncelleştirin
{
    "$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",
        ...
        }
    ]
}
  • İndirilen şablonda Registry scopeMaps, çoğaltma yapılandırması, Log Analytics gibi tanılama ayarları gibi tüm ilişkili kaynak ayrıntılarını doğrulayın.

  • Kaynak kayıt defteri şifrelenirse müşteri tarafından yönetilen bir anahtar kullanarak hedef kayıt defterini şifreleyin ve şablonu gerekli yönetilen kimlik, anahtar kasası ve anahtar ayarlarıyla güncelleştirin. Müşteri tarafından yönetilen anahtarı yalnızca kayıt defterini dağıtırken etkinleştirebilirsiniz.

Kaynak grubu oluştur

az group create komutunu kullanarak hedef kayıt defteri için bir kaynak grubu oluşturun. Aşağıdaki örnek eastus konumunda myResourceGroup adlı bir kaynak grubu oluşturur.

az group create --name myResourceGroup --location eastus

Yeniden dağıtım

Şablonu kullanarak hedef kayıt defterini dağıtmak için az deployment group create komutunu kullanın:

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

Not

Dağıtım sırasında hatalar görürseniz şablon dosyasındaki belirli yapılandırmaları güncelleştirmeniz ve komutu yeniden denemeniz gerekebilir.

Kayıt defteri içeriğini hedef kayıt defterine aktarma

Hedef bölgede kayıt defterini oluşturduktan sonra:

  1. Kaynak kayıt defterinden korumak istediğiniz görüntüleri ve diğer yapıtları hedef kayıt defterine aktarmak için az acr import komutunu veya eşdeğer PowerShell komutunu Import-AzContainerImagekullanın. Komut örnekleri için bkz . Kapsayıcı görüntülerini kapsayıcı kayıt defterine aktarma.

  2. Kaynak kayıt defterinizin içeriğini listelemeye yardımcı olması için az acr repository list ve az acr repository show-tags veya Azure PowerShell eşdeğerleri Azure CLI komutlarını kullanın.

  3. Tek tek yapıtlar için içeri aktarma komutunu çalıştırın veya bir yapıt listesi üzerinde çalıştırmak için betikleyin.

Aşağıdaki örnek Azure CLI betiği kaynak depoları ve etiketleri numaralandırır ve ardından yapıtları aynı Azure aboneliğindeki bir hedef kayıt defterine aktarır. Belirli depoları veya etiketleri içeri aktarmak için gerektiğinde değiştirin. Farklı bir abonelik veya kiracıdaki bir kayıt defterinden içeri aktarmak için Kapsayıcı görüntülerini kapsayıcı kayıt defterine aktarma bölümündeki örneklere bakın.

#!/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
  1. Tanılama ayarlarında log analytics çalışma alanı gibi bağımlı kaynakları hedef Azure Container Registry ile ilişkilendirin.

  2. Azure Container Registry tümleştirmesini, aşağıdaki komutu çalıştırarak sağlanan veya henüz sağlanacak aks kümelerinin her iki türüyle de yapılandırın:


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. Yeniden konumlandırılmış Azure Container Registry (ACR) ile tümleştirmek için Kubernetes bildirim dosyasında gerekli değişiklikleri yapın.

  2. Geliştirme ve dağıtım sistemlerini kaynak kayıt defteri yerine hedef kayıt defterini kullanacak şekilde güncelleştirin.

  3. Hedef kayıt defterine erişime izin vermek için tüm istemci güvenlik duvarı kurallarını güncelleştirin.

Doğrulama

Hedef kayıt defterinizde aşağıdaki bilgileri onaylayın:

  • Kayıt defteri adı, hizmet katmanı, genel erişim ve çoğaltmalar gibi kayıt defteri ayarları
  • Korumak istediğiniz içeriğin depoları ve etiketleri.

Özgün kayıt defterini silme

Hedef kayıt defterini, geçirilen içeriği ve doğrulanmış kayıt defteri ayarlarını başarıyla dağıttıktan sonra kaynak kayıt defterini silebilirsiniz.