Üzembe helyezés az Azure Container Registryből az Azure Container Instancesben felügyelt identitás használatával
Az Azure Container Registry (ACR) egy Azure-alapú, felügyelt tárolóregisztrációs szolgáltatás, amely privát Docker-tárolólemezképek tárolására szolgál. Ez a cikk azt ismerteti, hogyan lehet lekérni egy Azure-tárolóregisztrációs adatbázisban tárolt tárolórendszerképeket az Azure Container Instances tárolócsoportjaiban való üzembe helyezéskor. A beállításjegyzék-hozzáférés konfigurálásának egyik módja egy Microsoft Entra által felügyelt identitás létrehozása.
Ha az Azure Container Registryhez (ACR) való hozzáférés privát végponttal van korlátozva, a felügyelt identitás használatával a virtuális hálózaton üzembe helyezett Azure Container Instances hozzáférhet a tárolóregisztrációs adatbázishoz a privát végponton keresztül.
Előfeltételek
Azure-tárolóregisztrációs adatbázis: Legalább egy rendszerképpel rendelkező prémium termékváltozatú Azure-tárolóregisztrációs adatbázisra van szüksége. Ha létre kell hoznia egy beállításjegyzéket, olvassa el a Tárolóregisztrációs adatbázis létrehozása az Azure CLI használatával című témakört. Ügyeljen arra, hogy jegyezze fel a beállításjegyzék id
és a loginServer
Azure CLI: A cikkben szereplő parancssori példák az Azure CLI-t használják, és a Bash-rendszerhéjhoz vannak formázva. Telepítheti az Azure CLI-t helyileg, vagy használhatja az Azure Cloud Shellt.
Korlátozások
A Windows-tárolók nem támogatják a rendszer által hozzárendelt felügyelt identitás által hitelesített rendszerkép-lekéréseket az ACR-vel, csak a felhasználó által hozzárendelteket.
Az Azure tárolóregisztrációs adatbázisának nyilvános hozzáféréssel kell rendelkeznie a "Hálózatok kiválasztása" vagy a "Nincs" értékre. Az Azure Container Registry "Minden hálózat" nyilvános hozzáférésének beállításához látogasson el az ACI cikkére , amely bemutatja, hogyan hitelesíthető az ACR szolgáltatásnév-alapú hitelesítéssel.
Regisztrációs adatbázis hitelesítésének konfigurálása
A tárolóregisztrációs adatbázisnak engedélyeznie kell a Megbízható szolgáltatások szolgáltatást. A megbízható szolgáltatások engedélyezésével kapcsolatos utasításokért lásd : Megbízható szolgáltatások biztonságos hozzáférésének engedélyezése a hálózat által korlátozott tárolóregisztrációs adatbázishoz.
Identitás létrehozása
Hozzon létre egy identitást az előfizetésben az az identity create paranccsal. Használhatja ugyanazt az erőforráscsoportot, amelyet korábban a tárolóregisztrációs adatbázis létrehozásához használt, vagy egy másikat.
az identity create --resource-group myResourceGroup --name myACRId
Az identitás a következő lépésekben való konfigurálásához használja az az identity show parancsot az identitás erőforrás-azonosítójának és szolgáltatásnév-azonosítójának változókban való tárolásához.
Az identitás későbbi lépésekben való megfelelő konfigurálásához az az identity show használatával szerezze be és tárolja az identitás erőforrás-azonosítóját és szolgáltatásnév-azonosítóját változókban.
# Get resource ID of the user-assigned identity
USERID=$(az identity show --resource-group myResourceGroup --name myACRId --query id --output tsv)
# Get service principal ID of the user-assigned identity
SPID=$(az identity show --resource-group myResourceGroup --name myACRId --query principalId --output tsv)
A virtuális gépről a parancssori felületre való bejelentkezéshez szüksége lesz az identitás erőforrás-azonosítójára. Az érték megjelenítése:
echo $USERID
Az erőforrás-azonosító az alábbi formában érhető el:
/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId
A felügyelt identitásnak a tárolóregisztrációs adatbázishoz való hozzáféréséhez szüksége lesz a szolgáltatásnév-azonosítóra is. Az érték megjelenítése:
echo $SPID
A szolgáltatásnév azonosítója az alábbi formában érhető el:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx
Szerepkör-hozzárendelés biztosítása az identitásnak
Ahhoz, hogy identitása hozzáférhessen a tárolóregisztrációs adatbázishoz, szerepkör-hozzárendelést kell adnia neki. A következő paranccsal adja meg a acrpull
szerepkört az imént létrehozott identitásnak, és győződjön meg arról, hogy megadja a beállításjegyzék azonosítóját és a korábban beszerzett szolgáltatásnevet:
az role assignment create --assignee $SPID --scope <registry-id> --role acrpull
Üzembe helyezés Azure Resource Manager-sablon (ARM) használatával
Először másolja a következő JSON-t egy új, nevesített azuredeploy.json
fájlba. Az Azure Cloud Shellben a Visual Studio Code használatával hozhatja létre a fájlt a munkakönyvtárban:
code azuredeploy.json
Az Azure-tárolóregisztrációs adatbázis tulajdonságait ARM-sablonban úgy adhatja meg, hogy a tulajdonságot belefogadja imageRegistryCredentials
a tárolócsoport definíciójához. Megadhatja például közvetlenül a beállításjegyzék hitelesítő adatait:
Megjegyzés:
Ez nem egy átfogó ARM-sablon, hanem egy példa arra, hogy a teljes sablon szakasza hogyan resources
nézne ki.
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2021-09-01",
"name": "myContainerGroup",
"location": "norwayeast",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId": {}
}
},
"properties": {
"containers": [
{
"name": "mycontainer",
"properties": {
"image": "myacr.azurecr.io/hello-world:latest",
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": 1,
"memoryInGB": 1
}
}
}
}
],
"imageRegistryCredentials": [
{
"server":"myacr.azurecr.io",
"identity":"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId"
}
],
"ipAddress": {
"ports": [
{
"port": 80,
"protocol": "TCP"
}
],
"type": "public"
},
"osType": "Linux"
}
}
A sablon üzembe helyezése
A Resource Manager-sablon üzembe helyezése a következő paranccsal:
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
Üzembe helyezés az Azure CLI-vel
Ha felügyelt identitással szeretne üzembe helyezni egy tárolócsoportot a rendszerkép-lekérések Azure CLI-en keresztüli hitelesítéséhez, használja az alábbi parancsot, és győződjön meg arról, hogy globálisan <dns-label>
egyedi:
az container create --name my-containergroup --resource-group myResourceGroup --image <loginServer>/hello-world:v1 --acr-identity $USERID --assign-identity $USERID --ports 80 --dns-name-label <dns-label>
Üzembe helyezés virtuális hálózaton az Azure CLI használatával
Ha felügyelt identitással szeretne tárolócsoportot üzembe helyezni egy virtuális hálózaton egy privát végpont mögött futó ACR rendszerképeinek hitelesítéséhez az Azure CLI-vel, használja a következő parancsot:
az container create --name my-containergroup --resource-group myResourceGroup --image <loginServer>/hello-world:v1 --acr-identity $USERID --assign-identity $USERID --vnet "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myVNetResourceGroup/providers/ --subnet mySubnetName
A virtuális hálózaton való üzembe helyezésről további információt a tárolópéldányok Azure-beli virtuális hálózaton való üzembe helyezéséről talál.
Többtárolós csoport üzembe helyezése virtuális hálózaton a YAML és az Azure CLI használatával
Ha többtárolós csoportot szeretne üzembe helyezni egy virtuális hálózaton felügyelt identitással a privát végpont mögött futó ACR rendszerképeinek hitelesítéséhez az Azure CLI-vel, megadhatja a tárolócsoport konfigurációját egy YAML-fájlban. Ezután adja át a YAML-fájlt paraméterként a parancsnak.
apiVersion: '2021-10-01'
location: eastus
type: Microsoft.ContainerInstance/containerGroups
identity:
type: UserAssigned
userAssignedIdentities: {
'/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId': {}
}
properties:
osType: Linux
imageRegistryCredentials:
- server: myacr.azurecr.io
identity: '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myACRId'
subnetIds:
- id: '/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx/resourceGroups/myVNetResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNetName/subnets/mySubnetName'
name: mySubnetName
containers:
- name: myContainer-1
properties:
resources:
requests:
cpu: '.4'
memoryInGb: '1'
environmentVariables:
- name: CONTAINER
value: 1
image: 'myacr.azurecr.io/myimage:latest'
- name: myContainer-2
properties:
resources:
requests:
cpu: '.4'
memoryInGb: '1'
environmentVariables:
- name: CONTAINER
value: 2
image: 'myacr.azurecr.io/myimage:latest'
az container create --name my-containergroup --resource-group myResourceGroup --file my-YAML-file.yaml
További információ a többtárolós csoportokban való üzembe helyezésről: Többtárolós csoport üzembe helyezése.
Clean up resources
Ha az összes erőforrást el szeretné távolítani az Azure-előfizetésből, törölje az erőforráscsoportot:
az group delete --name myResourceGroup