Share via


Ü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

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.jsonfá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

Következő lépések