ここでは、以下のようにサンプルのアプリケーションをデプロイを行います。
本ワークショップでは、先ほどダウンロードしたソースコードを利用してコンテナイメージをビルドし、そのイメージを利用する Pod を Kuberentes クラスターで実行しています。
コンテナイメージを保存するイメージレジストリについては、Amazon Elastic Container Registry (Amazon ECR) を利用しています。まずは、以下のコマンドで環境変数を設定します。
cd ~/environment/codes/lab3
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --output text --query Account)
PROJECT_NAME="eks-observability"
ECR_URL="${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com"
ECR_IMAGE_PREFIX="${ECR_URL}/${PROJECT_NAME}"
echo -e "AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID}
PROJECT_NAME=${PROJECT_NAME}
ECR_URL=${ECR_URL}
ECR_IMAGE_PREFIX=${ECR_IMAGE_PREFIX}"
続いて、以下のコマンドで ECR プライベートレジストリの認証を行います。Login Succeeded
という文字が出力されれば、認証は正常に行われています。
aws ecr get-login-password --region "${AWS_REGION}" | \
docker login --username AWS --password-stdin "${ECR_URL}"
本ワークショップで利用するサンプル Web アプリケーションは、Frontend
、Product Catalog
、Catalog Detail
の 3 つのアプリケーションで構成されています。以下のコマンドを実行して、それぞれのアプリケーションについて docker build
を実行し、ビルドしたイメージを ECR に登録します。
for app in catalog_detail frontend_node product_catalog; do
aws ecr describe-repositories --repository-name ${PROJECT_NAME}/${app} >/dev/null 2>&1 || aws ecr create-repository --repository-name ${PROJECT_NAME}/${app} >/dev/null
docker build -t "${ECR_IMAGE_PREFIX}"/${app} ./apps/${app}
docker push "${ECR_IMAGE_PREFIX}"/${app}
done
本ワークショップで利用するサンプル Web アプリケーションは Helm チャートでパッケージされています。ここでは、helm install
コマンドを利用してパッケージのインストールを行います。
helm install workshop helm-chart/ \
--set catalog.image.repository="${ECR_IMAGE_PREFIX}"/product_catalog \
--set detail.image.repository="${ECR_IMAGE_PREFIX}"/catalog_detail \
--set frontend.image.repository="${ECR_IMAGE_PREFIX}"/frontend_node
コマンド実行後、kubectl
を利用して作成されたリソースを確認します。
ロードバランサーのセットアップが完了するまで数分かかります。ロードバランサーの URL にアクセスできない場合、しばらく時間をおいてから再度アクセスを試みてください。
kubectl get all -n workshop