ボトルネックの特定、およびアプリケーションの修正が完了しました。
ここでは、修正したアプリケーションを利用するコンテナイメージの作成、および新しいコンテナイメージを利用した Pod のデプロイを行います。
以下のコマンドを実行して、アプリケーションコンテナのイメージを再ビルドします。
cd ~/environment/codes/lab3
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
コンテナイメージのビルド、および ECR への登録が完了した後、以下のコマンドを実行して Pod の再作成を行います。
kubectl rollout restart deployment -n workshop frontend prodcatalog proddetail
今回のサンプルアプリケーションでは、手順を容易にするために Kubernetes マニフェストファイルのイメージタグに latest を指定しています。実際の運用では、追跡性の観点から latest タグの指定は避けることが推奨されています。
以下のコマンドで取得したロードバランサーの URL からサンプルアプリケーションにアクセスし、いくつかの操作を実行します。応答時間が大幅に短縮されていることが確認できます。
export LB_NAME=$(kubectl get svc frontend -n workshop -o jsonpath="{.status.loadBalancer.ingress[*].hostname}")
echo $LB_NAME
今回のサンプルアプリケーションは、カタログデータをメモリ上に保存しているため、Pod の再作成に伴いカタログデータは初期化されます。