Tárolók az Azure Container Appsben

Az Azure Container Apps kezeli Ön helyett a Kubernetes és a tárolóvezénylés részleteit. Az Azure Container Apps szolgáltatásban a tárolók bármily választott futtatókörnyezetet, programozási nyelvet vagy fejlesztőkészletet futtathatják.

Azure Container Apps: Containers

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

  • Bármely Linux-alapú x86-64 -es (linux/amd64) tárolórendszerkép kötelező alaplemezkép nélkül
  • Tárolók bármely nyilvános vagy privát tárolóregisztrációs adatbázisból
  • Sidecar és init tárolók

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

  • 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ó

Az alábbi kód egy tárolóalkalmazás-erőforrássablon szakaszában található properties.template tömbre mutat be példátcontainers. A részlet a tároló 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 Description Remarks
image A tárolóalkalmazás tárolólemezképének neve. Ez az érték a következő formában jelenik meg repository/<IMAGE_NAME>:<TAG>: .
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ó kulcs-érték párok tömbje. Használja secretRef a mező helyett egy value titkos kódra való hivatkozáshoz.
resources.cpu A tárolóhoz lefoglalt CPU-k száma. A Használati tervben az értékeknek meg kell felelnie a következő szabályoknak:

• nullánál nagyobb
• 2-nél kisebb vagy egyenlő
• lehet tetszőleges decimális szám (legfeljebb két tizedesjegy)

Például érvényes, 1.25 de 1.555 érvénytelen.
Az alapértelmezett érték tárolónként 0,25 processzor.

Ha a Dedikált csomagban használja a Használat számítási feladat profilt, ugyanazok a szabályok érvényesek, kivéve, hogy a PROCESSZOROK értéke 4-nél kisebb vagy egyenlő lehet.

A dedikált csomag használata esetén a maximális CPU-knak kisebbnek vagy egyenlőnek kell lenniük a tárolóalkalmazást futtató profilban elérhető magok számával.
resources.memory A tárolóhoz lefoglalt RAM mennyisége. A Használati tervben az értékeknek meg kell felelnie a következő szabályoknak:

• nullánál nagyobb
• kisebb vagy egyenlő 4Gi
• lehet tetszőleges decimális szám (legfeljebb két tizedesjegy)

Például érvényes, 1.25Gi de 1.555Gi érvénytelen.
Az alapértelmezett érték tárolónként.0.5Gi

Ha a dedikált csomagban használja a Használat számítási feladatot, ugyanazok a szabályok érvényesek, kivéve, hogy a memória nem lehet kisebb vagy egyenlő8Gi.

A dedikált csomag használata esetén a maximális memóriamennyiségnek kisebbnek vagy egyenlőnek kell lennie a tárolóalkalmazást futtató profilban rendelkezésre álló memória mennyiségével.
volumeMounts Mennyiségi csatlakoztatási definíciók tömbje. A tárolóhoz megadhat egy ideiglenes kötetet vagy több állandó tárkötetet. 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 tárolóban engedélyezett állapotminták tömbje. Ez a funkció a Kubernetes állapotmintáin alapul. 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.

Ha a dedikált csomagban használja a Használat vagy a Használat számítási feladatot, a tárolóalkalmazás összes tárolójára vonatkozóan kért teljes PROCESSZOR- és memóriafoglalásnak az alábbi kombinációk egyikéhez kell hozzáadnia.

vCPU-k (magok) Memory Használatalapú csomag Használati számítási feladat profilja
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
  • Az összes tárolóban lévő CPU-kérések összegének meg kell egyeznie a vCPU-oszlop egyik értékével.

  • Az összes tároló memóriakérelmének meg kell egyeznie a memóriaoszlop memóriaértékével a CPU-oszlop ugyanazon sorában.

Ha a dedikált csomagban használja a Használat profilt, a tárolóalkalmazás összes tárolójának kért processzor- és memóriafoglalásainak kisebbnek vagy egyenlőnek kell lenniük a profilban elérhető magokkal és memóriával.

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.

Az ugyanabban a tárolóalkalmazásban található több tároló merevlemezzel és hálózati erőforrásokkal rendelkezik, és ugyanazt az alkalmazás életciklusát tapasztalja.

A tárolóalkalmazásokban kétféleképpen futtathat több tárolót: 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 az oldalkocsi-minta implementá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 Init-tárolók támogatják a rendszerképek felügyelt identitásokkal történő lekérését, de az init-tárolókban futó folyamatok nem férnek hozzá a felügyelt identitásokhoz.

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

Magánregisztrációs adatbázisokban üzemeltetett rendszerképeket úgy helyezhet üzembe, hogy hitelesítő adatokat ad meg a Container Apps konfigurációjában.

Tárolóregisztrációs adatbázis használatához meg kell határoznia a szükséges mezőket a tömbben registries a properties.configuration tárolóalkalmazás erőforrássablonjának szakaszában. 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": "acr-password",
        "value": "my-acr-password"
      }
    ],
    ...
    "registries": [
      {
        "server": "myacr.azurecr.io",
        "username": "someuser",
        "passwordSecretRef": "acr-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ásban lévő tárolók 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.

Ha felügyelt identitást rendel egy beállításjegyzékhez, 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.

{
    "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.

Limitations

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

  • Emelt szintű tárolók: Az Azure Container Apps nem engedélyezi a gazdagépszintű hozzáféréssel rendelkező kiemelt tárolókat.

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

Következő lépések