Tutorial: Vorbereiten einer Anwendung für Azure Kubernetes Service (AKS)

In diesem Tutorial – Teil 1 von 7 – bereiten Sie eine Anwendung mit mehreren Containern für die Verwendung in Kubernetes vor. Sie verwenden vorhandene Entwicklungstools wie Docker Compose, um die Anwendung lokal zu erstellen und zu testen. Folgendes wird vermittelt:

  • Klonen einer Beispielanwendungsquelle von GitHub
  • Erstellen eines Containerimages aus der Beispielanwendungsquelle
  • Testen der Anwendung mit mehreren Containern in einer lokalen Docker-Umgebung

Nach Abschluss wird die Anwendung in Ihrer lokalen Entwicklungsumgebung ausgeführt:

Screenshot: Lokal ausgeführte Azure-Storefront-App, die in einem lokalen Webbrowser geöffnet ist

In nachfolgenden Tutorials laden Sie das Containerimage in eine Azure Container Registry (ACR) hoch und stellen es anschließend in einem AKS-Cluster bereit.

Voraussetzungen

In diesem Tutorial wird vorausgesetzt, dass zentrale Docker-Konzepte wie Container und Containerimages sowie docker-Befehle bekannt sind. Eine Einführung in Container finden Sie bei Bedarf unter Get started with Docker (Erste Schritte mit Docker).

Für dieses Tutorial ist eine lokale Docker-Entwicklungsumgebung mit Linux-Containern erforderlich. Für Docker sind Pakete erhältlich, mit denen Docker in einem Mac-, Windows- oder Linux-System konfiguriert werden kann.

Hinweis

Azure Cloud Shell umfasst keine Docker-Komponenten, die zum Abschließen der einzelnen Schritte dieser Tutorials erforderlich sind. Aus diesem Grund wird empfohlen, eine vollständige Docker-Entwicklungsumgebung zu verwenden.


Abrufen von Anwendungscode

Die in diesem Tutorial verwendete Beispielanwendung ist eine einfache Store Front-App, einschließlich der folgenden Kubernetes-Bereitstellungen und -Dienste:

Screenshot: Beispielarchitektur für einen Azure-Store

  • Store Front: Webanwendung für Kund*innen zum Anzeigen von Produkten und Aufgeben von Bestellungen
  • Product Service: zeigt Produktinformationen an.
  • Order Service: dient der Aufgabe von Bestellungen.
  • Rabbit MQ: Nachrichtenwarteschlange für eine Bestellwarteschlange
  1. Verwenden Sie Git, um die Beispielanwendung in Ihrer Entwicklungsumgebung zu klonen.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  2. Wechseln Sie in das geklonte Verzeichnis.

    cd aks-store-demo
    

Überprüfen der Docker Compose-Datei

Die Beispielanwendung, die Sie in diesem Tutorial erstellen, verwendet die YAML-Datei docker-compose-quickstart in dem Repository, das Sie geklont haben.

services:
  rabbitmq:
    image: rabbitmq:3.13.2-management-alpine
    container_name: 'rabbitmq'
    restart: always
    environment:
      - "RABBITMQ_DEFAULT_USER=username"
      - "RABBITMQ_DEFAULT_PASS=password"
    ports:
      - 15672:15672
      - 5672:5672
    healthcheck:
      test: ["CMD", "rabbitmqctl", "status"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
    networks:
      - backend_services
  order-service:
    build: src/order-service
    container_name: 'order-service'
    restart: always
    ports:
      - 3000:3000
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - ORDER_QUEUE_HOSTNAME=rabbitmq
      - ORDER_QUEUE_PORT=5672
      - ORDER_QUEUE_USERNAME=username
      - ORDER_QUEUE_PASSWORD=password
      - ORDER_QUEUE_NAME=orders
      - ORDER_QUEUE_RECONNECT_LIMIT=3
    networks:
      - backend_services
    depends_on:
      rabbitmq:
        condition: service_healthy
  product-service:
    build: src/product-service
    container_name: 'product-service'
    restart: always
    ports:
      - 3002:3002
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - AI_SERVICE_URL=http://ai-service:5001/
    networks:
      - backend_services
  store-front:
    build: src/store-front
    container_name: 'store-front'
    restart: always
    ports:
      - 8080:8080
    healthcheck:
      test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    environment:
      - VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
      - VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
    networks:
      - backend_services
    depends_on:
      - product-service
      - order-service
networks:
  backend_services:
    driver: bridge

Erstellen von Containerimages und Ausführen einer Anwendung

Sie können Docker Compose verwenden, um die Erstellung von Containerimages und die Bereitstellung von Anwendungen mit mehreren Containern zu automatisieren.

Docker

  1. Führen Sie den Befehl docker compose aus, um das Containerimage zu erstellen, das RabbitMQ-Image herunterzuladen und die Anwendung zu starten:

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. Zeigen Sie die erstellten Images mithilfe des Befehls docker images an.

    docker images
    

    Die folgende verkürzte Beispielausgabe zeigt die erstellten Images:

    REPOSITORY                        TAG                          IMAGE ID
    aks-store-demo-product-service    latest                       72f5cd7e6b84
    aks-store-demo-order-service      latest                       54ad5de546f9
    aks-store-demo-store-front        latest                       1125f85632ae
    rabbitmq                          3.13.2-management-alpine     b1dafc50c098
    ...
    
  3. Zeigen Sie die ausgeführten Container mithilfe des Befehls docker ps an.

    docker ps
    

    Die folgende verkürzte Beispielausgabe zeigt vier ausgeführte Container:

    CONTAINER ID        IMAGE
    f27fe74cfd0a        aks-store-demo-product-service
    df1eaa137885        aks-store-demo-order-service
    b3ce9e496e96        aks-store-demo-store-front
    31df28627ffa        rabbitmq:3.13.2-management-alpine
    

Lokales Testen der Anwendung

Zum Anzeigen Ihrer ausgeführten Anwendung wechseln Sie in einem lokalen Webbrowser zu http://localhost:8080. Die Beispielanwendung wird wie im folgenden Beispiel geladen:

Screenshot: Azure-Storefront-App, die in einem lokalen Browser geöffnet ist

Auf dieser Seite können Sie Produkte anzeigen und ihrem Warenkorb hinzufügen und dann eine Bestellung aufgeben.

Bereinigen von Ressourcen

Da Sie die Funktionsfähigkeit der Anwendung überprüft haben, können Sie die ausgeführten Container beenden und entfernen. Löschen Sie die Containerimages nicht – Sie verwenden sie im nächsten Tutorial.

  • Beenden und entfernen Sie die Containerinstanzen und -ressourcen mithilfe des Befehls docker-compose down.

    docker compose down
    

Nächste Schritte

In diesem Tutorial haben Sie eine Beispielanwendung erstellt, Containerimages für die Anwendung erstellt und dann die Anwendung getestet. Sie haben Folgendes gelernt:

  • Klonen einer Beispielanwendungsquelle von GitHub
  • Erstellen eines Containerimages aus der Beispielanwendungsquelle
  • Testen der Anwendung mit mehreren Containern in einer lokalen Docker-Umgebung

Im nächsten Tutorial erfahren Sie, wie Sie Containerimages in einer ACR-Instanz speichern.