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

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

中級約 60 分Azure 実環境

ラボ概要

このラボでは、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結果を考察する

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

手順のプレビュー(最初のステップ)

1. Cloud Shell とラボ環境を準備する

  • Azure Portal にサインインする
  • 「サインインの状態を維持しますか?」と表示されたら いいえ を選択する
  • Cloud Shell(Bash)を起動する
  • ストレージ ダイアログで ストレージ アカウントは不要 を選択 → 適用 をクリック
  • Cloud Shell が起動するまで待つ
  • 事前構築リソースを確認する
  • az group list --query "[0].name" -o tsv(RG 名を控える)
  • az aks list --query "[0].name" -o tsv(AKS クラスタ名を控える)
  • az acr list --query "[0].name" -o tsv(ACR 名を控える)
> 注: ストレージ アカウント不要モードで Cloud Shell を使うと、セッション切断時に作業ファイルが失われます。本ラボは 60 分以内に完了する設計のため問題なし。
残り 13 セクションの手順は、ラボを開始すると画面内に表示されます

構成図

構成図

参考リソース

このラボが対応する試験の模擬問題集

本番形式の問題で理解度を確認できます。各試験とも先頭 15 問は無料です。

AZ-104Azure Administrator練習テスト 2 回・全 160 問AZ-400Azure DevOps Engineer練習テスト 2 回・全 160 問