Azure Container Registry’den Azure Container Instances’a dağıtma
Azure Container Registry, özel Docker kapsayıcı görüntülerini depolamak için kullanılan Azure tabanlı, yönetilen bir kapsayıcı kayıt defteri hizmetidir. Bu makalede, azure kapsayıcı kayıt defterinde depolanan kapsayıcı görüntülerinin azure kapsayıcı kayıt defterine dağıtım Azure Container Instances. Kayıt defteri erişimini yapılandırmanın önerilen bir yolu, Azure Active Directory hizmet sorumlusu ve parolası oluşturmak ve oturum açma kimlik bilgilerini bir Azure anahtar kasasında depolamaktır.
Önkoşullar
Azure container registry: Bu makaledeki adımları tamamlamak için bir Azure kapsayıcı kayıt defterine ve kayıt defterinde en az bir kapsayıcı görüntüsüne ihtiyacınız vardır. Kayıt defterine ihtiyacınız varsa bkz. Azure CLI kullanarak kapsayıcı kayıt defteri oluşturma.
Azure CLI: Bu makaledeki komut satırı örnekleri Azure CLI'sini kullanır ve Bash kabuğu için biçimlendirildi. Azure CLI'sini yerel olarak yükleyebilir veya Azure Cloud Shell.
Sınırlamalar
- Aynı kapsayıcı grubunda yapılandırılmış bir yönetilen Azure Container Registry kullanarak kapsayıcı grubu dağıtımı sırasında görüntüleri çekmek için kimlik doğrulaması Azure Container Registry kimlik doğrulaması yapmak mümkün değildir.
- Şu anda Azure Sanal Ağına Azure Container Registry bir sanal makineden görüntü çekesiniz.
Kayıt defteri kimlik doğrulamasını yapılandırma
"Başsız" hizmetlere ve uygulamalara erişim sağlayan bir üretim senaryosunda, bir hizmet sorumlusu kullanarak kayıt defteri erişiminin yapılandırılması önerilir. Hizmet sorumlusu, kapsayıcı görüntülerinize Azure rol tabanlı erişim denetimi (Azure RBAC) sağlamanızı sağlar. Örneğin, bir hizmet sorumlusunu bir kayıt defterine yalnızca çekme erişimiyle yapılandırabilirsiniz.
Azure Container Registry kimlik doğrulaması seçenekleri sağlar.
Aşağıdaki bölümde bir Azure anahtar kasası ve hizmet sorumlusu oluşturacağız ve hizmet sorumlusu kimlik bilgilerini kasada depolayacağız.
Anahtar kasası oluşturma
Azure Key Vault içinde henüz bir kasanız yoksa, aşağıdaki komutları kullanarak Azure CLI ile bir kasa oluşturun.
değişkenini anahtar kasasının oluşturulacak mevcut kaynak grubunun adıyla ve kapsayıcı kayıt RES_GROUP ACR_NAME defterinizin adıyla güncelleştirin. Bu makaledeki komutlarda, kayıt defterinizin, anahtar kasanızı ve kapsayıcı örneklerinizi aynı kaynak grubunda oluşturduğunuz varsayın.
içinde yeni anahtar kasanız için bir ad AKV_NAME belirtin. Kasa adı Azure içinde benzersiz olmalı ve 3-24 alfasayısal karakter uzunluğunda olmalı, bir harfle başlamalıdır, bir harf veya rakamla bitmeli ve ardışık kısa çizgi içeremez.
RES_GROUP=myresourcegroup # Resource Group name
ACR_NAME=myregistry # Azure Container Registry registry name
AKV_NAME=mykeyvault # Azure Key Vault vault name
az keyvault create -g $RES_GROUP -n $AKV_NAME
Hizmet sorumlusu oluşturma ve kimlik bilgilerini depolama
Şimdi bir hizmet sorumlusu oluşturun ve kimlik bilgilerini anahtar kasanıza depolar.
Aşağıdaki komutlarda hizmet sorumlusunu oluşturmak için az ad sp create-for-rbac ve hizmet sorumlusu parolasını kasada depolamak için az keyvault secret set komutu kullanılır. Oluşturma sırasında hizmet sorumlusu appId'lerini not edin.
# Create service principal
az ad sp create-for-rbac \
--name http://$ACR_NAME-pull \
--scopes $(az acr show --name $ACR_NAME --query id --output tsv) \
--role acrpull
SP_ID=xxxx # Replace with your service principal's appId
# Store the registry *password* in the vault
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-pwd \
--value $(az ad sp show --id $SP_ID --query password --output tsv)
Önceki komutta yer alan bağımsız değişken, hizmet sorumlusunu arpull rolüyle yapılandırır ve bu rol kayıt --role defterine yalnızca çekme erişimi sağlar. Hem itme hem de çekme erişimi vermek için bağımsız --role değişkenlerini acrpush olarak değiştirebilirsiniz.
Ardından hizmet sorumlusu appId'lerini kasada depolar. Bu, kimlik doğrulaması için Azure Container Registry kullanıcı adıdır.
# Store service principal ID in vault (the registry *username*)
az keyvault secret set \
--vault-name $AKV_NAME \
--name $ACR_NAME-pull-usr \
--value $(az ad sp show --id $SP_ID --query appId --output tsv)
Bir Azure anahtar kasası oluşturdunuz ve içinde iki gizli dizi depoladınız:
$ACR_NAME-pull-usr: Kapsayıcı kayıt defterinin kullanıcı adı olarak kullanılacak hizmet sorumlusu kimliği.$ACR_NAME-pull-pwd: Kapsayıcı kayıt defterinin parolası olarak kullanılacak hizmet sorumlusu parolası.
Artık siz veya uygulamalarınız ve hizmetleriniz kayıt defterinden görüntüleri çektiğinde bu gizli dizilere ada göre başvurabilirsiniz.
Azure CLI ile kapsayıcı dağıtma
Hizmet sorumlusu kimlik bilgileri gizli dizilerde depolandığına Azure Key Vault uygulamalarınız ve hizmetleriniz bunları özel kayıt defterinize erişmek için kullanabilir.
İlk olarak az acr show komutunu kullanarak kayıt defterinin oturum açma sunucusu adını al. Oturum açma sunucusu adının hepsi küçük harflidir ve ile myregistry.azurecr.io benzerdir.
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)
Bir kapsayıcı örneği dağıtmak için aşağıdaki az container create komutunu yürütün. Komut, kapsayıcı kayıt defterinize kimlik doğrulaması yapmak için Azure Key Vault hizmet sorumlusu kimlik bilgilerini kullanır ve daha önce aci-helloworld görüntüsünü kayıt defterinize ittiniz varsayılmaktadır. Kayıt --image defterinize göre farklı bir görüntü kullanmak için değeri güncelleştirin.
az container create \
--name aci-demo \
--resource-group $RES_GROUP \
--image $ACR_LOGIN_SERVER/aci-helloworld:v1 \
--registry-login-server $ACR_LOGIN_SERVER \
--registry-username $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-usr --query value -o tsv) \
--registry-password $(az keyvault secret show --vault-name $AKV_NAME -n $ACR_NAME-pull-pwd --query value -o tsv) \
--dns-name-label aci-demo-$RANDOM \
--query ipAddress.fqdn
Değerin --dns-name-label Azure içinde benzersiz olması gerekir, bu nedenle yukarıdaki komut kapsayıcının DNS ad etiketine rastgele bir sayı ekler. Komutun çıktısı, kapsayıcının tam etki alanı adını (FQDN) gösterir, örneğin:
"aci-demo-25007.eastus.azurecontainer.io"
Kapsayıcı başarıyla başlatıldıktan sonra, uygulamanın başarıyla çalıştığını doğrulamak için tarayıcınızda FQDN'sinde gezinebilirsiniz.
Azure Resource Manager şablonuyla dağıtma
Azure kapsayıcı kayıt defterinizin özelliklerini kapsayıcı grubu tanımına dahil Azure Resource Manager şablonda imageRegistryCredentials belirtebilirsiniz. Örneğin, kayıt defteri kimlik bilgilerini doğrudan belirtebilirsiniz:
[...]
"imageRegistryCredentials": [
{
"server": "imageRegistryLoginServer",
"username": "imageRegistryUsername",
"password": "imageRegistryPassword"
}
]
[...]
Kapsayıcı grubu ayarlarının eksiksiz bir şekilde tamamlanması için Resource Manager başvurusuna bakın.
Bir şablonda gizli dizilere Azure Key Vault ayrıntıları Resource Manager için bkz. Dağıtım sırasında güvenli parametre Azure Key Vault için güvenlik parametresini kullanma.
Azure portal ile dağıtma
Kapsayıcı görüntülerini bir Azure kapsayıcı kayıt defterinde bulunduracaksanız, kapsayıcıyı kullanarak Azure Container Instances kolayca Azure portal. Bir kapsayıcı kayıt defterinden kapsayıcı örneği dağıtmak için portalı kullanırken, kayıt defterinin yönetici hesabını etkinleştirmeniz gerekir. Yönetici hesabı, temel olarak test amacıyla tek bir kullanıcının kayıt defterine erişmesi için tasarlanmıştır.
Aşağıdaki Azure portal kapsayıcı kayıt defterinize gidin.
Yönetici hesabının etkin olduğunu onaylamak için Erişim anahtarları'ı seçin ve Yönetici kullanıcı altında Etkinleştir'i seçin.
Depolar'ı seçin, ardından dağıtmak istediğiniz depoyu seçin, dağıtmak istediğiniz kapsayıcı görüntüsünün etiketine sağ tıklayın ve Örneği çalıştır'ı seçin.

Kapsayıcı için bir ad ve kaynak grubu için bir ad girin. Ayrıca isterseniz varsayılan değerleri değiştirebilirsiniz.

Dağıtım tamamlandıktan sonra bildirimler bölmesinden kapsayıcı grubuna gidin ve IP adresini ve diğer özellikleri bulun.

Sonraki adımlar
Kimlik doğrulaması hakkında daha fazla Azure Container Registry için bkz. Azure kapsayıcı kayıt defteriyle kimlik doğrulama.