演習 - Azure Kubernetes Service クラスターでアプリケーションをデプロイする

完了

この演習では、会社のバックエンド メッセージング サービスをテスト アプリとして Azure Kubernetes Service (AKS) にデプロイします。 このサービスは、前の演習で作成した Redis PaaS サービスに接続されます。

Note

サービスのコードは、GitHub リポジトリで入手できます。

Redis でリストを作成する

Redis でリストを作成し、いくつかのランダムな要素を設定して、データを受信するキューをシミュレートする必要があります。 キュー内の各項目は、マイクロサービスによって処理される内容を表します。 この演習では、静的な数の項目を追加します。 演習の後半では、マイクロサービスをキュー内の項目の数に合わせてスケーリングします。

  1. コンピューター上で Docker が実行されていることを確認します。

  2. docker run コマンドを使って、Redis コンテナーをローカルに作成し、Azure Cache for Redis に接続します。

    docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
    

    出力は次の出力例のようになります。

    redis-contoso-video.redis.cache.windows.net:6379>
    
  3. リストを作成し、lpush keda コマンドを使ってランダムな要素を設定します。

    lpush keda Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eget interdum felis, ac ultricies nulla. Fusce vehicula mattis laoreet. Quisque facilisis bibendum dui, at scelerisque nulla hendrerit sed. Sed rutrum augue arcu, id maximus felis sollicitudin eget. Curabitur non libero rhoncus, pellentesque orci a, tincidunt sapien. Suspendisse laoreet vulputate sagittis. Vivamus ac magna lacus. Etiam sagittis facilisis dictum. Phasellus faucibus sagittis libero, ac semper lorem commodo in. Quisque tortor lorem, sollicitudin non odio sit amet, finibus molestie eros. Proin aliquam laoreet eros, sed dapibus tortor euismod quis. Maecenas sed viverra sem, at porta sapien. Sed sollicitudin arcu leo, vitae elementum
    
  4. llen keda コマンドを使って、リストの長さを確認します。

    llen keda
    
  5. exit」と入力して、Redis シェルを終了します。

Deployment マニフェストを作成する

アプリケーションをデプロイするには、Deployment マニフェスト ファイルを作成します。 マニフェスト ファイルを使用すると、デプロイするリソースの種類と、ワークロードに関する詳細を定義できます。

Kubernetes によって、インテリジェンスがないポッドという論理構造にコンテナーがグループ化されます。 デプロイにより、欠落しているインテリジェンスが追加されてアプリケーションが作成されます。

  1. Cloud Shell で、touch コマンドを使って、deployment.yaml という Kubernetes の Deployment 用のマニフェスト ファイルを作成します。

    touch deployment.yaml
    
  2. code .」と入力して、Cloud Shell で統合エディターを開きます。

  3. deployment.yaml ファイルを開き、次のマニフェスト コードを貼り付けます。 Redis 環境変数は必ず実際の値に置き換えてください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: contoso-microservice
    spec:
      replicas: 1                   # Tells K8S the number of containers to process the Redis list items
      selector:                     # Define the wrapping strategy
        matchLabels:                # Match all pods with the defined labels
          app: contoso-microservice # Labels follow the `name: value` template
      template:                     # Template of the pod inside the Deployment
        metadata:
          labels:
            app: contoso-microservice
        spec:
          containers:
            - image: mcr.microsoft.com/mslearn/samples/redis-client:latest
              name: contoso-microservice
              resources:
                requests:
                  cpu: 100m
                  memory: 128Mi
                limits:
                  cpu: 100m
                  memory: 128Mi
              env:
                - name: REDIS_HOST
                  value: "redis-contoso-video.redis.cache.windows.net" # *** REPLACE with your value ***
                - name: REDIS_PORT
                  value: "6379"                                        # *** REPLACE with your value ***
                - name: REDIS_LIST
                  value: "keda"                                        # *** REPLACE with your value ***
                - name: REDIS_KEY
                  value: "******************************************"  # *** REPLACE with your value ***
    
  4. マニフェスト ファイルを保存し (Ctrl + S)、エディターを閉じます (Ctrl + Q)。

マニフェストを適用する

  1. kubectl apply コマンドを使って、マニフェストをクラスターにデプロイします。

    kubectl apply -f ./deployment.yaml
    

    出力は次の出力例のようになります。

    deployment.apps/contoso-microservice created
    
  2. kubectl get deployment コマンドを使って、デプロイが成功したことを確認します。

    kubectl get deployment contoso-microservice
    

    出力は次の出力例のようになります。

    NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-microservice   1/1     1            0           16s
    
  3. kubectl get pods コマンドを使って、ポッドが実行されていることを確認します。

    kubectl get pods
    

    出力は次の出力例のようになります。

    NAME                                    READY   STATUS    RESTARTS   AGE
    contoso-microservice-7c58c5f699-r79mv   1/1     Running   0          63s