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