次の方法で共有


クイックスタート: Azure Developer CLI を使用して Azure Kubernetes Service (AKS) クラスターをデプロイする

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-Samples/aks-store-demo GitHub リポジトリ」で確認できます。

クイックスタート アプリケーションには、次の Kubernetes デプロイとサービスが含まれています。

Azure Store サンプル アーキテクチャを示す図。

  • ネットショップ: 顧客が製品を見て注文するための Web アプリケーション。
  • 製品サービス: 製品情報が表示されます。
  • 注文サービス: 注文を行います。
  • Rabbit MQ: 注文キューのメッセージ キュー。

運用環境用の永続ストレージを使用せずに Rabbit MQ などのステートフル コンテナーを実行することはお勧めしません。 わかりやすくするためにここではこれらを使用しますが、Azure CosmosDB や Azure Service Bus などのマネージド サービスを使用することをお勧めします。

Azure Developer CLI テンプレートを複製する

  1. パラメーターを含む azd init コマンドを使用する --template リポジトリから AKS ストア デモ テンプレートを複製します。

    azd init --template Azure-Samples/aks-store-demo
    
  2. aks-azdqs-1 のように、英数字とハイフンのみを使用したプロジェクトの環境名を入力します。

    Enter a new environment name: aks-azdqs-1
    

Azure Cloud アカウントにサインインする

azd テンプレートには、サービスを作成するために必要なすべてのコードが含まれていますが、AKS 上でアプリケーションをホストするには、Azure アカウントにサインインする必要があります。

  1. azd auth login コマンドを使用してアカウントにサインインします。

    azd auth login
    
  2. 出力に表示されるデバイス コードをコピーし、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 要求の使用が含まれます。

  3. 組織のサインイン ページで資格情報を使用して認証します。

  4. ご自身が Azure CLI から接続しようとしていることを確認します。

  5. "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 をインストールする必要があります。

  1. ターミナル ウィンドウを開き、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>.
    
  2. azd auth login でサインインしようとした後に受信した Web ページの localhost URL をコピーします。

  3. 新しいターミナル ウィンドウで、次の 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>
    
  4. 現在のターミナルを閉じて、元のターミナルを開きます。 サブスクリプションの JSON リストが表示されます。

  5. 使用するサブスクリプションの id フィールドをコピーします。

  6. az account set コマンドを使用してサブスクリプションを設定します。

    az account set --subscription <subscription_id>
    

クラスターのリソースの作成とデプロイ

azdazd-hooks フォルダー内のすべてのフックを実行し、アプリケーション サービスの事前登録、プロビジョニング、デプロイを行います。

このクイックスタートの azd テンプレートは、AKS クラスターと Azure Key Vault を持つ新しいリソース グループを作成します。 キー コンテナーはクライアント シークレットを格納し、pets 名前空間のサービスを実行します

  1. azd up コマンドを使用して、すべてのアプリケーション リソースを作成します。

    azd up
    
  2. 課金に使用する Azure サブスクリプションを選択します。

    ? Select an Azure Subscription to use:  [Use arrows to move, type to filter]
    > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
    
  3. アプリケーションをデプロイするリージョンを選択します。

    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 を使います。 kubectlazd up 中に既にインストールされています。

  1. pets コマンドを使用して、名前空間をデモ名前空間 kubectl set-context として設定します。

    kubectl config set-context --current --namespace=pets
    
  2. kubectl get pods コマンドを使用して、デプロイされたポッドの状態を確認します。 続行する前に、すべてのポッドを Running の状態にします。

    kubectl get pods
    
  3. ストア フロント アプリケーションのパブリック 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
    
  4. 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
    
  5. Azure Store アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。

    AKS Store サンプル アプリケーションのスクリーンショット。

クラスターを削除する

クイックスタートが完了したら、Azure の課金を避けるために、不要なリソースをクリーンアップしてください。

  1. azd down コマンドを使用し、クイックスタートで作成したリソースをすべて削除します。

    azd down
    
  2. y を入力し、Enter を押すことで、サブスクリプションからすべての使用済みリソースを削除する決定を確認します。

    ? Total resources to delete: 14, are you sure you want to continue? (y/N)
    
  3. 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 クラスターのチュートリアルに進んでください。