Tutorial: Mengonfigurasi kluster Azure Kubernetes Service (AKS) di Azure menggunakan Ansible
Penting
Ansible 2.8 (atau yang lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.
Azure Kubernetes Service (AKS) memudahkan penyebaran kluster Kubernetes terkelola di Azure. AKS mengurangi kerumitan dan operasional yang berlebih dalam mengelola Kubernetes dengan mengalihkan sebagian besar tanggung jawab tersebut ke Azure. Sebagai layanan Kubernetes yang dihosting, Azure menangani tugas-tugas penting, seperti pemantauan dan pemeliharaan kesehatan. Master Kubernetes dikelola oleh Azure. Anda hanya mengelola dan memelihara node agen. Sebagai layanan Kubernetes terkelola, AKS gratis - Anda hanya perlu membayar node agen dalam kluster Anda; bukan untuk master.
AKS dapat dikonfigurasi untuk menggunakan ID Microsoft Entra untuk autentikasi pengguna. Setelah dikonfigurasi, Anda menggunakan token autentikasi Microsoft Entra untuk masuk ke kluster AKS. RBAC dapat didasarkan pada identitas pengguna atau keanggotaan grup direktori.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat kluster AKS
- Mengonfigurasi kluster AKS
Prasyarat
- Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.
- Perwakilan layanan Azure: Buat perwakilan layanan, catat nilai-nilai berikut: appId, displayName, kata sandi, dan penyewa.
Instal Ansible: Lakukan salah satu opsi berikut:
- Menginstal dan mengonfigurasi Ansibel pada mesin virtual Linux
- Konfigurasikan Azure Cloud Shell dan - jika Anda tidak memiliki akses ke mesin virtual Linux - buat mesin virtual dengan Ansible.
Membuat kluster AKS terkelola
Playbook sampel membuat grup sumber daya dan kluster AKS dalam grup sumber daya.
Simpan playbook berikut sebagai 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
Sebelum menjalankan playbook, lihat catatan berikut:
- Bagian pertama dalam
tasks
mendefinisikan grup sumber daya yang dinamaimyResourceGroup
di dalam lokasieastus
. - Bagian kedua dalam
tasks
mendefinisikan kluster AKS yang dinamaimyAKSCluster
dalam grup sumber dayamyResourceGroup
. - Untuk tempat penampung
your_ssh_key
, masukkan kunci publik RSA Anda dalam format satu baris - dimulai dengan "ssh-rsa" (tanpa tanda kutip). - Untuk tempat penampung
aks_version
, gunakan perintah az aks get-versions.
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook azure_create_aks.yml
Menjalankan playbook menunjukkan hasil yang mirip dengan output berikut:
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
Menskalakan node AKS
Playbook sampel di bagian sebelumnya mendefinisikan dua node. Anda menyesuaikan jumlah node dengan memodifikasi nilai count
di blok agent_pool_profiles
.
Simpan playbook berikut sebagai 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
Sebelum menjalankan playbook, lihat catatan berikut:
- Untuk tempat penampung
your_ssh_key
, masukkan kunci publik RSA Anda dalam format satu baris - dimulai dengan "ssh-rsa" (tanpa tanda kutip).
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook azure_configure_aks.yml
Menjalankan playbook menunjukkan hasil yang mirip dengan output berikut:
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
Hapus kluster AKS terkelola
Playbook sampel menghapus kluster AKS.
Simpan playbook berikut sebagai 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
Jalankan playbook menggunakan ansible-playbook.
ansible-playbook azure_delete_aks.yml
Menjalankan playbook menunjukkan hasil yang mirip dengan output berikut:
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