Mengelola kapasitas node menggunakan Terraform

Halaman ini menjelaskan cara memperluas atau mengurangi kapasitas cluster di solusi VMware di Google Cloud dengan menambahkan node ESXi bare-metal ke, atau menghapus node ESXi bare-metal dari, cluster yang ada menggunakan modul otomatisasi Terraform end-to-end (E2E).

Memperluas kapasitas cluster

Untuk memperluas cluster yang ada dari node X ke node X + N, gunakan ruang kerja dan state file Terraform (terraform.tfstate) yang sama dengan yang Anda gunakan selama deployment awal cluster.

Langkah-langkah berikut menunjukkan cara menambahkan node kelima (vcf-mgmt-sample-node-5) ke cluster pengelolaan empat node (berdasarkan contoh konfigurasi dalam file e2e-terraform/sample_management_cluster.tfvars):

  1. Perbarui file definisi variabel (management_cluster.tfvars): Perbarui variabel konfigurasi dalam file management_cluster.tfvars Anda sebagai berikut:

    • Tetapkan variabel deployment_mode ke "node_addition".
    • Perbarui variabel number_of_nodes dari 4 menjadi 5.
    • Tambahkan "vcf-mgmt-sample-node-5" ke daftar node_names jika Anda secara eksplisit menentukan node_names selama pembuatan cluster. Biarkan daftar node_names kosong jika Anda tidak menentukannya di awal.
    • Tambahkan alamat IPv4 baru ke daftar mgmt_nic_ip_values, vsan_ip_values, vmotion_ip_values, nsx_tep_ip_values, dan additional_dynamic_nics jika Anda secara eksplisit menentukan variabel ini selama pembuatan cluster. Jika Anda mengosongkan daftar ini untuk alokasi otomatis, jangan perbarui daftar tersebut.
    • Perbarui daftar availability_domains (misalnya, [1, 2, 3, 4, 5]) jika Anda secara eksplisit menentukan variabel ini selama pembuatan cluster. Jika Anda membiarkannya kosong, jangan perbarui.
    deployment_mode = "node_addition"
    number_of_nodes = 5
    
    node_names = [
      "vcf-mgmt-sample-node-1",
      "vcf-mgmt-sample-node-2",
      "vcf-mgmt-sample-node-3",
      "vcf-mgmt-sample-node-4",
      "vcf-mgmt-sample-node-5" # New node
    ]
    
    mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.5", "10.200.0.6", "10.200.0.7"]
    vsan_ip_values     = ["10.200.1.3", "10.200.1.4", "10.200.1.5", "10.200.1.6", "10.200.1.7"]
    vmotion_ip_values  = ["10.200.2.3", "10.200.2.4", "10.200.2.5", "10.200.2.6", "10.200.2.7"]
    nsx_tep_ip_values  = ["10.200.3.3", "10.200.3.4", "10.200.3.5", "10.200.3.6", "10.200.3.7"]
    
    additional_dynamic_nics = [
      {
        name            = "additional-nic-1"
        subnet_name     = "vcf-mgmt-sample-additional-subnet-1"
        vlan_id         = 210
        ip_address_type = "reserved_custom"
        ip_values       = ["10.200.4.3", "10.200.4.4", "10.200.4.5", "10.200.4.6", "10.200.4.7"]
      }
    ]
    
    availability_domains = [1, 2, 3, 4, 5]
    
  2. Membuat dan menerapkan rencana eksekusi Terraform:

    terraform plan -var-file='management_cluster.tfvars' -out=tfplan
    terraform apply tfplan
    
  3. Lampirkan node baru ke grup endpoint jaringan (NEG): Ambil dan jalankan perintah gcloud compute network-endpoint-groups update yang dihasilkan dari output Terraform neg_attachment_commands untuk melampirkan instance baru ke NEG pengelolaan dan NSX:

    # View attachment commands from Terraform outputs
    terraform output neg_attachment_commands
    # Run the generated commands to attach the new instance to the Management and NSX NEGs
    gcloud compute network-endpoint-groups update vcf-mgmt-sample-neg \
       --zone='ZONE' \
       --project='PROJECT_ID' \
       --add-endpoint='instance=vcf-mgmt-sample-node-5'
    gcloud compute network-endpoint-groups update vcf-mgmt-sample-nsx-neg \
       --zone='ZONE' \
       --project='PROJECT_ID' \
       --add-endpoint='instance=vcf-mgmt-sample-node-5'
    

    Sebelum menjalankan perintah, ganti variabel berikut:

    • ZONE: Zona Google Cloud tempat cluster berada.
    • PROJECT_ID: ID project Google Cloud target Anda.

Perilaku yang diharapkan

Saat Anda menerapkan konfigurasi node_addition, Terraform akan melakukan operasi non-disruptif berikut:

  • Hanya menyediakan instance ESXi bare-metal baru (vcf-mgmt-sample-node-5) dan mencadangkan alamat IPv4 internal terkait.
  • Menghasilkan output neg_attachment_commands sehingga Anda dapat melampirkan instance baru ke pengelolaan yang ada dan NEG zona NSX.
  • Mendaftarkan data Cloud DNS penerusan (A) dan balik (PTR) untuk node baru.
  • Membiarkan semua node, load balancer, dan konfigurasi jaringan yang sedang berjalan tidak terganggu.

Langkah berikutnya

Setelah Anda memperluas kapasitas cluster, selesaikan langkah-langkah berikut:

  1. Jalankan skrip toolkit (python3 -m vcf_deployer.main --config config.json) seperti yang dijelaskan dalam Menyiapkan node dan men-deploy VCF menggunakan toolkit untuk mereset sandi root ESXi awal di setiap host baru dan menginisialisasi node ESXi baru untuk penambahan cluster. Hapus objek vcf_deployment_config di file config.json.
  2. Aktifkan dan tambahkan node yang telah disiapkan ke cluster VMware Cloud Foundation (VCF) 9.x menggunakan UI atau API VMware.

Mengurangi kapasitas cluster

Untuk mengurangi cluster yang ada dari node X menjadi node X - N, gunakan ruang kerja dan state file Terraform (terraform.tfstate) yang sama dengan yang Anda gunakan selama deployment awal cluster.

Langkah-langkah berikut menunjukkan cara menghapus node ketiga (vcf-mgmt-sample-node-3) dari cluster pengelolaan lima node yang dijelaskan dalam Memperluas kapasitas cluster:

  1. Hapus node dari cluster VCF: Hapus host ESXi target dari cluster VCF 9.x Anda dan hentikan penggunaannya menggunakan VMware SDDC Manager. Untuk mengetahui informasi selengkapnya, lihat Menonaktifkan host dalam dokumentasi VMware Cloud Foundation.

  2. Jika berlaku, nonaktifkan proteksi dari penghapusan pada node: Terraform tidak dapat menghapus instance yang mengaktifkan proteksi dari penghapusan. Jika perlindungan penghapusan tidak diaktifkan pada node yang ingin Anda hapus, lewati langkah ini. Jika tidak, nonaktifkan proteksi dari penghapusan di setiap node yang ingin Anda hapus:

    gcloud compute instances update vcf-mgmt-sample-node-3 \
       --zone='ZONE' \
       --project='PROJECT_ID' \
       --no-deletion-protection
    

    Sebelum menjalankan perintah, ganti variabel berikut:

    • ZONE: Zona Google Cloud tempat cluster berada.
    • PROJECT_ID: ID project Google Cloud target Anda.

    Untuk menonaktifkan proteksi dari penghapusan menggunakan konsol Google Cloud , lihat Menghentikan dan menghapus node.

  3. Perbarui file definisi variabel (management_cluster.tfvars): Perbarui variabel konfigurasi dalam file management_cluster.tfvars Anda sebagai berikut:

    • Tetapkan variabel deployment_mode ke "node_deletion".
    • Perbarui variabel number_of_nodes dari 5 menjadi 4.
    • Tentukan daftar node_names dengan nama node yang tersisa, dan hapus "vcf-mgmt-sample-node-3" dari daftar.
    • Hapus alamat IPv4 node yang dihapus dari daftar mgmt_nic_ip_values, vsan_ip_values, vmotion_ip_values, nsx_tep_ip_values, dan additional_dynamic_nics jika Anda secara eksplisit menentukan variabel ini selama pembuatan cluster.
    • Tentukan daftar availability_domains dengan domain ketersediaan setiap node yang tersisa (misalnya, [1, 2, 4, 5]).

    Dalam mode node_deletion, Anda harus selalu menentukan daftar node_names dan availability_domains secara eksplisit, meskipun Anda tidak menentukannya selama pembuatan cluster atau operasi Terraform sebelumnya pada cluster (misalnya, jika nama node dibuat secara otomatis). Menentukan daftar ini akan memastikan Terraform hanya menghapus node yang diinginkan. Pastikan setiap entri cocok dengan nama dan domain ketersediaan node yang tersisa.

    deployment_mode = "node_deletion"
    number_of_nodes = 4
    
    # Always required in node_deletion mode
    node_names = [
      "vcf-mgmt-sample-node-1",
      "vcf-mgmt-sample-node-2",
      # "vcf-mgmt-sample-node-3" removed
      "vcf-mgmt-sample-node-4",
      "vcf-mgmt-sample-node-5"
    ]
    
    mgmt_nic_ip_values = ["10.200.0.3", "10.200.0.4", "10.200.0.6", "10.200.0.7"]
    vsan_ip_values     = ["10.200.1.3", "10.200.1.4", "10.200.1.6", "10.200.1.7"]
    vmotion_ip_values  = ["10.200.2.3", "10.200.2.4", "10.200.2.6", "10.200.2.7"]
    nsx_tep_ip_values  = ["10.200.3.3", "10.200.3.4", "10.200.3.6", "10.200.3.7"]
    
    additional_dynamic_nics = [
      {
        name            = "additional-nic-1"
        subnet_name     = "vcf-mgmt-sample-additional-subnet-1"
        vlan_id         = 210
        ip_address_type = "reserved_custom"
        ip_values       = ["10.200.4.3", "10.200.4.4", "10.200.4.6", "10.200.4.7"]
      }
    ]
    
    # Always required in node_deletion mode
    availability_domains = [1, 2, 4, 5]
    
  4. Buat dan terapkan rencana eksekusi Terraform: Tinjau output rencana untuk memverifikasi bahwa Terraform hanya menghancurkan resource node yang ingin Anda hapus, lalu terapkan rencana tersebut:

    terraform plan -var-file='management_cluster.tfvars' -out=tfplan
    terraform apply tfplan
    

Perilaku yang diharapkan

Saat Anda menerapkan konfigurasi node_deletion, Terraform akan melakukan operasi berikut:

  • Hanya menghapus instance ESXi bare-metal yang ditargetkan (vcf-mgmt-sample-node-3) dan boot disk-nya.
  • Menghapus instance yang dihapus dari NEG zona pengelolaan dan NSX.
  • Merilis alamat IPv4 internal yang dicadangkan dari node yang dihapus.
  • Menghapus data Cloud DNS penerusan (A) dan balik (PTR) dari node yang dihapus.
  • Membiarkan semua node, load balancer, dan konfigurasi jaringan yang tersisa tidak terganggu.