Tutorial: Bereitstellen einer Gruppe mit mehreren Containern mithilfe einer YAML-Datei

Azure Container Instances unterstützt die Bereitstellung von mehreren Containern auf einem einzelnen Host mit einer Containergruppe. Containergruppen sind nützlich, wenn eine Sidecaranwendung für die Protokollierung, die Überwachung oder eine andere Konfiguration, bei der ein Dienst einen zweiten angefügten Prozess benötigt, erstellt wird.

In diesem Tutorial führen Sie Schritte zum Ausführen einer einfachen Sidecarkonfiguration mit zwei Containern aus, indem Sie mithilfe der Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI) eine YAML-Datei bereitstellen. Eine YAML-Datei bietet ein übersichtliches Format zur Angabe der Instanzeinstellungen. Folgendes wird vermittelt:

  • Konfigurieren einer YAML-Datei
  • Bereitstellen der Containergruppe
  • Anzeigen der Protokolle der Container

Hinweis

Gruppen mit mehreren Containern sind aktuell auf Linux-Container beschränkt.

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

Konfigurieren einer YAML-Datei

Um eine Gruppe mit mehreren Containern mit dem Befehl az container create in der Azure-Befehlszeilenschnittstelle bereitzustellen, müssen Sie die Containergruppenkonfiguration in einer YAML-Datei angeben. Übergeben Sie die YAML-Datei dann als Parameter an den Befehl.

Starten Sie, indem Sie den folgenden YAML-Inhalt in eine neue Datei mit dem Namen deploy-aci.yaml kopieren. In Azure Cloud Shell können Sie die Datei mit Visual Studio Code in Ihrem Arbeitsverzeichnis erstellen:

code deploy-aci.yaml

Diese YAML-Datei definiert eine Containergruppe namens „myContainerGroup“ mit zwei Containern, einer öffentlichen IP-Adresse und zwei verfügbar gemachten Ports. Die Container werden aus öffentlichen Microsoft-Images bereitgestellt. Der erste Container in der Gruppe führt eine Webanwendung mit Internetverbindung aus. Vom zweiten Container, dem Sidecar, erfolgen in regelmäßigen Abständen HTTP-Anforderungen an die Webanwendung, die im ersten Container über das lokale Netzwerk der Containergruppe ausgeführt wird.

apiVersion: 2019-12-01
location: eastus
name: myContainerGroup
properties:
  containers:
  - name: aci-tutorial-app
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld:latest
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
      ports:
      - port: 80
      - port: 8080
  - name: aci-tutorial-sidecar
    properties:
      image: mcr.microsoft.com/azuredocs/aci-tutorial-sidecar
      resources:
        requests:
          cpu: 1
          memoryInGb: 1.5
  osType: Linux
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: 80
    - protocol: tcp
      port: 8080
tags: {exampleTag: tutorial}
type: Microsoft.ContainerInstance/containerGroups

Um eine private Containerimageregistrierung zu verwenden, fügen Sie die imageRegistryCredentials-Eigenschaft mit für Ihre Umgebung entsprechend geänderten Werten in der Containergruppe hinzu:

  imageRegistryCredentials:
  - server: imageRegistryLoginServer
    username: imageRegistryUsername
    password: imageRegistryPassword

Bereitstellen der Containergruppe

Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe:

az group create --name myResourceGroup --location eastus

Stellen Sie die Containergruppe mit dem Befehl az container create bereit, und übergeben Sie dabei die YAML-Datei als Argument:

az container create --resource-group myResourceGroup --file deploy-aci.yaml

Innerhalb weniger Sekunden sollten Sie eine erste Antwort von Azure erhalten.

Zusammenfassung der Bereitstellungen anzeigen

Um den Bereitstellungsstatus anzuzeigen, verwenden Sie den folgenden Befehl az container show:

az container show --resource-group myResourceGroup --name myContainerGroup --output table

Wenn Sie die laufende Anwendung anzeigen möchten, navigieren Sie zu ihrer IP-Adresse in Ihrem Browser. In dieser Beispielausgabe lautet die IP 52.168.26.124:

Name              ResourceGroup    Status    Image                                                                                               IP:ports              Network    CPU/Memory       OsType    Location
----------------  ---------------  --------  --------------------------------------------------------------------------------------------------  --------------------  ---------  ---------------  --------  ----------
myContainerGroup  danlep0318r      Running   mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest  20.42.26.114:80,8080  Public     1.0 core/1.5 gb  Linux     eastus

Containerprotokolle anzeigen

Zeigen Sie die Protokollausgabe eines Containers mithilfe des Befehls az container logs an. Das --container-name-Argument gibt den Container an, aus dem Protokolle erhalten werden können. In diesem Beispiel wird der Container aci-tutorial-app angegeben.

az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app

Ausgabe:

listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"

Führen Sie einen ähnlichen Befehl aus, in dem Sie den Container aci-tutorial-sidecar angeben, um die Protokolle für den Sidecarcontainer anzuzeigen.

az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar

Ausgabe:

Every 3s: curl -I http://localhost                          2020-07-02 20:36:41

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  1663    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive

Wie Sie sehen, sendet das Sidecar in regelmäßigen Abständen über das lokale Netzwerk der Gruppe eine HTTP-Anforderung an die Hauptwebanwendung, um sicherzustellen, dass diese ausgeführt wird. Dieses Sidecarbeispiel kann erweitert werden, um eine Warnung auszulösen, wenn ein anderer HTTP-Antwortcode als 200 OK empfangen wird.

Nächste Schritte

In diesem Tutorial haben Sie eine Gruppe mit mehreren Containern mit einer YAML-Datei in Azure Container Instances bereitgestellt. Sie haben Folgendes gelernt:

  • Konfigurieren einer YAML-Datei für eine Gruppe mit mehreren Containern
  • Bereitstellen der Containergruppe
  • Anzeigen der Protokolle der Container

Sie können eine Gruppe mit mehreren Containern auch mithilfe einer Resource Manager-Vorlage angeben. Für Szenarien, in denen Sie mit der Containergruppe weitere Azure-Dienstressourcen bereitstellen möchten, können Sie ganz einfach eine Resource Manager-Vorlage anpassen.