Zelfstudie: Een toepassing voorbereiden voor Azure Kubernetes Service (AKS)

In deze zelfstudie bereidt u een toepassing met meerdere containers voor voor gebruik in Kubernetes. U gebruikt bestaande ontwikkelhulpprogramma's zoals Docker Compose om de toepassing lokaal te bouwen en te testen. U leert het volgende:

  • Kloon een voorbeeldtoepassingsbron uit GitHub.
  • Maak een containerafbeelding van de voorbeeldapplicatiebron.
  • Test de toepassing met meerdere containers in een lokale Docker-omgeving.

Als u dit allemaal hebt gedaan, kunt u de volgende toepassing uitvoeren in uw lokale ontwikkelomgeving:

Schermopname met de Azure Store Front-app die lokaal wordt geopend in een lokale webbrowser.

In latere zelfstudies uploadt u de containerafbeelding naar een Azure Container Registry (ACR) en implementeert u deze vervolgens in een AKS-cluster.

Voordat u begint

In deze handleiding wordt ervan uitgegaan dat u een basiskennis hebt van de kernconcepten van Docker, zoals containers, containerimages en docker opdrachten. Zie Aan de slag met Docker voor een uitleg van de basisprincipes van containers.

Voor deze zelfstudie hebt u een lokale Docker-ontwikkelomgeving met Linux-containers nodig. Docker biedt pakketten die Docker configureren op een Mac, Windows of Linux systeem.

Notitie

Azure Cloud Shell bevat niet de Docker-onderdelen die nodig zijn om elke stap in deze zelfstudies te voltooien. Daarom raden wij u aan een volledige Docker-ontwikkelomgeving te gebruiken.


Toepassingscode ophalen

De sample-toepassing die in deze zelfstudie wordt gebruikt, is een eenvoudige store-front-app, waaronder de volgende Kubernetes-implementaties en -services:

Schermopname van Azure Store-voorbeeldarchitectuur.

  • Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
  • Productservice: toont productgegevens.
  • Orderservice: Orders plaatsen.
  • Rabbit MQ: Berichtenwachtrij voor een orderwachtrij.
  1. Maak een map op uw computer en schakel over naar die map in uw terminalsessie, zoals Bash. In dit voorbeeld wordt een map met de naam demorepo gebruikt, maar u kunt elke gewenste naam gebruiken.

    mkdir demorepo
    cd demorepo
    
  2. Gebruik Git om de voorbeeldtoepassing te klonen naar uw ontwikkelomgeving.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  3. Navigeer naar de gekloonde map.

    cd aks-store-demo
    

Docker Compose-bestand controleren

De voorbeeldtoepassing die u in deze zelfstudie maakt, gebruikt het YAML-bestand docker-compose-quickstart YAML-bestand uit de repository die u hebt gekloond.

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

Containerinstallatiekopieën maken en toepassing uitvoeren

U kunt Docker Compose gebruiken om het bouwen van containerinstallatiekopieën en de implementatie van toepassingen met meerdere containers te automatiseren.

Docker

  1. Maak de containerinstallatiekopieën, download de RabbitMQ-installatiekopieën en start de toepassing met behulp van de docker compose opdracht:

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. Bekijk de gemaakte afbeeldingen met behulp van de docker images opdracht.

    docker images
    

    In de volgende ingekorte voorbeelduitvoer ziet u de aangemaakte afbeeldingen:

    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
    ...
    
  3. Bekijk de actieve containers met behulp van de docker ps opdracht.

    docker ps
    

    In de volgende verkorte voorbeelduitvoer ziet u vier actieve containers:

    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
    

Applicatie lokaal testen

Als u de actieve toepassing wilt zien, navigeer naar http://localhost:8080 in een lokale webbrowser. De voorbeeldtoepassing wordt dan geladen, zoals wordt weergegeven in het volgende voorbeeld:

Schermafbeelding met de Azure Store Front-app geopend in een lokale browser.

Op deze pagina kunt u producten bekijken, toevoegen aan uw winkelwagen en vervolgens een bestelling plaatsen.

Resources opschonen

Omdat u de functionaliteit van de toepassing hebt gevalideerd, kunt u de actieve containers stoppen en verwijderen. Verwijder de containerafbeeldingen niet omdat u ze in de volgende tutorial gebruikt.

Stop en verwijder de containerinstanties en -resources met behulp van de docker-compose down opdracht.

docker compose down

Volgende stappen

In deze zelfstudie hebt u een voorbeeldtoepassing gemaakt, containerinstallatiekopieën voor de toepassing gemaakt en vervolgens de toepassing getest. U hebt geleerd hoe u:

  • Kloon een voorbeeldtoepassingsbron uit GitHub.
  • Maak een containerafbeelding van de voorbeeldapplicatiebron.
  • Test de toepassing met meerdere containers in een lokale Docker-omgeving.

In de volgende zelfstudie leert u hoe u containerafbeeldingen opslaat in een ACR.