AKS にコンテナ アプリを ACR Build でデプロイ

事前構築の AKS と ACR に対して、Python (Flask) アプリをコンテナ化して `az acr build` でクラウドビルド → AKS にデプロイ → LoadBalancer Service で外部公開します。

中級60Azure 実環境

ラボ概要

このラボでは、Kubernetes プラットフォーム上にマイクロサービスを展開する開発者の想定で、シンプルな Python Web アプリのコンテナ化から外部公開までの一貫した DevOps フローを体験します。Docker デーモン不要の az acr build(ACR Tasks)を使ってクラウド側でコンテナをビルドし、AKS の Managed Identity を通じて ACR からプル、Kubernetes の Deployment + LoadBalancer Service で Public IP 経由のエンドポイントを構築します。

学習目標:

  • Cloud Shell で Python (Flask) アプリと Dockerfile および Kubernetes Manifest をヒアドキュメントで作成する
  • az acr build を使ってクラウド側で Docker イメージをビルドし、ACR にプッシュする(ローカル Docker 不要)
  • az aks get-credentials で AKS の kubeconfig を Cloud Shell にマージする
  • Kubernetes Deployment Manifest(Pod replicas + container image)を kubectl apply で適用する
  • Kubernetes Service Manifest(LoadBalancer SKU)を適用して Public IP 経由で外部公開する
  • kubectl rollout status で Deployment 進捗を、kubectl get service で Public IP 取得を確認する
  • ブラウザで HTTP 応答(Hello from AKS!)を取得して動作検証する
前提知識:
  • Container と Docker の基本概念
  • Kubernetes の Pod / Deployment / Service の概念
  • Cloud Shell および bash の基本コマンド
  • YAML の文法
完了条件:
  • ACR に myapp:latest のコンテナ イメージがプッシュされていること
  • AKS クラスタに myapp-deployment の Deployment が 3 replicas で稼働していること
  • AKS クラスタに myapp-service の LoadBalancer Service が Public IP を割り当てられて稼働していること
  • ブラウザまたは curl で Public IP に HTTP アクセスして Hello from AKS! を取得できること

ラボの構成

  1. 1Cloud Shell とラボ環境を準備する
  2. 2環境変数を設定する
  3. 3作業ディレクトリを作成して Python アプリを生成する
  4. 4Dockerfile を生成する
  5. 5ACR でコンテナ イメージをクラウド ビルド & プッシュする
  6. 6ACR にイメージがプッシュされたことを確認する
  7. 7AKS の kubeconfig を Cloud Shell にマージする
  8. 8Kubernetes Deployment Manifest を生成する
  9. 9Deployment を AKS に適用する
  10. 10Kubernetes Service Manifest を生成する
  11. 11Service を AKS に適用する
  12. 12アプリにブラウザまたは curl でアクセスして検証する
  13. 13デプロイ詳細を確認する
  14. 14結果を考察する

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

構成図

構成図

参考リソース