Azure Kubernetes Service (AKS) は、クラスターをすばやくデプロイおよび管理することができる、マネージド Kubernetes サービスです。 このクイックスタートでは、次の方法について説明します。
- Azure Developer CLI (
azd
) をダウンロードしてインストールします。 - Azure Developer CLI テンプレート (
azd
テンプレート) からアプリケーションを複製します。 - Azure Developer CLI (
azd
) を使用して AKS クラスターをデプロイします。 - 小売アプリをシミュレートするマイクロサービスのグループを使用して、サンプルのマルチコンテナー アプリケーションを実行します。
-
azd
テンプレートから作成されたコンテナーを削除してクリーンアップします。
注
AKS クラスターの迅速なプロビジョニングを開始するため、この記事には、評価のみを目的とした既定の設定でクラスターをデプロイする手順が含まれています。 運用環境に対応したクラスターをデプロイする前に、ベースライン参照アーキテクチャを理解して、ビジネス要件にどの程度合致しているかを検討することをお勧めします。
開始する前に
このクイックスタートは、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、「Azure Kubernetes Services (AKS) における Kubernetes の中心概念」を参照してください。
-
Azure アカウントをお持ちでない場合は、開始する前に無料アカウントを作成してください。
使いやすくするために、Azure Cloud Shell の Bash または PowerShell でこのサンプルを実行します。 詳細については、「Azure Cloud Shell 向けのクイックスタート」を参照してください。
azd
をローカルで使用するには、Azure Developer CLI のバージョン 1.6.1 以降をインストールしてください。-
Azure Cloud Shell を使っている場合は、
azd
の最新バージョンが既にインストールされています。
-
Azure Cloud Shell を使っている場合は、
アプリケーション コードを確認する
アプリケーション コードは、「Azure-Samples/aks-store-demo GitHub リポジトリ」で確認できます。
クイックスタート アプリケーションには、次の Kubernetes デプロイとサービスが含まれています。
- ネットショップ: 顧客が製品を見て注文するための Web アプリケーション。
- 製品サービス: 製品情報が表示されます。
- 注文サービス: 注文を行います。
- Rabbit MQ: 注文キューのメッセージ キュー。
注
運用環境用の永続ストレージを使用せずに Rabbit MQ などのステートフル コンテナーを実行することはお勧めしません。 わかりやすくするためにここではこれらを使用しますが、Azure CosmosDB や Azure Service Bus などのマネージド サービスを使用することをお勧めします。
Azure Developer CLI テンプレートを複製する
パラメーターを含む
azd init
コマンドを使用する--template
リポジトリから AKS ストア デモ テンプレートを複製します。azd init --template Azure-Samples/aks-store-demo
aks-azdqs-1 のように、英数字とハイフンのみを使用したプロジェクトの環境名を入力します。
Enter a new environment name: aks-azdqs-1
Azure Cloud アカウントにサインインする
azd
テンプレートには、サービスを作成するために必要なすべてのコードが含まれていますが、AKS 上でアプリケーションをホストするには、Azure アカウントにサインインする必要があります。
azd auth login
コマンドを使用してアカウントにサインインします。azd auth login
出力に表示されるデバイス コードをコピーし、Enter キーを押してサインインします。
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
重要
ネットワーク外の仮想マシンまたは GitHub コードスペースを使用している場合、一部の Azure セキュリティ ポリシーでは、
azd auth login
でサインインしようとすると競合が発生します。 こちらの問題が発生した場合は、以下で提供される AZD 認証ワークロードに従います。これには、[curl
][az-auth-login] を実行した後にリダイレクトされた localhost URL へのazd auth login
要求の使用が含まれます。組織のサインイン ページで資格情報を使用して認証します。
ご自身が Azure CLI から接続しようとしていることを確認します。
"Device code authentication completed. Logged in to Azure." というメッセージが元のターミナルに表示されることを確認します。
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
AZD 認証の回避策
この回避策では、Azure CLI をインストールする必要があります。
ターミナル ウィンドウを開き、
az login
パラメーターを--scope
に設定してhttps://graph.microsoft.com/.default
コマンドを使用して Azure CLI でログインします。az login --scope https://graph.microsoft.com/.default
次の例に示すように、ブラウザー アクセス トークンを作成するには、新しいタブの認証ページにリダイレクトする必要があります。
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
azd auth login
でサインインしようとした後に受信した Web ページの localhost URL をコピーします。新しいターミナル ウィンドウで、次の
curl
要求を使用してログインします。<localhost>
プレースホルダーは、前の手順でコピーした localhost URL に置き換えます。curl <localhost>
ログインが成功すると、次の例に示すように HTML Web ページが出力されます。
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/"> <title>Login successfully</title> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } code { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; display: inline-block; background-color: rgb(242, 242, 242); padding: 12px 16px; margin: 8px 0px; } </style> </head> <body> <h3>You have logged into Microsoft Azure!</h3> <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p> <h3>Announcements</h3> <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p> <p>You may opt-in to use WAM by running the following commands:</p> <code> az config set core.allow_broker=true<br> az account clear<br> az login </code> </body> </html>
現在のターミナルを閉じて、元のターミナルを開きます。 サブスクリプションの JSON リストが表示されます。
使用するサブスクリプションの
id
フィールドをコピーします。az account set
コマンドを使用してサブスクリプションを設定します。az account set --subscription <subscription_id>
クラスターのリソースの作成とデプロイ
azd
は azd-hooks
フォルダー内のすべてのフックを実行し、アプリケーション サービスの事前登録、プロビジョニング、デプロイを行います。
このクイックスタートの azd
テンプレートは、AKS クラスターと Azure Key Vault を持つ新しいリソース グループを作成します。 キー コンテナーはクライアント シークレットを格納し、pets
名前空間のサービスを実行します
azd up
コマンドを使用して、すべてのアプリケーション リソースを作成します。azd up
課金に使用する Azure サブスクリプションを選択します。
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
アプリケーションをデプロイするリージョンを選択します。
Select an Azure location to use: [Use arrows to move, type to filter] 1. (South America) Brazil Southeast (brazilsoutheast) 2. (US) Central US (centralus) 3. (US) East US (eastus) > 43. (US) East US 2 (eastus2) 4. (US) East US STG (eastusstg) 5. (US) North Central US (northcentralus) 6. (US) South Central US (southcentralus)
azd
は自動的に事前プロビジョニング コマンドと事後プロビジョニング コマンドを実行し、アプリケーションのリソースを作成します。 このプロセスが完了するまでに数分かかることがあります。 完了すると、次の例のような出力が表示されます:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。 Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使います。
kubectl
は azd up
中に既にインストールされています。
pets
コマンドを使用して、名前空間をデモ名前空間kubectl set-context
として設定します。kubectl config set-context --current --namespace=pets
kubectl get pods
コマンドを使用して、デプロイされたポッドの状態を確認します。 続行する前に、すべてのポッドをRunning
の状態にします。kubectl get pods
ストア フロント アプリケーションのパブリック IP アドレスを確認し、
kubectl get service
引数を含む--watch
コマンドを使用した進捗状況を監視します。kubectl get service store-front --watch
サービスの
store-front
の出力は、最初は pending と表示されます。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
EXTERNAL-IP アドレスが保留中から実際のパブリック IP アドレスに変わったら、
CTRL-C
を使用してkubectl
ウォッチ プロセスを停止します。次のサンプル出力は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Azure Store アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。
クラスターを削除する
クイックスタートが完了したら、Azure の課金を避けるために、不要なリソースをクリーンアップしてください。
azd down
コマンドを使用し、クイックスタートで作成したリソースをすべて削除します。azd down
y
を入力し、Enter
を押すことで、サブスクリプションからすべての使用済みリソースを削除する決定を確認します。? Total resources to delete: 14, are you sure you want to continue? (y/N)
y
を入力し、Enter
を押すことで、消去でクイックスタート変数を再利用できるようになります。[Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names may not be reused. In the future, you can use the argument --purge to skip this confirmation. ? Would you like to permanently delete these resources instead, allowing their names to be reused? (y/N)
リソースが削除されると、次の例のような出力が表示されます:
SUCCESS: Your application was removed from Azure in 14 minutes 30 seconds.
注
このサンプル アプリケーションはデモ用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。
次のステップ
このクイック スタートでは、Kubernetes クラスターをデプロイし、シンプルな複数コンテナー アプリケーションをそこにデプロイしました。 このサンプル アプリケーションはデモ専用であり、Kubernetes アプリケーションのすべてのベスト プラクティスを表すわけではありません。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。
AKS の詳細を確認し、完全なコードからデプロイの例までを確認するには、Kubernetes クラスターのチュートリアルに進んでください。
Azure Kubernetes Service