Nasazení ze služby Azure Container Registry do služby Azure Container Instances

Azure Container Registry je spravovaná služba registru kontejnerů založená na Azure, která slouží k ukládání privátních imagí kontejneru Docker. Tento článek popisuje, jak načítat image kontejneru uložené v Azure Container Registry při nasazení do Azure Container Instances. doporučeným způsobem, jak nakonfigurovat přístup k registru, je vytvořit Azure Active Directory instanční objekt a heslo a přihlašovací údaje uložit v trezoru klíčů Azure.

Požadavky

Azure Container Registry: potřebujete službu Azure Container Registry, a alespoň jednu Image kontejneru v registru, abyste mohli dokončit kroky v tomto článku. Pokud potřebujete registr, přečtěte si téma Vytvoření registru kontejnerů pomocí Azure CLI.

Azure CLI: Příklady příkazového řádku v tomto článku používají Azure CLI a jsou naformátované pro prostředí bash. Azure CLI můžete nainstalovat místně nebo použít Azure Cloud Shell.

Omezení

  • Pomocí spravované identity nakonfigurované ve stejné skupině kontejnerů se nemůžete ověřit, aby se při nasazení skupiny kontejnerů načetly image Azure Container Registry.
  • V tuto chvíli nemůžete načítat image z Azure Container Registry nasazených do Azure Virtual Network.

Konfigurace ověřování registru

V produkčním scénáři, kdy poskytujete přístup k "bezobslužným" službám a aplikacím, se doporučuje nakonfigurovat přístup k registru pomocí instančního objektu. Instanční objekt umožňuje poskytnout vašim imagím kontejneru řízení přístupu na základě role Azure (Azure RBAC) . Můžete například nakonfigurovat instanční objekt s přístupem k registru pouze ke čtení.

Azure Container Registry poskytuje 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ů.

Aktualizujte RES_GROUP proměnnou názvem existující skupiny prostředků, ve které chcete vytvořit Trezor klíčů, a ACR_NAME názvem vašeho registru kontejneru. V případě zkrácení se v příkazech v tomto článku předpokládají, že jsou všechny služby registru, trezoru klíčů a instance kontejnerů vytvořené ve stejné skupině prostředků.

Zadejte název nového trezoru klíčů v AKV_NAME . Název trezoru musí být v rámci Azure jedinečný a musí mít 3-24 alfanumerických znaků, začínat písmenem, končit písmenem nebo číslicí a nesmí obsahovat po sobě jdoucí spojovní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í příkaz AZ AD SP Create-for-RBAC k vytvoření instančního objektu a k uložení hesla instančního objektu do trezoru pomocí příkazu AZ Service tajná sada klíčů . Nezapomeňte si poznamenat appId při vytváření 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)

--roleArgument v předchozím příkazu nakonfiguruje instanční objekt pomocí role acrpull , která uděluje přístup pouze pro získání přístupu k registru. Chcete-li udělit přístup push i Pull, změňte --role argument na acrpush.

Dále do trezoru uložte identifikátor appId objektu služby, což je uživatelské jméno , které jste předali Azure Container Registry k ověřování.

# 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ž vy nebo vaše aplikace a služby budou 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 Azure Key Vault tajných klíčích, můžou vaše aplikace a služby používat k přístupu k privátnímu registru.

Nejprve pomocí příkazu AZ ACR show načtěte název přihlašovacího serveru registru. Název přihlašovacího serveru je malými písmeny a podobně jako 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é v Azure Key Vault k ověření ve vašem registru kontejneru a předpokládá, že jste do svého registru dřív posunuli image ACI-Hello . Aktualizujte --image hodnotu, pokud chcete použít jiný obrázek z registru.

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

--dns-name-labelHodnota musí být v rámci Azure jedinečná, 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"

Po úspěšném spuštění kontejneru můžete v prohlížeči přejít na jeho plně kvalifikovaný název domény a ověřit, jestli je aplikace spuštěná úspěšně.

Nasazení pomocí šablony Azure Resource Manager

Vlastnosti služby Azure Container Registry můžete zadat v šabloně Azure Resource Manager zahrnutím imageRegistryCredentials vlastnosti do definice skupiny kontejnerů. Můžete například zadat přihlašovací údaje registru přímo:

[...]
"imageRegistryCredentials": [
  {
    "server": "imageRegistryLoginServer",
    "username": "imageRegistryUsername",
    "password": "imageRegistryPassword"
  }
]
[...]

Kompletní nastavení skupiny kontejnerů najdete v referenčních informacích k šabloně správce prostředků.

Podrobnosti o odkazování Azure Key Vault tajných kódů v šabloně Správce prostředků najdete v tématu použití Azure Key Vault k předání hodnoty zabezpečeného parametru během nasazování.

Nasazení pomocí Azure Portal

Pokud udržujete image kontejnerů ve službě Azure Container Registry, můžete kontejner snadno vytvořit v Azure Container Instances pomocí Azure Portal. Při použití portálu k nasazení instance kontejneru z registru kontejneru je nutné povolit účet správceregistru. Účet správce je navržený pro jednoho uživatele, který má přístup k registru, hlavně pro účely testování.

  1. V Azure Portal přejděte do registru kontejneru.

  2. Pokud chcete potvrdit, že je účet správce povolený, vyberte přístupové klíče a v části uživatel s oprávněními vyberte Povolit.

  3. Vyberte úložiště a pak vyberte úložiště, ze kterého chcete nasadit, klikněte pravým tlačítkem na značku pro Image kontejneru, kterou chcete nasadit, a vyberte spustit instanci.

    "Run instance" v Azure Container Registry Azure Portal

  4. Zadejte název kontejneru a název skupiny prostředků. V případě potřeby můžete také změnit výchozí hodnoty.

    Vytvořit nabídku pro Azure Container Instances

  5. Po dokončení nasazení můžete přejít do skupiny kontejnerů z podokna oznámení a vyhledat jeho IP adresu a další vlastnosti.

    Zobrazení podrobností pro Azure Container Instances skupinu kontejnerů

Další kroky

Další informace o ověřování Azure Container Registry najdete v tématu ověřování pomocí služby Azure Container Registry.