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.

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 dinamai myResourceGroup di dalam lokasi eastus.
  • Bagian kedua dalam tasks mendefinisikan kluster AKS yang dinamai myAKSCluster dalam grup sumber daya myResourceGroup.
  • 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

Langkah berikutnya