クイック スタート: Azure CLI を使用して Azure Kubernetes Service (AKS) クラスターをデプロイする
Azure Kubernetes Service (AKS) は、クラスターをすばやくデプロイおよび管理することができる、マネージド Kubernetes サービスです。 このクイック スタートでは次の作業を行います。
- Azure CLI を使用して AKS クラスターをデプロイします。
- このクラスターで、Web フロントエンドと Redis インスタンスが含まれているサンプルの複数コンテナー アプリケーションを実行します。
開始する前に
- このクイックスタートは、Kubernetes の基本的な概念を理解していることを前提としています。 詳細については、「Azure Kubernetes Services (AKS) における Kubernetes の中心概念」を参照してください。
- アクティブなサブスクリプションを含む Azure アカウントが必要です。 お持ちでない場合は、無料のアカウントを作成してください。
- Windows Server ノード プールの作成の詳細については、Windows Server コンテナーをサポートする AKS クラスターの作成に関するページを参照してください。
前提条件
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.OperationsManagement と Microsoft.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
は既にインストールされています。
az aks install-cli
コマンドを使用してkubectl
をローカルにインストールします。az aks install-cli
az aks get-credentials
コマンドを使用して、Kubernetes クラスターに接続するようにkubectl
を構成します。このコマンドは、次の操作を実行します。
- 資格情報をダウンロードし、それを使用するように Kubernetes CLI を構成します。
~/.kube/config
(Kubernetes 構成ファイルの既定の場所) を使用します。 Kubernetes 構成ファイルに対して別の場所を指定するには、--file 引数を使用します。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
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 アプリケーションにアクセスするための外部サービス。
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 マニフェスト」を参照してください。
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 の課金を回避するために不要なリソースをクリーンアップします。
az group delete
コマンドを使用して、リソース グループ、コンテナー サービス、すべての関連リソースを削除します。az group delete --name myResourceGroup --yes --no-wait
注意
AKS クラスターは、本クイックスタートの既定の ID オプションであるシステム割り当てマネージド ID を使用して作成されています。 この ID はプラットフォームによって管理されるため、手動で削除する必要はありません。
次の手順
このクイック スタートでは、Kubernetes クラスターをデプロイし、シンプルな複数コンテナー アプリケーションをそこにデプロイしました。
AKS の詳細を参照し、デプロイの例の完全なコードを確認するには、Kubernetes クラスター チュートリアルに進んでください。
このクイック スタートは、紹介を目的としています。 実稼動用に AKS を使用した完全なソリューションを作成するうえでのガイダンスについては、AKS ソリューション ガイダンスに関する記事を参照してください。