チュートリアル: Azure Kubernetes Service (AKS) 用のアプリケーションの準備

7 つのパートのうちの 1 番目であるこのチュートリアルでは、複数コンテナー アプリケーションを Kubernetes で使用する準備をします。 Docker Compose などの既存の開発ツールを使用して、アプリケーションをローカルでビルドしてテストします。 学習内容は次のとおりです。

  • GitHub からサンプル アプリケーション ソースを複製する
  • サンプル アプリケーション ソースからコンテナー イメージを作成する
  • ローカル Docker 環境で複数コンテナー アプリケーションをテストする

完了後、次のアプリケーションがローカル開発環境で実行されます。

ローカル Web ブラウザーで開かれた、ローカルで実行されている Azure 投票アプリのコンテナー イメージを示すスクリーンショット

後続のチュートリアルでは、コンテナー イメージを Azure Container Registry (ACR) にアップロードしてから、AKS クラスターにデプロイします。

開始する前に

このチュートリアルの前提として、コンテナー、コンテナー イメージ、docker コマンドなど、Docker のコア概念を基本的に理解している必要があります。 Docker の入門に関するドキュメントでコンテナーの基礎についての入門情報を参照してください。

このチュートリアルを完了するには、Linux コンテナーを実行するローカルの Docker 開発環境が必要です。 Docker では、MacWindows、または Linux システム上に Docker を構成するパッケージが提供されています。

Note

Azure Cloud Shell には、これらのチュートリアルのすべてのステップを完了するために必要な Docker コンポーネントが含まれているわけではありません。 そのため、完全な Docker 開発環境の使用をお勧めします。

アプリケーションのコードを入手する

このチュートリアルで使用するサンプル アプリケーションは、フロントエンド Web コンポーネントとバックエンド Redis インスタンスで構成される基本的な投票アプリです。 Web コンポーネントは、カスタム コンテナー イメージにパッケージ化されています。 Redis インスタンスでは、Docker Hub から変更されていないイメージを使用します。

サンプル アプリケーションを開発環境に複製するには、git を使用します。

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

クローンされたディレクトリに移動します。

cd azure-voting-app-redis

このディレクトリには、アプリケーションのソース コード、作成済みの Docker 構成ファイル、Kubernetes マニフェスト ファイルが含まれています。 これらのファイルは、チュートリアル セット全体で使用されます。 ディレクトリの内容と構造は次のとおりです。

azure-voting-app-redis
│   azure-vote-all-in-one-redis.yaml
│   docker-compose.yaml
│   LICENSE
│   README.md
│
├───azure-vote
│   │   app_init.supervisord.conf
│   │   Dockerfile
│   │   Dockerfile-for-app-service
│   │   sshd_config
│   │
│   └───azure-vote
│       │   config_file.cfg
│       │   main.py
│       │
│       ├───static
│       │       default.css
│       │
│       └───templates
│               index.html
│
└───jenkins-tutorial
        config-jenkins.sh
        deploy-jenkins-vm.sh

コンテナー イメージを作成する

Docker Compose は、コンテナー イメージのビルドと複数コンテナー アプリケーションのデプロイとを自動化するために使用することができます。

次のコマンドは、サンプルの docker-compose.yaml ファイルを使用してコンテナー イメージを作成し、Redis イメージをダウンロードして、アプリケーションを起動します。

docker-compose up -d

完了したら、docker images コマンドを使って作成されたイメージを確認します。 3 つのイメージがダウンロードまたは作成されます。 azure-vote-front イメージにはフロントエンド アプリケーションが含まれており、ベースとして nginx-flask イメージが使用されます。 redis イメージは、Redis インスタンスを起動するために使用されます。

$ docker images

REPOSITORY                                     TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/azuredocs/azure-vote-front   v1                  84b41c268ad9        9 seconds ago       944MB
mcr.microsoft.com/oss/bitnami/redis            6.0.8               3a54a920bb6c        2 days ago          103MB
tiangolo/uwsgi-nginx-flask                     python3.6           a16ce562e863        6 weeks ago         944MB

docker ps コマンドを実行して、実行中のコンテナーを確認します。

$ docker ps

CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                           NAMES
d10e5244f237        mcr.microsoft.com/azuredocs/azure-vote-front:v1   "/entrypoint.sh /sta…"   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8080->80/tcp   azure-vote-front
21574cb38c1f        mcr.microsoft.com/oss/bitnami/redis:6.0.8         "/opt/bitnami/script…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp          azure-vote-back

ローカルでアプリケーションをテストする

実行中のアプリケーションを表示するには、ローカルの Web ブラウザーで http://localhost:8080 に移動します。 次の例で示すように、サンプル アプリケーションが読み込まれます。

ローカル Web ブラウザーで開かれた、ローカルで実行されている Azure 投票アプリのコンテナー イメージを示すスクリーンショット

リソースをクリーンアップする

アプリケーションの機能を検証したので、実行中のコンテナーを停止して削除できます。 コンテナー イメージを削除しないでください。次のチュートリアルで、azure-vote-front イメージを ACR インスタンスにアップロードします。

コンテナー インスタンスとリソースを停止して削除するには、docker-compose down コマンドを使用します。

docker-compose down

ローカル アプリケーションが削除されると、次のチュートリアルで使用する Azure Vote アプリケーション azure-vote-front を含む Docker イメージが作成されます。

次のステップ

このチュートリアルでは、サンプル アプリケーションを作成し、アプリケーションのコンテナー イメージを作成してから、アプリケーションをテストしました。 以下の方法を学習しました。

  • GitHub からサンプル アプリケーション ソースを複製する
  • サンプル アプリケーション ソースからコンテナー イメージを作成する
  • ローカル Docker 環境で複数コンテナー アプリケーションをテストする

次のチュートリアルでは、コンテナー イメージを ACR に保存する方法について説明します。