Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Container Apps zarządza szczegółami Kubernetes i orkiestracji kontenerów dla ciebie. 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 - Kontenery z dowolnego publicznego lub prywatnego rejestru kontenerów
- Opcjonalne kontenery pomocnicze i kontenery inicjujące
Funkcje obejmują również:
- Aplikacje używają
template
sekcji konfiguracji, aby zdefiniować obraz kontenera i inne ustawienia. Zmiany w sekcji konfiguracjitemplate
wyzwalają nową wersję aplikacji kontenera. - Jeśli kontener ulegnie awarii, zostanie on automatycznie uruchomiony ponownie.
Funkcje zadań obejmują:
- Wykonania zadań używają sekcji konfiguracji
template
do zdefiniowania obrazu kontenera i innych ustawień na początku 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
Większość aplikacji kontenerów ma jeden kontener. W zaawansowanych scenariuszach aplikacja może również mieć kontenery boczne i kontenery inicjalizacyjne. W definicji aplikacji kontenera, główna aplikacja i jej kontenery pomocnicze są wymienione w tablicy containers
w sekcji properties.template
, a kontenery inicjalizacyjne są wymienione w tablicy initContainers
. Poniższy fragment przedstawia dostępne opcje konfiguracji podczas konfigurowania kontenerów aplikacji.
{
"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 kontenerowej. | Ta wartość ma postać repository/<IMAGE_NAME>:<TAG> . Unikaj używania tagów statycznych, takich jak latest w przypadku obrazów kontenerów. Używanie tagów statycznych może prowadzić do problemów z buforowaniem i może utrudnić rozwiązywanie problemów z aplikacją. Zamiast tego użyj unikatowych tagów dla każdego wdrożenia, takiego jak skrót usługi Git lub data i godzina, aby upewnić się, że aktualizacje są prawidłowo śledzone i wdrażane. |
name |
Przyjazna nazwa kontenera. | Służy do raportowania i identyfikacji. |
command |
Polecenie uruchamiania kontenera. | Odpowiednik pola entrypoint w Dockerze. |
args |
Uruchom argumenty poleceń. | Wpisy w tablicy są połączone w celu utworzenia listy parametrów, którą przekazuje się do komendy startowej. |
env |
Tablica par nazwa/wartość definiujących zmienne środowiskowe. | Zamiast pola secretRef użyj value podczas odwoływania się do tajemnicy. |
resources.cpu |
Liczba procesorów przydzielonych do kontenera. | Zobacz wymagania dotyczące alokacji vCPU i pamięci |
resources.memory |
Ilość pamięci RAM przydzielonej do kontenera. | Zobacz wymagania dotyczące alokacji vCPU i pamięci |
volumeMounts |
Tablica definicji montowania woluminu. | Można zdefiniować tymczasowe lub trwałe woluminy magazynu dla kontenera. Aby uzyskać więcej informacji na temat woluminów magazynu, zobacz Use storage mounts in Azure Container Apps (Używanie montowania magazynu w usłudze Azure Container Apps). |
probes |
Tablica sond kondycji włączona w kontenerze. | Aby uzyskać więcej informacji na temat ustawień sond, zobacz Sondy kondycji w usłudze Azure Container Apps. |
Wymagania dotyczące alokacji vCPU i pamięci
W przypadku korzystania z planu Zużycia łączna ilość CPU i pamięci przydzielonej do wszystkich kontenerów w aplikacji kontenera musi stanowić jedną z następujących kombinacji.
Procesory wirtualne (rdzenie) | Pamięć |
---|---|
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 |
Uwaga
Aplikacje korzystające z planu Zużycie tylko w środowisku tylko Zużycia są ograniczone do maksymalnie 2 rdzeni i 4Gi pamięci.
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 kontenerowej współdzieli zasoby dysku twardego i sieci oraz doświadcza tego samego cyklu życia aplikacji.
Istnieją dwa sposoby uruchamiania dodatkowych kontenerów w aplikacji kontenera: kontenery pomocnicze i kontenery inicjowania.
Kontenery przyczepki
Aby zaimplementować wzorzec sidecar, można zdefiniować wiele kontenerów w jednej aplikacji kontenerowej.
Przykłady kontenerów bocznych 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ą, z której korzysta 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ć jeden lub więcej init containers. Kontenery inicjowania są uruchamiane przed kontenerem aplikacji podstawowej i są używane do wykonywania zadań inicjowania, takich jak pobieranie danych lub przygotowywanie środowiska.
Kontenery inicjalizujące są definiowane w tablicy initContainers
w szablonie aplikacji kontenerowej. Kontenery są uruchamiane w kolejności zdefiniowanej w tablicy i muszą zostać wykonane pomyślnie przed uruchomieniem podstawowego kontenera aplikacji.
Uwaga
Kontenery inicjujące w aplikacjach korzystających z planu dedykowanego lub uruchomionych w środowisku konsumpcyjnym nie mogą uzyskać dostępu do tożsamości zarządzanej podczas wykonywania.
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ć rejestr w tablicy w sekcji registries
szablonu zasobu aplikacji kontenerowej. Pole passwordSecretRef
identyfikuje nazwę tajnego klucza w nazwie tablicy secrets
, 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": "docker-hub-password",
"value": "my-docker-hub-password"
}
],
...
"registries": [
{
"server": "docker.io",
"username": "someuser",
"passwordSecretRef": "docker-hub-password"
}
]
}
}
Uwaga
Usługa Docker Hub ogranicza liczbę pobrań obrazów platformy Docker. Po osiągnięciu limitu nie można uruchomić kontenerów w aplikacji. 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.
Aby używać tożsamości zarządzanej z rejestrem, tożsamość musi być włączona w aplikacji i mieć przypisaną rolę acrPull
w rejestrze. Aby skonfigurować rejestr, użyj identyfikatora zasobu tożsamości zarządzanej dla tożsamości przypisanej przez użytkownika lub dla tożsamości przypisanej przez system w właściwości system
rejestru. Nie konfiguruj nazwy użytkownika i hasła podczas korzystania z tożsamości zarządzanej.
{
"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
).Maksymalny rozmiar obrazu:
- Obsługa profilu obciążenia zasobów umożliwia korzystanie z obrazów kontenerów o łącznej wielkości do 8 GB na każdą aplikację lub replikę zadania.
- Dedykowane profile obciążeń obsługują większe obrazy kontenerów. Ponieważ dedykowany profil roboczy może uruchamiać wiele aplikacji lub zadań, różne obrazy kontenerów współdzielą dostępne miejsce na dysku. Rzeczywisty obsługiwany rozmiar obrazu różni się w zależności od zasobów używanych przez inne aplikacje i zadania.