教程:使用 Ansible 在 Azure 中配置 Azure Kubernetes 服务 (AKS) 群集
重要
运行本文中的示例 playbook 需要 Ansible 2.8(或更高版本)。
可使用 Azure Kubernetes 服务 (AKS) 在 Azure 中轻松地部署托管的 Kubernetes 群集。 AKS 通过将大量管理工作量卸载到 Azure,来降低管理 Kubernetes 所产生的复杂性和操作开销。 作为一个托管 Kubernetes 服务,Azure 可以自动处理运行状况监视和维护等关键任务。 Kubernetes 主节点由 Azure 管理。 用户仅管理和维护代理节点。 作为托管型 Kubernetes 服务,AKS 是免费的 - 只需支付群集中代理节点的费用,不需要支付主节点的费用。
AKS 可配置为使用 Microsoft Entra ID 进行用户身份验证。 配置后,可以使用 Microsoft Entra 身份验证令牌登录到 AKS 群集。 RBAC 可基于用户标识或目录组成员身份。
在本文中,学习如何:
- 创建 AKS 群集
- 配置 AKS 群集
先决条件
- Azure 订阅:如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
- Azure 服务主体:创建服务主体,记下以下值:appId、displayName、密码和租户 。
安装 Ansible - 执行以下任一选项:
- 在 Linux 虚拟机上安装和配置 Ansible
- 配置 Azure Cloud Shell,另外,如果无法访问 Linux 虚拟机,请使用 Ansible 创建虚拟机。
创建托管的 AKS 群集
示例 playbook 会创建资源组,并在资源组中创建 AKS 群集。
将以下 playbook 保存为 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
运行 playbook 之前,请参阅以下说明:
tasks
中的第一部分定义了eastus
位置中名为myResourceGroup
的资源组。tasks
中的第二部分定义了myResourceGroup
资源组中名为myAKSCluster
的 AKS 群集。- 对于
your_ssh_key
占位符,请以单行格式输入你的 RSA 公钥 - 以 "ssh-rsa" 开头(不含引号)。 - 对于
aks_version
占位符,请使用 az aks get-versions 命令。
使用 ansible-playbook 运行 playbook
ansible-playbook azure_create_aks.yml
运行 playbook 会显示如下所示的结果:
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 节点
前一部分中的示例 playbook 定义了两个节点。 可通过修改 agent_pool_profiles
块中的 count
值来调整节点数量。
将以下 playbook 保存为 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
运行 playbook 之前,请参阅以下说明:
- 对于
your_ssh_key
占位符,请以单行格式输入你的 RSA 公钥 - 以 "ssh-rsa" 开头(不含引号)。
使用 ansible-playbook 运行 playbook
ansible-playbook azure_configure_aks.yml
运行 playbook 会显示如下所示的结果:
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 群集
示例 playbook 会删除 AKS 群集。
将以下 playbook 保存为 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 运行 playbook
ansible-playbook azure_delete_aks.yml
运行 playbook 会显示如下所示的结果:
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