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

Azure Kubernetes Service (AKS) は、クラスターをすばやくデプロイおよび管理することができる、マネージド Kubernetes サービスです。 このクイック スタートでは次の作業を行います。

  • Azure CLI を使用して AKS クラスターをデプロイします。
  • このクラスターで、Web フロントエンドと Redis インスタンスが含まれているサンプルの複数コンテナー アプリケーションを実行します。

Azure Vote サンプル アプリケーションにブラウザーでアクセスしている画面のスクリーンショット。

開始する前に

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。

  • CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。

    • ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。

    • 初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

  • この記事では、Azure CLI バージョン 2.0.64 以降が必要です。 Azure Cloud Shell を使用している場合は、最新バージョンが既にインストールされています。

  • クラスターの作成に使用する ID に、適切な最小限のアクセス許可が付与されていることを確認してください。 AKS のアクセスと ID の詳細については、「Azure Kubernetes Service (AKS) でのアクセスと ID オプション」を参照してください。

  • 複数の Azure サブスクリプションをお持ちの場合は、az account コマンドを使用して、リソースを課金する適切なサブスクリプション ID を選択してください。

  • Microsoft.OperationsManagementMicrosoft.OperationalInsights プロバイダーがサブスクリプションで登録されていることを確認してください。 これらの Azure リソース プロバイダーは、Container Insights をサポートするために必要です。 登録の状態を確認するには、次のコマンドを使用します。

    az provider show -n Microsoft.OperationsManagement -o table
    az provider show -n Microsoft.OperationalInsights -o table
    

    登録されていない場合は、次のコマンドを使って登録できます。

    az provider register --namespace Microsoft.OperationsManagement
    az provider register --namespace Microsoft.OperationalInsights
    

注意

コマンドを Azure Cloud Shell ではなくローカルで実行する場合は、必ず管理者特権でコマンドを実行するようにしてください。

リソース グループを作成する

Azure リソース グループは、Azure リソースが展開され管理される論理グループです。 リソース グループを作成する際は、場所の指定を求めるプロンプトが表示されます。 この場所は、リソース グループのメタデータが格納される場所です。また、リソースの作成時に別のリージョンを指定しない場合は、Azure でリソースが実行される場所でもあります。

次の例では、myResourceGroup という名前のリソース グループを eastus に作成します。

  • az group create コマンドを使用して、リソース グループを作成します。

    az group create --name myResourceGroup --location eastus
    

    リソース グループが正常に作成された場合の出力の例は、次のようになります。

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    

AKS クラスターを作成する

次の例では、1 つのノードが含まれた myAKSCluster という名前のクラスターを作成し、システム割り当てマネージド ID を有効にします。

  • az aks create コマンドに --enable-addons monitoring パラメーターと --enable-msi-auth-for-monitoring パラメーターを指定して AKS クラスターを作成し、マネージド ID 認証 (プレビュー) を使用して Azure Monitor コンテナーの分析情報を有効にします。

    az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --enable-addons monitoring --enable-msi-auth-for-monitoring  --generate-ssh-keys
    

    数分後、コマンドが完了し、クラスターに関する情報が JSON 形式で返されます。

    注意

    新しいクラスターを作成すると、AKS リソースを保存するための 2 つ目のリソース グループが自動的に作成されます。 詳細については、「AKS と一緒にリソース グループが 2 つ作成されるのはなぜでしょうか?」を参照してください。

クラスターに接続する

Kubernetes クラスターを管理するには、Kubernetes のコマンドライン クライアントである kubectl を使います。 Azure Cloud Shell を使用している場合、kubectl は既にインストールされています。

  1. az aks install-cli コマンドを使用して kubectl をローカルにインストールします。

    az aks install-cli
    
  2. az aks get-credentials コマンドを使用して、Kubernetes クラスターに接続するように kubectl を構成します。

    このコマンドは、次の操作を実行します。

    • 資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
    • ~/.kube/config (Kubernetes 構成ファイルの既定の場所) を使用します。 Kubernetes 構成ファイルに対して別の場所を指定するには、--file 引数を使用します。
    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  3. kubectl get コマンドを使用して、ご利用のクラスターへの接続を確認します。 このコマンドでは、クラスター ノードの一覧が返されます。

    kubectl get nodes
    

    次の出力例は、前の手順で作成した単一ノードを示しています。 ノードの状態が [Ready] であることを確認してください。

    NAME                       STATUS   ROLES   AGE     VERSION
    aks-nodepool1-31718369-0   Ready    agent   6m44s   v1.12.8
    

アプリケーションの配置

Kubernetes のマニフェスト ファイルでは、どのコンテナー イメージを実行するかなど、クラスターの望ましい状態を定義します。

このクイックスタートでは、マニフェストを使用して、Azure Vote アプリケーションを実行するために必要なすべてのオブジェクトを作成します。 このマニフェストには、次の 2 つの Kubernetes デプロイが含まれています。

  • サンプルの Azure Vote Python アプリケーション。
  • Redis インスタンス。

また、次の 2 つの Kubernetes サービスも作成されます。

  • Redis インスタンス用の内部サービス。
  • インターネットから Azure Vote アプリケーションにアクセスするための外部サービス。
  1. azure-vote.yaml という名前のファイルを作成し、そこに次のマニフェストをコピーします。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-back
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-back
      template:
        metadata:
          labels:
            app: azure-vote-back
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-back
            image: mcr.microsoft.com/oss/bitnami/redis:6.0.8
            env:
            - name: ALLOW_EMPTY_PASSWORD
              value: "yes"
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 6379
              name: redis
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-back
    spec:
      ports:
      - port: 6379
      selector:
        app: azure-vote-back
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: azure-vote-front
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: azure-vote-front
      template:
        metadata:
          labels:
            app: azure-vote-front
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: azure-vote-front
            image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
            resources:
              requests:
                cpu: 100m
                memory: 128Mi
              limits:
                cpu: 250m
                memory: 256Mi
            ports:
            - containerPort: 80
            env:
            - name: REDIS
              value: "azure-vote-back"
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: azure-vote-front
    spec:
      type: LoadBalancer
      ports:
      - port: 80
      selector:
        app: azure-vote-front
    

    YAML マニフェスト ファイルの内訳については、「デプロイと YAML マニフェスト」を参照してください。

  2. kubectl apply コマンドを使用してアプリケーションをデプロイし、ご利用の YAML マニフェストの名前を指定します。

    kubectl apply -f azure-vote.yaml
    

    デプロイとサービスが正常に作成されたことを示す出力の例は、次のようになります。

    deployment "azure-vote-back" created
    service "azure-vote-back" created
    deployment "azure-vote-front" created
    service "azure-vote-front" created
    

アプリケーションをテストする

アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。

  1. kubectl get service コマンドと --watch 引数を使用して、進行状況を監視します。

    kubectl get service azure-vote-front --watch
    

    azure-vote-front サービスの [EXTERNAL-IP] の出力は、最初は pending と表示されます。

    NAME               TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
    azure-vote-front   LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s
    
  2. EXTERNAL-IP アドレスが保留中から実際のパブリック IP アドレスに変わったら、CTRL-C を使用して kubectl ウォッチ プロセスを停止します。

    次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。

    azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m
    
  3. Azure Vote アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。

    Azure Vote サンプル アプリケーションにブラウザーでアクセスしたスクリーンショット。

クラスターを削除する

この後のチュートリアルを実行しない場合は、Azure の課金を回避するために不要なリソースをクリーンアップします。

  • az group delete コマンドを使用して、リソース グループ、コンテナー サービス、すべての関連リソースを削除します。

    az group delete --name myResourceGroup --yes --no-wait
    

    注意

    AKS クラスターは、本クイックスタートの既定の ID オプションであるシステム割り当てマネージド ID を使用して作成されています。 この ID はプラットフォームによって管理されるため、手動で削除する必要はありません。

次の手順

このクイック スタートでは、Kubernetes クラスターをデプロイし、シンプルな複数コンテナー アプリケーションをそこにデプロイしました。

AKS の詳細を参照し、デプロイの例の完全なコードを確認するには、Kubernetes クラスター チュートリアルに進んでください。

このクイック スタートは、紹介を目的としています。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。