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

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

  • Azure CLI を使用して AKS クラスターをデプロイします。

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

  • アプリケーションを実行するクラスターとポッドの正常性を監視します。

    Azure Kubernetes Service にデプロイされた投票アプリ

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

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

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

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。

    新しいウィンドウで Cloud Shell を起動する

  • 必要に応じて、Azure CLI をインストールして、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 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
}

クラスターの監視を有効にする

Microsoft.OperationsManagementMicrosoft.OperationalInsights がサブスクリプションで登録されていることを確認してください。 登録状態を確認するには:

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

AKS クラスターの作成

az aks create コマンドを、Azure Monitor for containers を有効にする --enable-addons monitoring パラメーターと共に使用して、AKS クラスターを作成します。 次の例では、myAKSCluster という名前のクラスターを 1 つのノードで作成します。

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 1 --enable-addons monitoring --generate-ssh-keys

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

注意

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 を使用する場合は、仮想システムまたは物理システムで作業するときと同じように、codevinano のいずれかを使用してこのファイルを作成できます。
  2. 次の 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
    
  3. 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 Kubernetes Service にデプロイされた投票アプリ

Azure Monitor for containers によってキャプチャされたクラスター ノードとポッドの正常性メトリックを Azure portal で確認します。

クラスターを削除する

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

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

注意

クラスターを削除したとき、AKS クラスターで使用される Azure Active Directory サービス プリンシパルは削除されません。 サービス プリンシパルを削除する手順については、AKS のサービス プリンシパルに関する考慮事項と削除に関するページを参照してください。

マネージド ID を使用した場合、ID はプラットフォームによって管理されるので、削除する必要はありません。

コードの入手

このクイック スタートでは、Kubernetes のデプロイを作成するために、既存のコンテナー イメージを使用しました。 関連するアプリケーション コード、Dockerfile、Kubernetes マニフェスト ファイルは、GitHub で入手できます。

次の手順

このクイック スタートでは、Kubernetes クラスターをデプロイし、そこに複数コンテナー アプリケーションをデプロイしました。 AKS クラスターの Kubernetes Web ダッシュボードにアクセスします。

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