Megosztás:


Tárolók az Azure Container Appsben

Az Azure Container Apps kezeli a Kubernetes és a tárolóvezénylés részleteit. Az Azure Container Apps tárolói tetszőleges futtatókörnyezetet, programozási nyelvet vagy fejlesztési vermet használhatnak.

Azure Container Apps: Tárolók

Az Azure Container Apps a következőket támogatja:

  • Bármely Linux-alapú x86-64 (linux/amd64) tárolórendszerkép
  • Tárolók bármely nyilvános vagy privát tárolóregisztrációs adatbázisból
  • Opcionális oldalkocsi- és inittárolók

A funkciók közé tartoznak a következők is:

  • Az alkalmazások a template konfigurációs szakasz használatával határozzák meg a tároló lemezképét és egyéb beállításait. template A konfigurációs szakasz módosításai új tárolóalkalmazás-változatot aktiválnak.
  • Ha egy tároló összeomlik, az automatikusan újraindul.

A feladatok funkciói a következők:

  • A feladatvégrehajtások a template konfigurációs szakasz használatával határozzák meg a tároló lemezképét és egyéb beállításait az egyes végrehajtások indításakor.
  • Ha egy tároló nem nulla kilépési kóddal lép ki, a feladat végrehajtása sikertelenként van megjelölve. A feladat konfigurálható a sikertelen végrehajtások újrapróbálkozására.

Konfiguráció

A legtöbb tárolóalkalmazás egyetlen tárolóval rendelkezik. Speciális helyzetekben egy alkalmazás oldalkocsis és inicializáló tárolókkal is rendelkezhet. A tárolóalkalmazás-definícióban a fő alkalmazás és az oldalkocsis tárolók a containers szakasz properties.template tömbjében, az init tárolók pedig a initContainers tömbben jelennek meg. Az alábbi részlet az alkalmazás tárolóinak beállításakor elérhető konfigurációs beállításokat mutatja be.

{
  "properties": {
    "template": {
      "containers": [
        {
          "name": "main",
          "image": "[parameters('container_image')]",
          "env": [
            {
              "name": "HTTP_PORT",
              "value": "80"
            },
            {
              "name": "SECRET_VAL",
              "secretRef": "mysecret"
            }
          ],
          "resources": {
            "cpu": 0.5,
            "memory": "1Gi"
          },
          "volumeMounts": [
            {
              "mountPath": "/appsettings",
              "volumeName": "appsettings-volume"
            }
          ],
          "probes": [
            {
              "type": "liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "liveness probe"
                  }
                ]
              },
              "initialDelaySeconds": 7,
              "periodSeconds": 3
            },
            {
              "type": "readiness",
              "tcpSocket": {
                "port": 8081
              },
              "initialDelaySeconds": 10,
              "periodSeconds": 3
            },
            {
              "type": "startup",
              "httpGet": {
                "path": "/startup",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "startup probe"
                  }
                ]
              },
              "initialDelaySeconds": 3,
              "periodSeconds": 3
            }
          ]
        }
      ]
    },
    "initContainers": [
      {
        "name": "init",
        "image": "[parameters('init_container_image')]",
        "resources": {
          "cpu": 0.25,
          "memory": "0.5Gi"
        },
        "volumeMounts": [
          {
            "mountPath": "/appsettings",
            "volumeName": "appsettings-volume"
          }
        ]
      }
    ]
    ...
  }
  ...
}
Beállítás Leírás Megjegyzések
image A tárolóalkalmazás konténerképének neve. Ez az érték a következő formában jelenik meg repository/<IMAGE_NAME>:<TAG>: .

Kerülje a statikus címkék használatát, például latest tárolólemezképekhez. A statikus címkék használata gyorsítótárazási problémákhoz vezethet, és megnehezítheti az alkalmazás hibaelhárítását. Ehelyett használjon egyedi címkéket minden egyes üzembe helyezéshez, például egy Git-kivonatot vagy dátumot és időt, hogy a frissítések megfelelően legyenek nyomon követve és üzembe helyezve.
name A tároló rövid neve. Jelentéskészítéshez és azonosításhoz használatos.
command A tároló indítási parancsa. Egyenértékű a Docker belépési mezőjével .
args Parancsargumentumok indítása. A tömb bejegyzései össze vannak adva, hogy létrehozzák az indítási parancsnak átadott paraméterlistát.
env Környezeti változókat definiáló név-érték párok tömbje. Használja a secretRef-t a value mező helyett, amikor egy titkos kódra hivatkozik.
resources.cpu A tárolóhoz lefoglalt CPU-k száma. Lásd a vCPU és a memóriafoglalás követelményeit
resources.memory A tárolóhoz lefoglalt RAM mennyisége. Lásd a vCPU és a memóriafoglalás követelményeit
volumeMounts Mennyiségi csatlakoztatási definíciók tömbje. Saját tárolóedényéhez ideiglenes vagy állandó tárolóköteteket határozhat meg. A tárolókötetekkel kapcsolatos további információkért lásd: Tárolócsatlakozások használata az Azure Container Appsben.
probes A konténerben engedélyezett egészségügyi szondák tömbje. A mintavételi beállításokról további információt az Azure Container Apps állapottesztjei című témakörben talál.

vCPU- és memóriafoglalási követelmények

Amikor a fogyasztási csomagot használja, a konténeralkalmazás összes konténerének lefoglalt teljes processzor- és memóriamennyiségének az alábbi kombinációk egyikére kell összeadódnia.

vCPU-k (processzormagok) Memória
0.25 0.5Gi
0.5 1.0Gi
0.75 1.5Gi
1.0 2.0Gi
1.25 2.5Gi
1.5 3.0Gi
1.75 3.5Gi
2.0 4.0Gi
2.25 4.5Gi
2.5 5.0Gi
2.75 5.5Gi
3.0 6.0Gi
3.25 6.5Gi
3.5 7.0Gi
3.75 7.5Gi
4.0 8.0Gi

Megjegyzés:

A csak fogyasztási környezetben a Fogyasztási tervet használó alkalmazások legfeljebb 2 magot és 4Gi memóriát használhatnak.

Több tároló

Speciális esetekben több tárolót is futtathat egyetlen tárolóalkalmazásban. Ezt a mintát csak azokban az esetekben használja, ahol a tárolók szorosan kapcsolódnak egymáshoz.

A legtöbb mikroszolgáltatási forgatókönyv esetében az ajánlott eljárás az egyes szolgáltatások külön tárolóalkalmazásként való üzembe helyezése.

Ugyanazon tárolóalkalmazás több tárolója osztozik a merevlemezen és a hálózati erőforrásokon, és ugyanazt az alkalmazás életciklusát tapasztalja.

A tárolóalkalmazásokban kétféleképpen futtathat további tárolókat: oldalkocsis tárolókat és init-tárolókat.

Oldalkocsis tárolók

Egyetlen tárolóalkalmazásban több tárolót is definiálhat a oldalkocsis mintaimplementálásához.

Ilyenek például az oldalkocsis tárolók:

  • Egy ügynök, amely naplókat olvas az elsődleges alkalmazástárolóból egy megosztott köteten , és továbbítja őket egy naplózási szolgáltatásnak.

  • Egy háttérfolyamat, amely frissíti a megosztott kötet elsődleges alkalmazástárolója által használt gyorsítótárat.

Ezek a forgatókönyvek példák, és nem csak az oldalkocsik implementálásának módjait jelölik.

Ha több tárolót szeretne futtatni egy tárolóalkalmazásban, adjon hozzá egynél több tárolót a containers tárolóalkalmazás-sablon tömbjéhez.

Init-tárolók

Egy vagy több inicializálási tárolót definiálhat egy tárolóalkalmazásban. Az Init-tárolók az elsődleges alkalmazástároló előtt futnak, és inicializálási feladatok végrehajtására szolgálnak, például adatok letöltésére vagy a környezet előkészítésére.

Az Init-tárolók a initContainers tárolóalkalmazás-sablon tömbjében vannak definiálva. A tárolók a tömbben meghatározott sorrendben futnak, és az elsődleges alkalmazástároló elindítása előtt sikeresen be kell fejeződniük.

Megjegyzés:

Az inicializáló tárolók a dedikált csomagot használó vagy csak használatalapú környezetben futó alkalmazásokban nem férnek hozzá a felügyelt identitáshoz futásidőben.

Tárolóregisztrációs adatbázisok

Úgy telepíthet képeket privát regisztrációs adatbázisokból, hogy megadja a hitelesítési adatokat a Container Apps konfigurációjában.

Tárolóregiszter használatához a regisztert a registries tömbben, a tárolóalkalmazás erőforrássablonjának properties.configuration szakaszában kell meghatároznia. A passwordSecretRef mező azonosítja a titkos kód nevét abban a secrets tömbnévben, ahol a jelszót definiálta.

{
  ...
  "registries": [{
    "server": "docker.io",
    "username": "my-registry-user-name",
    "passwordSecretRef": "my-password-secret-name"
  }]
}

A mentett hitelesítő adatokkal lekérhet egy tárolólemezképet a privát beállításjegyzékből az alkalmazás üzembe helyezésekor.

Az alábbi példa bemutatja, hogyan konfigurálhatja az Azure Container Registry hitelesítő adatait egy tárolóalkalmazásban.

{
  ...
  "configuration": {
    "secrets": [
      {
        "name": "docker-hub-password",
        "value": "my-docker-hub-password"
      }
    ],
    ...
    "registries": [
      {
        "server": "docker.io",
        "username": "someuser",
        "passwordSecretRef": "docker-hub-password"
      }
    ]
  }
}

Megjegyzés:

A Docker Hub korlátozza a Docker-rendszerképek letöltéseinek számát. A korlát elérésekor az alkalmazás tárolói nem indulnak el. A probléma elkerülése érdekében használjon megfelelő korlátozásokkal rendelkező beállításjegyzéket, például az Azure Container Registryt .

Felügyelt identitás az Azure Container Registry használatával

Azure-beli felügyelt identitással hitelesítést végezhet az Azure Container Registryben felhasználónév és jelszó használata helyett. További információ: Felügyelt identitások az Azure Container Appsben.

A felügyelt identitás beállításjegyzékkel való használatához engedélyezni kell az identitást az alkalmazásban, és szerepkört kell hozzárendelni acrPull a beállításjegyzékhez. A beállításjegyzék konfigurálásához használja a felügyelt identitás erőforrás-azonosítóját egy felhasználó által hozzárendelt identitáshoz, vagy system a rendszer által hozzárendelt identitáshoz a identity beállításjegyzék tulajdonságában. Ne konfiguráljon felhasználónevet és jelszót felügyelt identitás használatakor.

{
    "identity": {
        "type": "SystemAssigned,UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>": {}
        }
    }
    "properties": {
        "configuration": {
            "registries": [
            {
                "server": "myacr1.azurecr.io",
                "identity": "<IDENTITY1_RESOURCE_ID>"
            },
            {
                "server": "myacr2.azurecr.io",
                "identity": "system"
            }]
        }
        ...
    }
}

További információ a felhasználó által hozzárendelt identitások konfigurálásáról: Felhasználó által hozzárendelt identitás hozzáadása.

Korlátozások

Az Azure Container Appsre a következő korlátozások vonatkoznak:

  • Kiemelt jogosultságú konténerek: Az Azure Container Apps nem engedélyezi a gazdagépszintű hozzáféréssel rendelkező kiemelt jogosultságú konténereket.

  • Operációs rendszer: Linux-alapú (linux/amd64) tárolólemezképek szükségesek.

  • Maximális képméret:

    • A fogyasztási munkaterhelési profil minden alkalmazáshoz vagy feladatreplikához összesen legfeljebb 8 GB méretű konténerképeket támogat.
    • A dedikált számítási feladatok profiljai támogatják a nagyobb tárolólemezképeket. Mivel egy dedikált számítási feladatprofil több alkalmazást vagy feladatot is futtathat, több tárolólemezkép is osztozik a rendelkezésre álló lemezterületen. A tényleges támogatott képméret a más alkalmazások és feladatok által felhasznált erőforrásoktól függően változik.

Következő lépések