Konfigurace testů připravenosti

U kontejnerizovaných aplikací, které obsluhují provoz, můžete chtít ověřit, že je kontejner připravený ke zpracování příchozích požadavků. Služba Azure Container Instances podporuje testy připravenosti, aby zahrnovaly konfigurace, aby se ke kontejneru za určitých podmínek nemohl získat přístup. Sonda připravenosti se chová jako sonda připravenosti Kubernetes. Například aplikace typu kontejner může během spuštění potřebovat načíst velkou sadu dat a nechcete, aby během této doby přijímala požadavky.

Tento článek vysvětluje, jak nasadit skupinu kontejnerů, která zahrnuje sondu připravenosti, aby kontejner přijímal provoz pouze v případě úspěšného testu.

Služba Azure Container Instances podporuje také sondy aktivity, které můžete nakonfigurovat tak, aby způsobily automatické restartování kontejneru, který není v pořádku.

Konfigurace YAML

Jako příklad vytvořte readiness-probe.yaml soubor s následujícím fragmentem kódu, který obsahuje sondu připravenosti. Tento soubor definuje skupinu kontejnerů, která se skládá z kontejneru, ve kterém běží malá webová aplikace. Aplikace se nasadí z veřejné mcr.microsoft.com/azuredocs/aci-helloworld image. Tato kontejnerizovaná aplikace je také ukázkou nasazení instance kontejneru v Azure pomocí Azure CLI a dalších rychlých startů.

apiVersion: 2019-12-01
location: eastus
name: readinesstest
properties:
  containers:
  - name: mycontainer
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      command:
        - "/bin/sh"
        - "-c"
        - "node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait"
      ports:
      - port: 80
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
      readinessProbe:
        exec:
          command:
          - "cat"
          - "/tmp/ready"
        periodSeconds: 5
  osType: Linux
  restartPolicy: Always
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '80'
tags: null
type: Microsoft.ContainerInstance/containerGroups

Spustit – příkaz

Nasazení zahrnuje command vlastnost definující spouštěcí příkaz, který se spustí při prvním spuštění kontejneru. Tato vlastnost přijímá pole řetězců. Tento příkaz simuluje čas spuštění webové aplikace, ale kontejner není připravený.

Nejprve spustí relaci prostředí a spustí node příkaz pro spuštění webové aplikace. Spustí také příkaz pro režim spánku po dobu 240 sekund, po kterém vytvoří soubor volaný ready v rámci /tmp adresáře:

node /usr/src/app/index.js & (sleep 240; touch /tmp/ready); wait

Příkaz připravenosti

Tento soubor YAML definuje, readinessProbe který podporuje exec příkaz připravenosti, který funguje jako kontrola připravenosti. Tento příklad příkazu připravenosti testuje existenci ready souboru v /tmp adresáři.

ready Pokud soubor neexistuje, příkaz připravenosti se ukončí s nenulovou hodnotou. Kontejner bude dál spuštěný, ale není k němu přístup. Po úspěšném ukončení příkazu s ukončovacím kódem 0 je kontejner připravený k přístupu.

Vlastnost periodSeconds určuje příkaz připravenosti by se měl spustit každých 5 sekund. Sonda připravenosti se spustí po celou dobu životnosti skupiny kontejnerů.

Příklad nasazení

Spuštěním následujícího příkazu nasaďte skupinu kontejnerů s předchozí konfigurací YAML:

az container create --resource-group myResourceGroup --file readiness-probe.yaml

Zobrazení kontrol připravenosti

V tomto příkladu během prvních 240 sekund příkaz připravenosti selže, když zkontroluje ready existenci souboru. Stavový kód vrátil signály, že kontejner není připravený.

Tyto události je možné zobrazit na webu Azure Portal nebo v Azure CLI. Například portál zobrazuje události typu Unhealthy , které se aktivují při selhání příkazu připravenosti.

Událost, která není v pořádku na portálu

Ověření připravenosti kontejneru

Po spuštění kontejneru můžete ověřit, že není zpočátku přístupný. Po zřízení získejte IP adresu skupiny kontejnerů:

az container show --resource-group myResourceGroup --name readinesstest --query "ipAddress.ip" --out tsv

Pokuste se získat přístup k webu, když sonda připravenosti selže:

wget <ipAddress>

Výstup ukazuje, že web není na začátku přístupný:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...

Po 240 sekundách bude příkaz připravenosti úspěšný a signalizují, že kontejner je připravený. Když teď spustíte wget příkaz, proběhne úspěšně:

wget 192.0.2.1
--2019-10-15 16:46:02--  http://192.0.2.1/
Connecting to 192.0.2.1... connected.
HTTP request sent, awaiting response...200 OK
Length: 1663 (1.6K) [text/html]
Saving to: ‘index.html.1’

index.html.1                       100%[===============================================================>]   1.62K  --.-KB/s    in 0s

2019-10-15 16:49:38 (113 MB/s) - ‘index.html.1’ saved [1663/1663]

Až bude kontejner připravený, můžete k webové aplikaci přistupovat také tak, že přejdete na IP adresu pomocí webového prohlížeče.

Poznámka:

Sonda připravenosti se bude dál spouštět po celou dobu životnosti skupiny kontejnerů. Pokud příkaz připravenosti později selže, kontejner bude znovu nedostupný.

Další kroky

Sonda připravenosti může být užitečná ve scénářích zahrnujících vícekontenerové skupiny, které se skládají ze závislých kontejnerů. Další informace o scénářích s více kontejnery najdete v tématu Skupiny kontejnerů ve službě Azure Container Instances.