チュートリアル: Ansible を使用して Azure 内で Azure Kubernetes Service (AKS) クラスターを構成する
重要
この記事のサンプル プレイブックを実行するには、Ansible 2.8 (以降) が必要です。
Azure Kubernetes Service (AKS) を使用すると、マネージド Kubernetes クラスターを Azure 内に簡単にデプロイできます。 AKS では、責任の多くを Azure にオフロードすることで、Kubernetes の管理の複雑さと運用上のオーバーヘッドを軽減します。 ホストされた Kubernetes サービスとして、Azure は正常性監視やメンテナンスなどの重要なタスクを自動的に処理します。 Kubernetes マスターは、Azure によって管理されます。 ユーザーは、エージェント ノードの管理と保守のみを行います。 マネージド Kubernetes サービスである AKS は無料のため、マスターではなく、クラスター内のエージェント ノードに対してのみ料金を支払います。
AKS は、ユーザー認証に Microsoft Entra ID を使用するように構成できます。 構成後は、Microsoft Entra 認証トークンを使用して AKS クラスターにサインインします。 ユーザーの ID またはディレクトリのグループ メンバーシップに基づく RBAC が可能です。
この記事では、次のことについて説明します。
- AKS クラスターを作成する
- AKS クラスターの構成
前提条件
- Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure サービス プリンシパル: サービス プリンシパルを作成して、appId、displayName、password、および tenant の値をメモします。
Ansible のインストール: 次のいずれかのオプションを実行します。
- Linux 仮想マシンに Ansible をインストールして構成する
- Azure Cloud Shell の構成 - アクセスできる Linux 仮想マシンがない場合は、Ansible で仮想マシンを作成できます。
マネージド AKS クラスターを作成する
このサンプルのプレイブックでは、リソース グループおよびリソース グループ内の AKS クラスターを作成します。
次のプレイブックを azure_create_aks.yml
という名前で保存します。
- name: Create Azure Kubernetes Service
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
location: eastus
aks_name: myAKSCluster
username: azureuser
ssh_key: "your_ssh_key"
client_id: "your_client_id"
client_secret: "your_client_secret"
aks_version: aks_version
tasks:
- name: Create resource group
azure_rm_resourcegroup:
name: "{{ resource_group }}"
location: "{{ location }}"
- name: Create a managed Azure Container Services (AKS) cluster
azure_rm_aks:
name: "{{ aks_name }}"
location: "{{ location }}"
resource_group: "{{ resource_group }}"
dns_prefix: "{{ aks_name }}"
kubernetes_version: "{{aks_version}}"
linux_profile:
admin_username: "{{ username }}"
ssh_key: "{{ ssh_key }}"
service_principal:
client_id: "{{ client_id }}"
client_secret: "{{ client_secret }}"
agent_pool_profiles:
- name: default
count: 2
vm_size: Standard_D2_v2
tags:
Environment: Production
プレイブックを実行する前に、次の注意事項を参照してください。
tasks
内の最初のセクションでは、eastus
の場所にあるmyResourceGroup
という名前のリソース グループが定義されています。tasks
内の 2 番目のセクションでは、myResourceGroup
というリソース グループ内にmyAKSCluster
という名前の AKS クラスターが定義されています。your_ssh_key
プレースホルダーには、"ssh-rsa" (引用符は除く) で始まる実際の RSA 公開キーを 1 行形式で入力してください。aks_version
プレースホルダーに対しては、az aks get-versions コマンドを使用します。
ansible-playbook を使用してプレイブックを実行します
ansible-playbook azure_create_aks.yml
プレイブックを実行すると、次の出力のような結果が表示されます。
PLAY [Create AKS]
TASK [Gathering Facts]
ok: [localhost]
TASK [Create resource group]
changed: [localhost]
TASK [Create an Azure Container Services (AKS) cluster]
changed: [localhost]
PLAY RECAP
localhost : ok=3 changed=2 unreachable=0 failed=0
AKS ノードのスケーリング
前のセクションで示したサンプルのプレイブックでは、2 つのノードが定義されています。 agent_pool_profiles
ブロックの count
の値を変更して、これらのノードの数を調整します。
次のプレイブックを azure_configure_aks.yml
という名前で保存します。
- name: Scale AKS cluster
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
location: eastus
aks_name: myAKSCluster
username: azureuser
ssh_key: "your_ssh_key"
client_id: "your_client_id"
client_secret: "your_client_secret"
tasks:
- name: Scaling an existed AKS cluster
azure_rm_aks:
name: "{{ aks_name }}"
location: "{{ location }}"
resource_group: "{{ resource_group }}"
dns_prefix: "{{ aks_name }}"
linux_profile:
admin_username: "{{ username }}"
ssh_key: "{{ ssh_key }}"
service_principal:
client_id: "{{ client_id }}"
client_secret: "{{ client_secret }}"
agent_pool_profiles:
- name: default
count: 3
vm_size: Standard_D2_v2
プレイブックを実行する前に、次の注意事項を参照してください。
your_ssh_key
プレースホルダーには、"ssh-rsa" (引用符は除く) で始まる実際の RSA 公開キーを 1 行形式で入力してください。
ansible-playbook を使用してプレイブックを実行します
ansible-playbook azure_configure_aks.yml
プレイブックを実行すると、次の出力のような結果が表示されます。
PLAY [Scale AKS cluster]
TASK [Gathering Facts]
ok: [localhost]
TASK [Scaling an existed AKS cluster]
changed: [localhost]
PLAY RECAP
localhost : ok=2 changed=1 unreachable=0 failed=0
マネージド AKS クラスターを削除する
このサンプルのプレイブックでは、AKS クラスターを削除します。
次のプレイブックを azure_delete_aks.yml
という名前で保存します。
- name: Delete a managed Azure Container Services (AKS) cluster
hosts: localhost
connection: local
vars:
resource_group: myResourceGroup
aks_name: myAKSCluster
tasks:
- name:
azure_rm_aks:
name: "{{ aks_name }}"
resource_group: "{{ resource_group }}"
state: absent
ansible-playbook を使用してプレイブックを実行します
ansible-playbook azure_delete_aks.yml
プレイブックを実行すると、次の出力のような結果が表示されます。
PLAY [Delete a managed Azure Container Services (AKS) cluster]
TASK [Gathering Facts]
ok: [localhost]
TASK [azure_rm_aks]
PLAY RECAP
localhost : ok=2 changed=1 unreachable=0 failed=0