Nasazení do služby Azure Container Instances ze služby Azure Container Registry pomocí instančního objektu
Azure Container Registry je spravovaná služba registru kontejnerů založená na Azure, která slouží k ukládání privátních imagí kontejnerů Dockeru. Tento článek popisuje, jak vyžádat image kontejnerů uložené v registru kontejneru Azure při nasazování do služby Azure Container Instances. Jedním ze způsobů, jak nakonfigurovat přístup k registru, je vytvořit instanční objekt a heslo Microsoft Entra a uložit přihlašovací údaje do trezoru klíčů Azure.
Požadavky
Registr kontejnerů Azure: K dokončení kroků v tomto článku potřebujete registr kontejneru Azure a alespoň jednu image kontejneru v registru. Pokud potřebujete registr, přečtěte si téma Vytvoření registru kontejneru pomocí Azure CLI.
Azure CLI: Příklady příkazového řádku v tomto článku používají Azure CLI a jsou formátované pro prostředí Bash. Azure CLI můžete nainstalovat místně nebo použít Azure Cloud Shell.
Omezení
- Kontejnery Windows nepodporují image ověřené spravovanou identitou přiřazenou systémem pomocí ACR, pouze přiřazené uživatelem.
Konfigurace ověřování registru
V produkčním scénáři, ve kterém poskytujete přístup k "bezobslužné" službě a aplikacím, doporučujeme nakonfigurovat přístup k registru pomocí instančního objektu. Instanční objekt umožňuje poskytnout imagím kontejnerů řízení přístupu na základě role (Azure RBAC) v Azure. Můžete například nakonfigurovat instanční objekt s přístupem k registru pouze ke čtení.
Azure Container Registry nabízí další možnosti ověřování.
V následující části vytvoříte trezor klíčů Azure a instanční objekt a uložíte přihlašovací údaje instančního objektu do trezoru.
Vytvoření trezoru klíčů
Pokud ještě nemáte trezor ve službě Azure Key Vault, vytvořte si ho v Azure CLI pomocí následujících příkazů.
RES_GROUP
Aktualizujte proměnnou názvem existující skupiny prostředků, ve které chcete vytvořit trezor klíčů a ACR_NAME
název registru kontejneru. V zájmu stručnosti příkazy v tomto článku předpokládají, že všechny instance registru, trezoru klíčů a kontejneru jsou vytvořeny ve stejné skupině prostředků.
Zadejte název nového trezoru klíčů v AKV_NAME
souboru . Název trezoru musí být jedinečný v rámci Azure a musí mít délku 3 až 24 alfanumerických znaků, začínat písmenem, končit písmenem nebo číslicí a nesmí obsahovat po sobě jdoucí pomlčky.
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
Vytvoření instančního objektu a uložení přihlašovacích údajů
Teď vytvořte instanční objekt a uložte jeho přihlašovací údaje do trezoru klíčů.
Následující příkazy používají az ad sp create-for-rbac k vytvoření instančního objektu a az keyvault secret set k uložení hesla instančního objektu do trezoru. Nezapomeňte si po vytvoření poznamenat ID aplikace instančního objektu.
# 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)
Argument --role
v předchozím příkazu nakonfiguruje instanční objekt s rolí acrpull , která mu udělí přístup jen pro vyžádání změn do registru. Pokud chcete udělit přístup push i pull, změňte --role
argument na acrpush.
Dále uložte ID aplikace instančního objektu do trezoru, což je uživatelské jméno, které předáte službě Azure Container Registry pro ověření.
# 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)
Vytvořili jste trezor klíčů Azure a uložili jste do něj dva tajné kódy:
$ACR_NAME-pull-usr
: ID instančního objektu, které se bude používat jako uživatelské jméno registru kontejneru.$ACR_NAME-pull-pwd
: heslo instančního objektu, které se bude používat jako heslo registru kontejneru.
Teď můžete na tyto tajné kódy odkazovat názvem, když budete vy nebo vaše aplikace a služby načítat image z tohoto registru.
Nasazení kontejneru pomocí Azure CLI
Teď, když jsou přihlašovací údaje instančního objektu uložené v tajných klíčích služby Azure Key Vault, můžou je vaše aplikace a služby použít pro přístup k vašemu privátnímu registru.
Nejprve pomocí příkazu az acr show získejte název přihlašovacího serveru registru. Název přihlašovacího serveru je malými písmeny a podobá se myregistry.azurecr.io
.
ACR_LOGIN_SERVER=$(az acr show --name $ACR_NAME --resource-group $RES_GROUP --query "loginServer" --output tsv)
Spuštěním následujícího příkazu az container create nasaďte instanci kontejneru. Příkaz používá přihlašovací údaje instančního objektu uložené ve službě Azure Key Vault k ověření ve vašem registru kontejneru a předpokládá, že jste dříve odeslali image aci-helloworld do registru. --image
Pokud chcete použít jinou image z registru, aktualizujte hodnotu.
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
Hodnota --dns-name-label
musí být jedinečná v rámci Azure, takže předchozí příkaz připojí náhodné číslo k popisku názvu DNS kontejneru. Výstup příkazu zobrazí plně kvalifikovaný název domény kontejneru, například:
"aci-demo-25007.eastus.azurecontainer.io"
Jakmile se kontejner úspěšně spustí, můžete v prohlížeči přejít na jeho plně kvalifikovaný název domény a ověřit úspěšné spuštění aplikace.
Nasazení pomocí šablony Azure Resource Manageru
Vlastnosti registru kontejneru Azure můžete zadat v šabloně Azure Resource Manageru zahrnutím imageRegistryCredentials
vlastnosti do definice skupiny kontejnerů. Přihlašovací údaje registru můžete zadat například přímo:
[...]
"imageRegistryCredentials": [
{
"server": "imageRegistryLoginServer",
"username": "imageRegistryUsername",
"password": "imageRegistryPassword"
}
]
[...]
Kompletní nastavení skupiny kontejnerů najdete v referenčních informacích k šabloně Resource Manageru.
Podrobnosti o odkazování na tajné kódy služby Azure Key Vault v šabloně Resource Manageru najdete v tématu Použití služby Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.
Nasazení pomocí webu Azure Portal
Pokud udržujete image kontejnerů v registru kontejnerů Azure, můžete kontejner snadno vytvořit ve službě Azure Container Instances pomocí webu Azure Portal. Pokud k nasazení instance kontejneru z registru kontejneru používáte portál, musíte povolit účet správce registru. Účet správce je určený pro přístup jednoho uživatele k registru, zejména pro účely testování.
Na webu Azure Portal přejděte do svého registru kontejneru.
Pokud chcete ověřit, že je účet správce povolený, vyberte Přístupové klíče a v části Uživatel s oprávněním správce vyberte Povolit.
Vyberte Úložiště a pak vyberte úložiště, ze kterého chcete nasadit, klikněte pravým tlačítkem myši na značku image kontejneru, kterou chcete nasadit, a vyberte Spustit instanci.
Zadejte název kontejneru a název skupiny prostředků. Pokud chcete, můžete také změnit výchozí hodnoty.
Po dokončení nasazení můžete přejít do skupiny kontejnerů z podokna oznámení a najít její IP adresu a další vlastnosti.
Další kroky
Další informace o ověřování ve službě Azure Container Registry najdete v tématu Ověřování pomocí registru kontejneru Azure.