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

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

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

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

このクイックスタートは、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、「Azure Kubernetes Services (AKS) における Kubernetes の中心概念」を参照してください。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。

Windows Server ノード プールの作成の詳細については、Windows Server コンテナーをサポートする AKS クラスターの作成に関するページを参照してください。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、Azure Cloud Shell の Bash のクイックスタートに関するページを参照してください。 新しいウィンドウで Cloud Shell を起動する

  • 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 プロバイダーがサブスクリプションで登録されていることを確認してください。 これらは、Container Insights をサポートするために必要な Azure リソース プロバイダーです。 登録の状態を確認するには、次のコマンドを実行します。

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

    登録されていない場合は、次のコマンドを使用して、Microsoft.OperationsManagementMicrosoft.OperationalInsights を登録します。

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

Note

このクイックスタートのコマンドを、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 クラスターの作成

az aks create コマンドに--enable-addons monitoringパラメーターと--enable-msi-auth-for-monitoringパラメーターを指定して、AKS クラスターを作成し、マネージド ID 認証 (プレビュー) を使用して Azure Monitor コンテナーの分析情報を有効にします。 次の例では、1 つのノードが含まれた myAKSCluster という名前のクラスターを作成し、システム割り当てマネージド ID を有効にします。

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 形式で返されます。

Note

AKS クラスターを作成すると、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
    

    次の出力例は、前の手順で作成した単一ノードを示しています。 ノードの状態が "準備完了" であることを確認します。

    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 という名前のファイルを作成し、そこに次のマニフェストをコピーします。

    • Azure Cloud Shell を使用する場合は、仮想または物理システムで作業するときと同じように、codevi、または nano を使用してこのファイルを作成できます。
    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 サービスによってアプリケーション フロントエンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。

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

EXTERNAL-IP アドレスが保留中から実際のパブリック IP アドレスに変わったら、CTRL-C を使用して kubectl ウォッチ プロセスを停止します。 次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。

azure-vote-front   LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Azure Vote アプリが動作していることを確認するには、Web ブラウザーを開いてサービスの外部 IP アドレスにアクセスします。

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

クラスターを削除する

Azure の課金を回避するために、この後のチュートリアルを実行しない場合は、不要なリソースをクリーンアップしてください。 az group delete コマンドを使用して、リソース グループ、コンテナー サービス、およびすべての関連リソースを削除します。

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

Note

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

次の手順

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

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

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