Öğretici - Bir uygulamayı Azure Kubernetes Service (AKS) için hazırlama

Bu öğreticide, Kubernetes'te kullanmak üzere çoklu kapsayıcılı uygulama hazırlarsınız. Uygulamayı yerel olarak derlemek ve test etmek için Docker Compose gibi mevcut geliştirme araçlarını kullanırsınız. Şunları yapmayı öğreneceksiniz:

  • GitHub örnek uygulama kaynağını kopyalayın.
  • Örnek uygulama kaynağından bir kapsayıcı görüntüsü oluşturun.
  • Çok kapsayıcılı uygulamayı yerel bir Docker ortamında test edin.

Tamamlandıktan sonra, aşağıdaki uygulama yerel geliştirme ortamınızda çalışacaktır:

 Yerel bir web tarayıcısında yerel olarak açılan Azure Store Ön Uygulamasını gösteren ekran görüntüsü.

Sonraki öğreticilerde, konteyner görselini bir Azure Container Registry (ACR) yükleyip ardından bir AKS kümesine dağıtacaksınız.

Başlamadan önce

Bu öğreticide kapsayıcılar, kapsayıcı görüntüleri ve docker komutları gibi temel Docker kavramları hakkında bilgi sahibi olduğunuz varsayılmıştır. Kapsayıcı temelleri hakkında bilgi için bkz. Docker ile çalışmaya başlama.

Bu öğreticiyi tamamlamak için Linux kapsayıcılarını çalıştıran yerel bir Docker geliştirme ortamı gerekir. Docker, Docker'ı Mac, Windows veya Linux sisteminde yapılandıran paketler sağlar.

Not

Azure Cloud Shell, bu öğreticilerdeki her adımı tamamlamak için gereken Docker bileşenlerini içermez. Bu yüzden, eksiksiz bir Docker geliştirme ortamı kullanmanızı öneririz.


Uygulama kodunu alma

Bu öğreticide kullanılan sample uygulaması aşağıdaki Kubernetes dağıtımları ve hizmetlerini içeren temel bir mağaza ön uygulamasıdır:

 Azure Store örnek mimarisinin ekran görüntüsü.

  • Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
  • Ürün hizmeti: Ürün bilgilerini gösterir.
  • Sipariş hizmeti: Sipariş verir.
  • Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.
  1. Bilgisayarınızda bir dizin oluşturun ve Bash gibi terminal oturumunuzda bu dizine geçin. Bu örnekte demorepo adlı bir dizin kullanılır, ancak istediğiniz adı kullanabilirsiniz.

    mkdir demorepo
    cd demorepo
    
  2. Örnek uygulamayı geliştirme ortamınıza kopyalamak için git kullanın.

    git clone https://github.com/Azure-Samples/aks-store-demo.git
    
  3. Kopyalanan dizine geçin.

    cd aks-store-demo
    

Docker Compose dosyasını gözden geçirme

Bu öğreticide oluşturduğunuz örnek uygulama, kopyaladığınız repositorydocker-compose-quickstart YAML dosyasını kullanır.

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

Kapsayıcı görüntüleri oluşturma ve uygulamayı çalıştırma

Kapsayıcı görüntüleri oluşturmayı ve çok kapsayıcılı uygulamaların dağıtımını otomatikleştirmek için Docker Compose'u kullanabilirsiniz.

Docker

  1. Kapsayıcı görüntüsünü oluşturun, RabbitMQ görüntüsünü indirin ve komutunu kullanarak docker compose uygulamayı başlatın:

    docker compose -f docker-compose-quickstart.yml up -d
    
  2. komutunu kullanarak docker images oluşturulan görüntüleri görüntüleyin.

    docker images
    

    Aşağıdaki daraltılmış örnek çıktı, oluşturulan görüntüleri gösterir:

    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. docker ps komutunu kullanarak çalışan kapsayıcıları görüntüleyin.

    docker ps
    

    Aşağıdaki özetlenmiş örnek çıktıda dört çalışan kapsayıcı gösterilmektedir.

    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
    

Uygulamayı yerel olarak test etme

Çalışan uygulamanızı görmek için yerel bir web tarayıcısında adresine gidin http://localhost:8080 . Örnek uygulama aşağıdaki örnekte gösterilen şekilde yüklenir:

 Yerel tarayıcıda açılan Azure Mağazası Ön Uygulamasını gösteren ekran görüntüsü.

Bu sayfada, ürünleri görüntüleyebilir, sepetinize ekleyebilir ve ardından bir sipariş vekleyebilirsiniz.

Kaynakları temizleme

Uygulamanın işlevselliğini doğruladığınız için çalışan kapsayıcıları durdurabilir ve kaldırabilirsiniz. Sonraki öğreticide kullanacağınız için kapsayıcı görüntüleri silmeyin.

komutunu kullanarak docker-compose down kapsayıcı örneklerini ve kaynaklarını durdurun ve kaldırın.

docker compose down

Sonraki adımlar

Bu öğreticide örnek bir uygulama oluşturdunuz, uygulama için kapsayıcı görüntüleri oluşturdunuz ve uygulamayı test ettiniz. Şunları öğrendiniz:

  • GitHub örnek uygulama kaynağını kopyalayın.
  • Örnek uygulama kaynağından bir kapsayıcı görüntüsü oluşturun.
  • Çok kapsayıcılı uygulamayı yerel bir Docker ortamında test edin.

Sonraki öğreticide, kapsayıcı görüntülerini bir ACR'de depolamayı öğreneceksiniz.