Kontenery w usłudze Azure Container Apps
Usługa Azure Container Apps zarządza szczegółami platformy Kubernetes i orkiestracji kontenerów. Kontenery w usłudze Azure Container Apps mogą korzystać z dowolnie wybranego środowiska uruchomieniowego, języka programowania lub stosu programowania.
Usługa Azure Container Apps obsługuje:
- Dowolny obraz kontenera x86-64 (
linux/amd64
) oparty na systemie Linux bez wymaganego obrazu podstawowego - Kontenery z dowolnego publicznego lub prywatnego rejestru kontenerów
- Kontenery przyczepki i init
Funkcje obejmują również:
- Zmiany w
template
sekcji konfiguracji wyzwalają nową poprawkę aplikacji kontenera. - Jeśli kontener ulegnie awarii, zostanie on automatycznie uruchomiony ponownie.
Funkcje zadań obejmują:
- Wykonania zadań używają
template
sekcji konfiguracji, aby zdefiniować obraz kontenera i inne ustawienia po uruchomieniu każdego wykonania. - Jeśli kontener zakończy działanie z kodem zakończenia innego niż zero, wykonanie zadania zostanie oznaczone jako niepowodzenie. Zadanie można skonfigurować, aby ponowić próby wykonania nieudanych prób.
Konfigurowanie
Poniższy kod jest przykładem containers
tablicy w properties.template
sekcji szablonu zasobu aplikacji kontenera. Fragment przedstawia dostępne opcje konfiguracji podczas konfigurowania kontenera.
{
"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"
}
]
}
]
...
}
...
}
Ustawienie | opis | Uwagi |
---|---|---|
image |
Nazwa obrazu kontenera dla aplikacji kontenera. | Ta wartość ma postać repository/<IMAGE_NAME>:<TAG> . |
name |
Przyjazna nazwa kontenera. | Służy do raportowania i identyfikacji. |
command |
Polecenie uruchamiania kontenera. | Odpowiednik pola punktu wejścia platformy Docker. |
args |
Uruchom argumenty poleceń. | Wpisy w tablicy są połączone w celu utworzenia listy parametrów do przekazania do polecenia uruchamiania. |
env |
Tablica par klucz/wartość definiujących zmienne środowiskowe. | Użyj secretRef zamiast value pola, aby odwołać się do wpisu tajnego. |
resources.cpu |
Liczba procesorów CPU przydzielonych do kontenera. | W przypadku planu Zużycie wartości muszą być zgodne z następującymi regułami: • większe niż zero • mniejsze niż lub równe 2 • może być dowolną liczbą dziesiętną (z maksymalnie dwoma miejscami dziesiętnymi) Na przykład jest prawidłowy, 1.25 ale 1.555 jest nieprawidłowy.Wartość domyślna to 0,25 procesorów CPU na kontener. Jeśli używasz profilu obciążenia Zużycie w ramach planu dedykowanego, mają zastosowanie te same reguły, z wyjątkiem procesorów CPU muszą być mniejsze lub równe 4. W przypadku korzystania z planu dedykowanego maksymalna liczba procesorów CPU musi być mniejsza lub równa liczbie rdzeni dostępnych w profilu, w którym jest uruchomiona aplikacja kontenera. |
resources.memory |
Ilość pamięci RAM przydzielonej do kontenera. | W przypadku planu Zużycie wartości muszą być zgodne z następującymi regułami: • większe niż zero • mniejsze niż lub równe 4Gi • może być dowolną liczbą dziesiętną (z maksymalnie dwoma miejscami dziesiętnymi) Na przykład jest prawidłowy, 1.25Gi ale 1.555Gi jest nieprawidłowy.Wartość domyślna to 0.5Gi na kontener.Jeśli używasz obciążenia Zużycie w ramach planu dedykowanego, te same reguły mają zastosowanie z wyjątkiem pamięci musi być mniejsza lub równa 8Gi .W przypadku korzystania z planu dedykowanego maksymalna ilość pamięci musi być mniejsza lub równa ilości pamięci dostępnej w profilu, w którym jest uruchomiona aplikacja kontenera. |
volumeMounts |
Tablica definicji instalacji woluminu. | Można zdefiniować wolumin tymczasowy lub wiele stałych woluminów magazynu dla kontenera. Aby uzyskać więcej informacji na temat woluminów magazynu, zobacz Use storage mounts in Azure Container Apps (Używanie instalacji magazynu w usłudze Azure Container Apps). |
probes |
Tablica sond kondycji włączona w kontenerze. | Ta funkcja jest oparta na sondach kondycji platformy Kubernetes. Aby uzyskać więcej informacji na temat ustawień sond, zobacz Sondy kondycji w usłudze Azure Container Apps. |
Jeśli używasz planu Zużycie lub obciążenia Zużycie w ramach planu dedykowanego, łączna alokacja procesora CPU i pamięci żądana dla wszystkich kontenerów w aplikacji kontenera musi zostać dodana do jednej z następujących kombinacji.
Procesory wirtualne (rdzenie) | Pamięć | Plan Zużycie | Profil obciążenia zużycie |
---|---|---|---|
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 |
✔ |
Suma żądań procesora CPU we wszystkich kontenerach musi być zgodna z jedną z wartości w kolumnie procesorów wirtualnych.
Suma żądań pamięci we wszystkich kontenerach musi być zgodna z wartością pamięci w kolumnie pamięci w tym samym wierszu kolumny procesora CPU.
Jeśli używasz profilu Zużycie w planie dedykowanym, łączna alokacja procesora CPU i pamięci żądana dla wszystkich kontenerów w aplikacji kontenera musi być mniejsza lub równa rdzeniom i pamięci dostępnej w profilu.
Wiele kontenerów
W zaawansowanych scenariuszach można uruchamiać wiele kontenerów w jednej aplikacji kontenera. Tego wzorca należy używać tylko w określonych wystąpieniach, w których kontenery są ściśle powiązane.
W przypadku większości scenariuszy mikrousług najlepszym rozwiązaniem jest wdrożenie każdej usługi jako oddzielnej aplikacji kontenera.
Wiele kontenerów w tej samej aplikacji kontenera współdzieli dysk twardy i zasoby sieciowe oraz środowisko tego samego cyklu życia aplikacji.
Istnieją dwa sposoby uruchamiania wielu kontenerów w aplikacji kontenera: kontenery przyczepki i kontenery inicjowania.
Kontenery przyczepki
Aby zaimplementować wzorzec przyczepki, można zdefiniować wiele kontenerów w jednej aplikacji kontenera.
Przykłady kontenerów przyczepki obejmują:
Agent, który odczytuje dzienniki z podstawowego kontenera aplikacji na udostępnionym woluminie i przekazuje je do usługi rejestrowania.
Proces w tle, który odświeża pamięć podręczną używaną przez podstawowy kontener aplikacji w udostępnionym woluminie.
Te scenariusze są przykładami i nie reprezentują jedynych sposobów implementacji przyczepki.
Aby uruchomić wiele kontenerów w aplikacji kontenera, dodaj więcej niż jeden kontener w containers
tablicy szablonu aplikacji kontenera.
Kontenery inicjowania
W aplikacji kontenera można zdefiniować co najmniej jeden kontener init. Kontenery inicjowania są uruchamiane przed kontenerem aplikacji podstawowej i są używane do wykonywania zadań inicjowania, takich jak pobieranie danych lub przygotowywanie środowiska.
Kontenery inicjowania są definiowane w initContainers
tablicy szablonu aplikacji kontenera. Kontenery są uruchamiane w kolejności zdefiniowanej w tablicy i muszą zostać wykonane pomyślnie przed uruchomieniem podstawowego kontenera aplikacji.
Uwaga
Kontenery inicjowania obsługują ściąganie obrazów przy użyciu tożsamości zarządzanych, ale procesy działające w kontenerach inicjowania nie mają dostępu do tożsamości zarządzanych.
Rejestry kontenerów
Obrazy hostowane w prywatnych rejestrach można wdrażać, podając poświadczenia w konfiguracji usługi Container Apps.
Aby użyć rejestru kontenerów, należy zdefiniować wymagane pola w tablicy w registries
properties.configuration
sekcji szablonu zasobu aplikacji kontenera. Pole passwordSecretRef
identyfikuje nazwę wpisu tajnego w secrets
nazwie tablicy, w której zdefiniowano hasło.
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
Zapisane poświadczenia są używane do ściągania obrazu kontenera z rejestru prywatnego podczas wdrażania aplikacji.
W poniższym przykładzie pokazano, jak skonfigurować poświadczenia usługi Azure Container Registry w aplikacji kontenera.
{
...
"configuration": {
"secrets": [
{
"name": "acr-password",
"value": "my-acr-password"
}
],
...
"registries": [
{
"server": "myacr.azurecr.io",
"username": "someuser",
"passwordSecretRef": "acr-password"
}
]
}
}
Uwaga
Usługa Docker Hub ogranicza liczbę pobrań obrazów platformy Docker. Po osiągnięciu limitu uruchamianie kontenerów w aplikacji zakończy się niepowodzeniem. Użyj rejestru z wystarczającymi limitami, takimi jak usługa Azure Container Registry , aby uniknąć tego problemu.
Tożsamość zarządzana za pomocą usługi Azure Container Registry
Tożsamość zarządzana platformy Azure umożliwia uwierzytelnianie za pomocą usługi Azure Container Registry zamiast używania nazwy użytkownika i hasła. Aby uzyskać więcej informacji, zobacz Tożsamości zarządzane w usłudze Azure Container Apps.
Podczas przypisywania tożsamości zarządzanej do rejestru użyj identyfikatora zasobu tożsamości zarządzanej dla tożsamości przypisanej przez użytkownika lub system
tożsamości przypisanej przez system.
{
"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"
}]
}
...
}
}
Aby uzyskać więcej informacji na temat konfigurowania tożsamości przypisanych przez użytkownika, zobacz Dodawanie tożsamości przypisanej przez użytkownika.
Ograniczenia
Usługa Azure Container Apps ma następujące ograniczenia:
Kontenery uprzywilejowane: usługa Azure Container Apps nie zezwala na tryb uprzywilejowanych kontenerów z dostępem na poziomie hosta.
System operacyjny: wymagane są obrazy kontenerów oparte na systemie Linux (
linux/amd64
).
Następne kroki
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla