Membuat cluster admin menggunakan Terraform

Gunakan Terraform untuk membuat cluster admin untuk software Google Distributed Cloud hanya untuk VMware jika Anda sudah menggunakan Terraform untuk mengelola resource VMware lokal dan di Google Cloud. Google Cloud Anda juga dapat membuat cluster admin menggunakan gkectl atau Google Cloud konsol.

Sebelum memulai

  • Pastikan Anda telah menyiapkan dan dapat login ke workstation admin seperti yang dijelaskan dalam Membuat workstation admin.

  • Pastikan file kunci JSON untuk akun layanan ada di workstation admin Anda.

  • Tinjau dokumen perencanaan alamat IP . Pastikan Anda memiliki cukup alamat IP untuk tiga node bidang kontrol dan VIP bidang kontrol. Jika Anda berencana membuat cluster pengguna kubeception, Anda harus memiliki cukup alamat IP untuk node bidang kontrol cluster pengguna tersebut.

  • Tinjau ringkasan load balancing dan pertimbangkan kembali keputusan Anda tentang jenis load balancer yang ingin digunakan. Untuk load balancer manual, Anda harus menyiapkan load balancer sebelum membuat cluster admin.

  • Jika Anda menggunakan gkectl untuk membuat cluster admin, tentukan apakah Anda ingin menggunakan registry publik atau pribadi untuk komponen Google Distributed Cloud. Untuk mengetahui informasi tentang cara menggunakan registry Docker pribadi, lihat privateRegistry. Baik Terraform maupun konsol tidak mendukung penggunaan registry Docker pribadi untuk komponen sistem. Google Cloud

  • Tentukan jenis sistem operasi yang ingin Anda jalankan di node cluster admin.

  • Jika organisasi Anda mewajibkan traffic keluar untuk melewati proxy server, pastikan untuk mengizinkan API yang diperlukan dan alamat Artifact Registry.

  • Di versi 1.29 dan yang lebih tinggi, pemeriksaan preflight sisi server diaktifkan secara default. Pemeriksaan preflight sisi server memerlukan aturan firewall tambahan. Di Aturan firewall untuk cluster admin, telusuri "Pemeriksaan preflight" dan pastikan semua aturan firewall yang diperlukan telah dikonfigurasi. Pemeriksaan preflight sisi server dijalankan di cluster bootstrap, bukan secara lokal di workstation admin.

Ringkasan prosedur

Sebelum membuat cluster admin, Anda harus menjalankan perintah gkectl register bootstrap di workstation admin. Perintah ini men-deploy cluster Kubernetes di Docker (kind) di workstation admin. Cluster bootstrap ini menghosting pengontrol Kubernetes yang diperlukan untuk membuat cluster admin. Saat Anda membuat cluster admin, pengontrol di cluster bootstrap akan menyediakan node, menjalankan pemeriksaan preflight, dan mendaftarkan cluster admin ke fleet. Cluster bootstrap akan otomatis dihapus setelah cluster admin berhasil dibuat.

Berikut adalah langkah-langkah umum untuk membuat cluster admin menggunakan Terraform:

  1. Isi file konfigurasi Anda. Gunakan resource google_gkeonprem_vmware_admin_cluster dan contoh berikut untuk membuat file konfigurasi main.tf.

  2. Buat cluster bootstrap. Jalankan gkectl register bootstrap untuk membuat cluster bootstrap. Setelah perintah selesai membuat cluster bootstrap, output akan memberi tahu Anda untuk menyelesaikan konfigurasi cluster admin. Proses akan terus berjalan hingga cluster admin dibuat.

  3. Buat cluster admin. Di jendela terminal lain atau di komputer lain yang memiliki akses ke GKE On-Prem API, jalankan perintah terraform untuk membuat cluster admin baru seperti yang ditentukan dalam file konfigurasi main.tf yang telah selesai.

Mengisi file konfigurasi

Contoh berikut menunjukkan cara membuat cluster admin dengan ketersediaan tinggi (HA) dengan tiga node bidang kontrol dengan MetalLB. Di versi 1.28 dan yang lebih tinggi, cluster admin baru harus memiliki ketersediaan tinggi. Karena persyaratan ini, Anda harus menetapkan control_plane_node.replicas ke 3.

Untuk mengetahui informasi selengkapnya dan contoh lainnya, lihat google_gkeonprem_vmware_admin_cluster dokumentasi referensi. Untuk mengetahui informasi tentang cara menggunakan registry pribadi untuk image sistem, lihat Mengonfigurasi registry container pribadi.

Isi variabel placeholder dalam contoh berikut, lalu salin dan tempel ke main.tf. Jika Anda menggunakan gkeadm untuk membuat workstation admin, buka file konfigurasi workstation admin agar Anda dapat menyalin nilai dari bagian vCenter ke variabel placeholder yang sesuai.

resource "google_gkeonprem_vmware_admin_cluster" "admin-cluster-metallb" {
  provider = google-beta
  name = "ADMIN_CLUSTER_NAME"
  project = "PROJECT_ID"
  location = "REGION"
  description = "DESCRIPTION"
  bootstrap_cluster_membership = "projects/PROJECT_ID/locations/REGION/memberships/bootstrap-ADMIN_CLUSTER_NAME"
  on_prem_version = "VERSION"
  image_type = "IMAGE_TYPE"
  vcenter {
    address = "VCENTER_ADDRESS"
    datacenter = "DATA_CENTER"
    cluster = "VCENTER_CLUSTER"
    resource_pool = "RESOURCE_POOL"
    datastore = "DATASTORE"
    ca_cert_data = "CA_CERT_DATA"
  }
  network_config {
    service_address_cidr_blocks = ["10.96.232.0/24"]
    pod_address_cidr_blocks = ["192.168.0.0/16"]
    vcenter_network = "NETWORK"
    dhcp_ip_config {
      enabled = true
    }
    host_config {
      dns_servers = ["DNS_SERVERS"]
      ntp_servers = ["NTP_SERVERS"]
    }
    ha_control_plane_config {
      control_plane_ip_block {
        gateway = "GATEWAY"
        netmask = "NETMASK"
        ips {
          hostname = "CONTROL_PLANE_HOST_1"
          ip       = "CONTROL_PLANE_NODE_IP_1"
        }
        ips {
          hostname = "CONTROL_PLANE_HOST_2"
          ip       = "CONTROL_PLANE_NODE_IP_2"
        }
        ips {
          hostname = "CONTROL_PLANE_HOST_3"
          ip       = "CONTROL_PLANE_NODE_IP_3"
        }
      }
    }
  }
  control_plane_node {
     cpus = NUM_CPUS
     memory = MEMORY
     replicas = 3
  }
  load_balancer {
    vip_config {
      control_plane_vip = "CONTROL_PLANE_VIP"
    }
    metal_lb_config {
      enabled = true
    }
  }
}

Ganti kode berikut:

  • ADMIN_CLUSTER_NAME: nama untuk cluster admin. Nama memiliki panjang maksimum 20 karakter.

  • PROJECT_ID: Google Cloud Project ID.

  • REGION: region tempat Google Cloud GKE On-Prem API (gkeonprem.googleapis.com), layanan Fleet (gkehub.googleapis.com), dan layanan Connect (gkeconnect.googleapis.com) berjalan. Tentukan us-west1 atau region lain yang didukung.

    Kolom location sesuai dengan flag --location dalam perintah gkectl register bootstrap.

  • DESCRIPTION: deskripsi cluster admin.

  • VERSION: versi Google Distributed Cloud untuk cluster. Pembuatan cluster menggunakan Terraform hanya didukung pada versi 1.28 dan yang lebih tinggi. Versi yang Anda tentukan di sini harus cocok dengan versi paket yang Anda tentukan dalam flag --bundle-path dalam perintah gkectl register bootstrap. Untuk mengetahui daftar versi, lihat Versi Google Distributed Cloud.

  • IMAGE_TYPE: jenis image OS yang akan dijalankan di node cluster admin Anda. Tentukan salah satu dari berikut ini: "ubuntu_containerd", "cos", "ubuntu_cgv2", atau "cos_cgv2".

  • VCENTER_ADDRESS: alamat vCenter Server.

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.credentials.address.

    • Kolom vcenter.address sesuai dengan flag --vcenter-address dalam perintah gkectl register bootstrap.

  • DATA_CENTER: nama pusat data vCenter Anda .

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.datacenter.

    • Kolom vcenter.datacenter sesuai dengan flag --vcenter-datacenter dalam perintah gkectl register bootstrap.

  • VCENTER_CLUSTER: nama cluster vCenter Anda .

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.cluster.

    • Kolom vcenter.cluster sesuai dengan flag --vcenter-cluster dalam perintah gkectl register bootstrap.

  • RESOURCE_POOL: nama atau jalur resource pool vCenter Anda.

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.resourcePool.

    • Kolom vcenter.resource_pool sesuai dengan flag --vcenter-resource-pool dalam perintah gkectl register bootstrap.

  • DATASTORE: nama datastore vCenter Anda . Nilai yang Anda tentukan harus berupa nama, bukan jalur. Jika Anda perlu memasukkan jalur, tambahkan kolom berikut: folder = "FOLDER"

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.datastore.

    • Kolom vcenter.datastore sesuai dengan flag --vcenter-datastore dalam perintah gkectl register bootstrap.

    Jika Anda ingin menggunakan kebijakan penyimpanan VM untuk node cluster, hapus kolom vcenter.datastore dan tambahkan vcenter.storage_policy_name sebagai gantinya. Selain itu, tambahkan flag --vcenter-storage-policy ke perintah gkectl register bootstrap. Anda harus menentukan nilai untuk vcenter.datastore atau vcenter.storage_policy_name, tetapi tidak keduanya.

  • FOLDER: nama folder vCenter tempat VM cluster Anda akan berada. Jika Anda tidak menggunakan folder, hapus kolom ini.

    • File konfigurasi workstation admin: Gunakan nilai dari kolom vCenter.folder.

    • Kolom vcenter.folder sesuai dengan flag --vcenter-folder dalam perintah gkectl register bootstrap.

  • CA_CERT_DATA: sertifikat CA vCenter dalam format PEM, tetapi dengan semua baris baru diganti dengan string \n.

    1. Jalankan perintah berikut untuk mengganti baris baru dengan \n:

      awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCAL
      

      Ganti CA_CERT_PATH_LOCAL dengan jalur ke sertifikat CA root untuk vCenter Server Anda. Jika Anda menggunakan gkeadm untuk membuat workstation admin, Anda dapat menggunakan nilai dari kolom caCertPath dalam file konfigurasi workstation admin, yang merupakan jalur di komputer lokal Anda. gkeadm menyalin file sertifikat CA ke workstation admin Anda. Anda harus menentukan jalur workstation admin dalam flag --vcenter-ca-cert-path dalam perintah gkectl register bootstrap.

    2. Salin output perintah sebelumnya dan tempel ke variabel placeholder CA_CERT_DATA.

  • NETWORK: nama jaringan vCenter Anda .

    • File konfigurasi workstation admin: gunakan nilai dari kolom vCenter.network.

    • Kolom network_config.vcenter_network sesuai dengan flag --vcenter-network dalam perintah gkectl register bootstrap.

  • GATEWAY: alamat IP gateway default untuk subnet yang memiliki node cluster bidang kontrol Anda.

  • NETMASK: netmask untuk subnet yang memiliki node cluster bidang kontrol Anda.

  • DNS_SERVERS: alamat IP server DNS.

  • NTP_SERVERS: alamat IP server waktu (NTP).

  • Masukkan alamat IP dan, secara opsional, nama host untuk tiga node bidang kontrol di bagian control_plane_ip_block.ips. Jika Anda tidak memasukkan nama host, hapus kolom hostname dari konfigurasi.

  • NUM_CPUS : jumlah vCPU untuk setiap node bidang kontrol di cluster admin. Harus minimal 4.

  • MEMORY: jumlah memori mebibyte untuk setiap node bidang kontrol di cluster admin. Harus minimal 8192, tetapi kami merekomendasikan 16384.

  • CONTROL_PLANE_VIP: alamat IP yang telah Anda pilih untuk dikonfigurasi di load balancer untuk server Kubernetes API cluster admin.

Opsional: Mengonfigurasi registry pribadi

Secara default selama pembuatan atau upgrade cluster, Google Distributed Cloud mengambil image sistem dari gcr.io/gke-on-prem-release menggunakan akun layanan akses komponen. Secara opsional, Anda dapat menyediakan server registry container Anda sendiri sehingga image sistem diambil dari server registry pribadi Anda.

Untuk mengonfigurasi registry pribadi, lakukan hal berikut:

  1. Tambahkan hal berikut ke file konfigurasi cluster admin:

    private_registry_config {
      address = "ADDRESS"
      ca_cert = "CA_CERT"
    }
    

    Ganti kode berikut:

    • ADDRESS: alamat IP atau FQDN (Fully Qualified Domain Name) mesin yang menjalankan registry pribadi Anda.

    • CA_CERT: data sertifikat CA kunci publik, tetapi dengan semua baris baru diganti dengan string \n.

    1. Jalankan perintah berikut untuk mengganti baris baru dengan \n:

      awk 'ORS="\\n" {print}' PUBLIC_KEY_PATH
      

      Ganti PUBLIC_KEY_PATH dengan jalur ke kunci publik.

    2. Salin output perintah sebelumnya dan tempel ke variabel placeholder CA_CERT.

  2. Jika jaringan Anda berada di belakang server proxy, tambahkan hal berikut:

    proxy {
      url: "PROXY_SERVER_ADDRESS"
      no_proxy: "BYPASS_LIST"
    }
    

    Ganti kode berikut:

    • PROXY_SERVER_ADDRESS: alamat HTTP server proxy Anda. Sertakan nomor port meskipun sama dengan port default skema.

    • BYPASS_LIST: daftar alamat IP, rentang alamat IP, nama host, dan nama domain yang dipisahkan koma yang tidak boleh melalui server proxy.

    Contoh:

    url: "http://my-proxy.example.local:80"
    no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"
    

    Saat Google Distributed Cloud mengirim permintaan ke salah satu alamat, host, atau domain ini, permintaan akan melewati server proxy dan dikirim langsung ke tujuannya.

Untuk mengetahui informasi selengkapnya tentang cara menggunakan registry pribadi, termasuk perbedaan antara cluster normal dan cluster lanjutan, lihat Mengonfigurasi registry container pribadi.

Memverifikasi file konfigurasi dan rencana

Di direktori tempat main.tf berada, jalankan perintah berikut:

  1. Lakukan inisialisasi Terraform:

    terraform init
    

    Terraform menginstal library yang diperlukan, seperti penyedia Google Cloud . Perbaiki error di maint.tf jika diperlukan.

  2. Buat rencana Terraform:

    terraform plan -out tfplan
    

    Tinjau konfigurasi dan lakukan perubahan jika diperlukan.

Sebelum menerapkan rencana, Anda harus membuat cluster bootstrap terlebih dahulu seperti yang dijelaskan di bagian berikutnya.

Membuat cluster bootstrap

Saat Anda menjalankan perintah gkectl register bootstrap, Anda akan diminta memasukkan nama pengguna dan sandi akun vCenter. Pastikan Anda memiliki kredensial tersebut. Jika Anda menggunakan gkeadm untuk membuat workstation admin, nama pengguna dan sandi akan berada di file credential.yaml.

  1. Login ke workstation admin Anda menggunakan SSH.

  2. Lakukan autentikasi dengan Google Cloud CLI:

    gcloud auth login
    
  3. Jalankan perintah berikut untuk membuat cluster bootstrap. Banyak nilai flag yang sama dengan di kolom main.tf. Namun, perhatikan bahwa perintah ini memerlukan nilai tambahan yang harus Anda tentukan dalam variabel placeholder yang disediakan.

    gkectl register bootstrap \
        --target-cluster-name=ADMIN_CLUSTER_NAME \
        --project-id=PROJECT_ID \
        --location=REGION \
        --vcenter-address=VCENTER_ADDRESS \
        --vcenter-datacenter=DATA_CENTER \
        --vcenter-cluster=VCENTER_CLUSTER \
        --vcenter-resource-pool=RESOURCE_POOL \
        --vcenter-datastore=DATASTORE \
        --vcenter-network=NETWORK \
        --vcenter-ca-cert-path=CA_CERT_PATH \
        --bundle-path=BUNDLE_PATH \
        --component-access-service-account-key-path=COMPONENT_ACCESS_SA_PATH \
        --register-service-account-key-path=CONNECT_REGISTER_SA_PATH \
        --stackdriver-service-account-key-path=LOG_MON_SA_PATH \
        --cloud-audit-logging-service-account-key-path=CLOUD_AUDIT_SA_PATH \
        --admin-kubeconfig-out=KUBECONFIG_NAME
    

    Ganti kode berikut dengan jalur workstation admin:

    • CA_CERT_PATH: jalur ke sertifikat CA root untuk vCenter Server Anda.
    • BUNDLE_PATH: jalur ke file paket. Jika Anda menggunakan gkeadm untuk membuat workstation admin, file paket akan berada di /var/lib/gke/bundles/. Nama file bergantung pada versi Google Distributed Cloud, misalnya, gke-onprem-vsphere-1.31.0-gke.889-full.tgz.
    • COMPONENT_ACCESS_SA_PATH: jalur ke file kunci untuk akun layanan akses komponen.
    • CONNECT_REGISTER_SA_PATH: jalur ke file kunci untuk akun layanan connect-register.
    • LOG_MON_SA_PATH: jalur ke file kunci untuk akun layanan logging-monitoring.
    • CLOUD_AUDIT_SA_PATH: jalur ke akun layanan audit logging. Jika Anda tidak membuat akun layanan audit logging, tentukan jalur ke file kunci untuk akun layanan logging-monitoring.
    • KUBECONFIG_NAME: nama untuk file kubeconfig yang dibuat oleh perintah gkectl register bootstrap. Jika Anda tidak menentukan flag ini, perintah akan membuat file dengan nama kubeconfig di direktori kerja saat ini. Jika ada file yang sudah ada bernama kubeconfig, perintah akan menimpa file tersebut.

    Ubah perintah sesuai kebutuhan untuk flag berikut:

    • Jika Anda menentukan folder di main.tf, tambahkan flag berikut: --vcenter-folder=FOLDER
    • Jika Anda menentukan kebijakan penyimpanan VM di main.tf, hapus --vcenter-datastore dan tambahkan flag berikut: --vcenter-storage-policy-name=STORAGE_POLICY_NAME
    • Jika workstation admin Anda akan berada di jaringan yang berada di belakang server proxy, tambahkan flag berikut:

      • --proxy-url=PROXY_URL
      • --no-proxy=NO_PROXY

      Ganti kode berikut:

      • PROXY_URL: URL server proxy.
      • NO_PROXY: nilai domain dan alamat IP yang dikecualikan dari proxy, dipisahkan dengan koma.

    Jika Anda menambahkan flag, pastikan untuk menambahkan karakter garis miring terbalik kelanjutan command line (\).

  4. Saat diminta, masukkan (atau salin dan tempel) nama pengguna vCenter. Nama pengguna tidak ditampilkan kembali ke layar.

  5. Saat diminta, masukkan (atau salin dan tempel) sandi vCenter. Sandi tidak ditampilkan kembali ke layar.

Perintah ini menjalankan banyak validasi. Setelah gkectl berhasil membuat cluster bootstrap, Anda akan melihat output yang mirip dengan berikut ini, yang dipangkas agar mudah dibaca:

Running workstation validations
- Validation Category: Workstation
    - [SUCCESS] Workstation OS
    - [SUCCESS] Workstation Hardware
    - [SUCCESS] Workstation Package
    - [SUCCESS] Workstation NTP
    - [SUCCESS] Workstation Docker
...
All validation results were SUCCESS.
Unpacking GKE on-prem bundle: /var/lib/gke/bundles/gke-onprem-vsphere-1.31.0-gke.889-full.tgz
...
Successfully created and registered the bootstrap cluster
...
Waiting for preflight checks to run or OnPremAdminCluster to be applied...... -

Proses akan terus berjalan hingga cluster admin dibuat.

Jika Anda keluar dari perintah gkectl register bootstrap sebelum cluster admin dibuat, pembuatan cluster admin akan gagal, dan Anda harus menghapus cluster bootstrap menggunakan perintah berikut:

gkectl delete bootstrap \
    --target-cluster-name=ADMIN_CLUSTER_NAME \
    --project-id=PROJECT_ID \
    --location=REGION \
     --register-service-account-key-path=CONNECT_REGISTER_SA_PATH

Membuat cluster admin

Terapkan rencana Terraform untuk membuat cluster admin:

terraform apply "tfplan"

Pembuatan cluster admin memerlukan waktu sekitar 15 menit atau lebih. Anda dapat melihat cluster di Google Cloud konsol di halaman cluster GKE.

Menghubungkan ke cluster admin

Perintah gkectl register bootstrap membuat file kubeconfig untuk cluster admin di workstation admin Anda. Jika Anda tidak menentukan flag --admin-kubeconfig-out saat menjalankan gkectl register bootstrap, perintah akan membuat file kubeconfig bernama kubeconfig di direktori tempat Anda menjalankan perintah.

Anda harus membatasi akses ke kubeconfig ini karena berisi kredensial autentikasi untuk cluster.

Selain itu, Anda dapat menjalankan perintah kubectl hanya baca melalui gateway connect.

  1. Jalankan perintah berikut di komputer yang memiliki gcloud CLI untuk mendapatkan entri kubeconfig yang dapat mengakses cluster melalui gateway connect.

    gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \
        --project=PROJECT_ID
    

    Outputnya mirip dengan hal berikut ini:

    Starting to build Gateway kubeconfig...
    Current project_id: PROJECT_ID
    A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
    
  2. Sekarang Anda dapat menjalankan perintah kubectl hanya baca melalui gateway connect, seperti berikut:

    kubectl get pods -A
    

    Jika Anda memerlukan hak istimewa administratif penuh ke cluster admin, lihat Menyiapkan gateway connect.