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ů konfigurace přístupu k registru je vytvoření instančního objektu a hesla Microsoft Entra a uložení přihlašovacích údajů do trezoru klíčů Azure.

Předpoklady

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í

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, se doporučuje 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 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ů.

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_NAMEsouboru . 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číná písmenem, končí písmenem nebo číslicí a nesmí obsahovat pomlčky po sobě jdoucí.

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. Tento 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 do registru nasdíleli image aci-helloworld . --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í.

  1. Na webu Azure Portal přejděte do svého registru kontejneru.

  2. Pokud chcete ověřit, že je účet správce povolený, vyberte Přístupové klíče a v části Správa uživatel vyberte Povolit.

  3. 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.

  4. Zadejte název kontejneru a název skupiny prostředků. Pokud chcete, můžete také změnit výchozí hodnoty.

    Create menu for Azure Container Instances

  5. 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.

    Details view for Azure Container Instances container group

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.