クイック スタート: コード リポジトリから新しい Azure Kubernetes Service (AKS) 自動クラスターにアプリケーションをデプロイする

適用対象: ✔️ AKS 自動

自動デプロイを使用して、コード リポジトリから新規または既存の AKS 自動クラスターにアプリケーションをビルドしてデプロイします。 自動デプロイにより、コードをビルドしてデプロイするためのGitHub アクション ワークフローを設定するプロセスが簡略化されます。 接続されると、新しくコミットするたびにパイプラインが開始されます。 自動デプロイは 、draft.sh に基づいて構築されます。新しいデプロイ ワークフローを作成するときに、既存の Dockerfile を使用したり、Dockerfile を生成したり、既存の Kubernetes マニフェストを使用したり、Kubernetes マニフェストを生成したりできます。 生成されたマニフェストは、セキュリティと回復性のベスト プラクティスを念頭に置いて作成されます。 AKS Automatic には、5 分以内に 99.9% の適格なポッド準備操作が完了することを保証するポッドの準備 SLA も含まれています。これにより、アプリケーションの信頼性の高い自己復旧インフラストラクチャが保証されます。

このクイック スタートでは、次の方法について学習します。

  • コード リポジトリに接続します。
  • アプリケーションをコンテナー化します。
  • Kubernetes マニフェストを構成します。
  • AKS 自動クラスターを作成します。
  • プル要求を使用してアプリケーションをデプロイします。

開始する前に

  • デプロイするアプリケーションを含むGitHub アカウントを持っている。
  • AKS Automatic はあなたの AKS クラスターでAzure Policy を有効化しますが、よりスムーズな運用のために、サブスクリプションにおいて Microsoft.PolicyInsights リソース プロバイダーを事前登録しておく必要があります。 詳細については、「Azure リソース プロバイダーと種類を参照してください。

Important

AKS 1.36 以降、新しい AKS Automatic クラスターでは、アップストリームの Ingress NGINX の廃止に伴い、既定で アプリケーション ルーティング アドオンを使用したマネージド NGINX イングレス ではなく、アプリケーション ルーティング アドオンを介した Kubernetes Gateway API が有効になります。

既存の自動クラスターは影響を受けませんが、 アプリケーション ルーティング アドオンを使用して Kubernetes Gateway API への移行を開始する必要があります。

制限事項

AKS 自動クラスターには、次の制限事項が適用されます。

  • AKS Automatic は、次のリージョンで一般提供されています: australiaeastaustriaeastbelgiumcentralbrazilsouthcanadacentralcentralindiacentraluschilecentraldenmarkeasteastasiaeastuseastus2francecentralgermanywestcentralindonesiacentralisraelcentralitalynorthjapaneastjapanwestkoreacentralmalaysiawestmexicocentralnewzealandnorthnortheuropenorwayeastpolandcentralsouthafricanorthsouthcentralussoutheastasiaspaincentralswedencentralswitzerlandnorthuaenorthuksouthwesteuropewestus2westus3
    • 新しい AKS 自動クラスターでは、既定でマネージド システム ノード プールと LocalDNS が有効になります。 どのリージョンでも、マネージド システム ノード プールなしで AKS 自動クラスターを作成することはできません。
  • AKS 自動クラスターには、node リソース グループのロックダウンが事前に構成されています。これにより、MC_ リソース グループへの変更が許可されないため、既定のプライベート DNS ゾーンでの仮想ネットワーク リンクが防止されます。 クロス VNet またはカスタム DNS シナリオの場合は、カスタム仮想ネットワークにプライベート Azure Kubernetes Service (AKS)自動クラスターを作成>に従って、カスタム ネットワークとプライベート DNS を使用します。
  • Azure CLIバージョン 2.86.0 以降が必要です。 バージョンを見つけるには、 az --version コマンドを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。
  • 次の拡張機能はサポートされていません。
  • Windows ノードはサポートされていません。
  • AKS ベース SKU から自動 SKU への移行はサポートされていません。
  • マネージド システム ノード プールのない AKS 自動クラスターと、マネージド システム ノード プールを持つ AKS 自動クラスター間の移行はサポートされていません。

アプリケーションのソース コードを取り込む

コード リポジトリからアプリケーションをデプロイするには、Azure ポータル のホーム ページから開始します。

Kubernetes サービスの [作成] メニューの [Deploy application]\(アプリケーションのデプロイ\) を示すスクリーンショット。

  1. 上部の検索バーで Kubernetes サービス を検索します。
  2. 検索結果で Kubernetes services を選択します。
  3. [ 作成 ] ボタンを選択し、[ アプリケーションのデプロイ] を選択します。

ソース コード リポジトリに接続する

デプロイ ワークフローを作成して自動化し、目的のソース コード リポジトリに接続することを承認します。

  1. [ 基本 ] タブで、[ アプリケーションのデプロイ] を選択します。
  2. [Project詳細で、SubscriptionResource Group、および Region を選択します。
  3. Repository の詳細で、ワークフローの名前を入力し、アクセスの認証を選択して、目的のGitHub リポジトリに接続します。
  4. リポジトリとブランチを選択します
  5. [次へ] ボタンを選択します。

コンテナー イメージの構成を選択する

Kubernetes 用のアプリケーションを準備するには、アプリケーションをコンテナー イメージにビルドし、コンテナー レジストリに格納する必要があります。 Dockerfile を使用して、コンテナー イメージをビルドする方法について説明します。 ソース コード リポジトリに Dockerfile がまだない場合は、自動デプロイで生成できます。それ以外の場合は、既存の Dockerfile を利用できます。

自動デプロイを使用して、Go、C#、Node.js、Python、Java、Gradle、Clojure、PHP、Ruby、Erlang、Swift、Rust などの多くの言語とフレームワーク用の Dockerfile を生成します。 言語サポートは、draft.sh で利用できる内容に基づいて構築 されています

  1. コンテナー構成の自動コンテナー化 (Dockerfile の生成) を選択します。
  2. 生成された Dockerfile をリポジトリに保存する場所を選択します。
  3. サポートされている言語とフレームワークの一覧から アプリケーション環境 を選択します。
  4. アプリケーション ポートを入力します。
  5. 既存のAzure Container Registryを選択するか、新しく作成します。 このレジストリは、ビルドされたアプリケーション イメージを格納するために使用されます。 AKS 自動クラスターの kubelet ID には、そのレジストリ AcrPull アクセス許可が付与されます。

Kubernetes マニフェスト構成を選択する

Kubernetes で実行されているアプリケーションは、多くの Kubernetes プリミティブ コンポーネントで構成されます。 これらのコンポーネントは、使用するコンテナー イメージ、実行するレプリカの数、アプリケーションを公開するために必要なパブリック IP がある場合などについて説明します。詳細については、 Kubernetes の公式ドキュメントを参照してください。 ソース コード リポジトリにデプロイする基本的な Kubernetes マニフェストがまだない場合は、自動デプロイで生成できます。それ以外の場合は、既存のマニフェストのセットを利用できます。 既存の Helm グラフを選択することもできます。

自動デプロイを使用して一連の基本的な Kubernetes マニフェスト ファイルを生成し、アプリケーションを稼働させます。 現時点では、自動デプロイでは、 DeploymentService、および ConfigMapが作成されます。

生成されたマニフェストは、 次のような配置セーフガードの推奨事項を適用するように設計されています。

Kubernetes マニフェストを生成するには:

  1. 展開オプションの [ アプリケーション展開ファイルの生成 ] を選択します。
  2. アプリケーション ポートを入力します。 このポートは、生成された Serviceで使用されます。
  3. 生成された Kubernetes マニフェストをリポジトリに保存する場所を選択します。
  4. [次へ] ボタンを選択します。

アプリケーションをデプロイする場所を選択する

クラスターがまだない場合は、このデプロイの一部として新しい AKS 自動クラスターを作成できます。

  1. クラスター構成の [自動 Kubernetes クラスターの作成 ] を選択します。
  2. クラスター名を入力します。
  3. 自動アップグレードメンテナンススケジュールを選択するか、デフォルトを選択したままにします。
  4. アプリケーションがデプロイされている Kubernetes 名前空間 を入力します。
  5. 監視とログ記録のレベルを選択するか、既定値を選択したままにします。
  6. [次へ] ボタンを選択します。

構成を確認してデプロイする

クラスター、アプリケーション、および Kubernetes マニフェストの構成を確認し、[配置] を選択 します。 クラスターの作成には数分かかります。デプロイ ページから移動しないでください。

アプリケーションのデプロイを示すスクリーンショット。

  1. 新しい AKS 自動クラスターが作成されるか、既存のクラスターが構成されます。
  2. コンテナー レジストリが作成されるか、既存のレジストリがクラスターで構成されます。
  3. フェデレーション資格情報が作成され、GitHub アクション ワークフローをクラスターにデプロイできます。
  4. プル要求は、生成されたファイルとワークフローを含むコード リポジトリに作成されます。

プルリクエストを確認してマージする

デプロイが成功したら、[ プル要求の表示 ] ボタンを選択して、コード リポジトリで生成されたプル要求の詳細を表示します。

GitHub の pull request のスクリーンショット。

  1. [変更されたファイル] で 変更を確認 し、必要な編集を行います。
  2. 変更をコード リポジトリにマージするには、[ プル要求 のマージ] を選択します。

変更をマージすると、アプリケーションをコンテナー イメージにビルドし、Azure Container Registryに格納してクラスターにデプロイするGitHub Actions ワークフローが実行されます。

進行中GitHub Actionsワークフローを示すスクリーンショット。

デプロイされたリソースを確認する

パイプラインが完了したら、作成された Kubernetes Service を Azure ポータルで確認できます。「Kubernetes リソース」サービス メニューの下の「Services and ingresses」を選択してください。

[サービスとイングレス] ウィンドウのスクリーンショット。

外部 IP を選択すると、実行中のアプリケーションを含む新しいブラウザー ページが開きます。

Contoso Air アプリケーションが実行されていることを示すスクリーンショット。

リソースを削除する

クラスターの使用が完了したら、クラスターを削除して、Azure料金が発生しないようにすることができます。

  1. Azure ポータルで、リソース グループに移動します。
  2. [リソース グループの削除] を選択します。
  3. リソース グループの名前を入力して削除を確認し、[ 削除] を選択します。
  4. [ 削除の確認 ] ダイアログ ボックスで、[削除] を選択 します

次のステップ

このクイック スタートでは、 AKS Automatic を使用して Kubernetes クラスターにアプリケーションをデプロイし、コード リポジトリから継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインを設定しました。

AKS Automatic の詳細については、概要に進んでください。

Azure Kubernetes Service (AKS) 自動化の概要