Gunakan Terraform untuk membuat cluster admin untuk Google Distributed Cloud khusus software untuk VMware jika Anda sudah menggunakan Terraform untuk mengelola resource VMware lokal dan Google Cloud . Anda juga dapat membuat cluster admin menggunakan gkectl atau konsolGoogle Cloud .
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 yang tersedia untuk tiga node bidang kontrol dan VIP bidang kontrol. Jika Anda berencana membuat cluster pengguna kubeception, Anda harus memiliki alamat IP yang cukup untuk node bidang kontrol cluster pengguna tersebut.
Tinjau ringkasan load balancing dan tinjau kembali keputusan Anda tentang jenis load balancer yang ingin Anda gunakan. Untuk load balancer manual, Anda harus menyiapkan load balancer sebelum membuat cluster admin.
Jika Anda menggunakan
gkectluntuk 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, lihatprivateRegistry. Terraform maupun konsol Google Cloud tidak mendukung penggunaan registry Docker pribadi untuk komponen sistem.Tentukan jenis sistem operasi yang ingin Anda jalankan di node cluster admin.
Jika organisasi Anda mewajibkan traffic keluar melewati server proxy, 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 perlu 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:
Isi file konfigurasi Anda. Gunakan resource google_gkeonprem_vmware_admin_cluster dan contoh berikut untuk membuat file konfigurasi
main.tf.Membuat cluster
bootstrap. Jalankangkectl register bootstrapuntuk membuat cluster bootstrap. Setelah perintah selesai membuat cluster bootstrap, output akan memberi tahu Anda untuk menyelesaikan konfigurasi cluster admin. Proses ini terus berjalan hingga cluster admin dibuat.Membuat cluster admin. Di jendela terminal lain atau di komputer lain yang memiliki akses ke GKE On-Prem API, jalankan perintah
terraformuntuk membuat cluster admin baru seperti yang ditentukan dalam file konfigurasimain.tfyang telah Anda selesaikan.
Mengisi file konfigurasi Anda
Contoh berikut menunjukkan cara membuat cluster admin 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
dokumentasi referensi google_gkeonprem_vmware_admin_cluster. 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 IDREGION: region Google Cloud tempat GKE On-Prem API (gkeonprem.googleapis.com), layanan Fleet (gkehub.googleapis.com), dan layanan Connect (gkeconnect.googleapis.com) berjalan. Tentukanus-west1atau wilayah lain yang didukung.Kolom
locationsesuai dengan flag--locationdalam perintahgkectl 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 baru. Versi yang Anda tentukan di sini harus cocok dengan versi paket yang Anda tentukan dalam flag--bundle-pathdi perintahgkectl register bootstrap. Untuk mengetahui daftar versi, lihat versi Google Distributed Cloud.IMAGE_TYPE: jenis OS image 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 Server vCenter.File konfigurasi workstation admin: Gunakan nilai dari kolom
vCenter.credentials.address.Kolom
vcenter.addresssesuai dengan flag--vcenter-addressdalam perintahgkectl register bootstrap.
DATA_CENTER: nama pusat data vCenter Anda.File konfigurasi workstation admin: Gunakan nilai dari kolom
vCenter.datacenter.Kolom
vcenter.datacentersesuai dengan flag--vcenter-datacenterdalam perintahgkectl register bootstrap.
VCENTER_CLUSTER: nama cluster vCenter Anda.File konfigurasi workstation admin: Gunakan nilai dari kolom
vCenter.cluster.Kolom
vcenter.clustersesuai dengan flag--vcenter-clusterdalam perintahgkectl register bootstrap.
RESOURCE_POOL: nama atau jalur resource pool vCenter Anda.File konfigurasi workstation admin: Gunakan nilai dari kolom
vCenter.resourcePool.Kolom
vcenter.resource_poolsesuai dengan flag--vcenter-resource-pooldalam perintahgkectl 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.datastoresesuai dengan flag--vcenter-datastoredalam perintahgkectl register bootstrap.
Jika Anda ingin menggunakan kebijakan penyimpanan VM untuk node cluster, hapus kolom
vcenter.datastoredan tambahkanvcenter.storage_policy_name. Selain itu, tambahkan flag--vcenter-storage-policyke perintahgkectl register bootstrap. Anda harus menentukan nilai untukvcenter.datastoreatauvcenter.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.foldersesuai dengan flag--vcenter-folderdalam perintahgkectl register bootstrap.
CA_CERT_DATA: sertifikat CA vCenter dalam format PEM, tetapi dengan semua baris baru diganti dengan string\n.Jalankan perintah berikut untuk mengganti baris baru dengan
\n:awk 'ORS="\\n" {print}' CA_CERT_PATH_LOCALGanti
CA_CERT_PATH_LOCALdengan jalur ke sertifikat CA root untuk vCenter Server Anda. Jika menggunakangkeadmuntuk membuat workstation admin, Anda dapat menggunakan nilai dari kolomcaCertPathdi file konfigurasi workstation admin, yang merupakan jalur di komputer lokal Anda.gkeadmmenyalin file sertifikat CA ke workstation admin Anda. Anda harus menentukan jalur workstation admin di flag--vcenter-ca-cert-pathdalam perintahgkectl register bootstrap.Salin output dari perintah sebelumnya dan tempelkan 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_networksesuai dengan flag--vcenter-networkdalam perintahgkectl 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 kolomhostnamedari konfigurasi.NUM_CPUS: jumlah vCPU untuk setiap node bidang kontrol di cluster admin. Harus minimal 4.MEMORY: jumlah mebibyte memori untuk setiap node bidang kontrol di cluster admin. Harus minimal 8192, tetapi sebaiknya gunakan 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 container registry Anda sendiri sehingga
image sistem ditarik dari server registry pribadi Anda.
Untuk mengonfigurasi registry pribadi, lakukan hal berikut:
Tambahkan kode berikut ke file konfigurasi cluster admin:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }Ganti kode berikut:
ADDRESS: alamat IP atau FQDN (Nama Domain yang Sepenuhnya Memenuhi Syarat) dari mesin yang menjalankan registry pribadi Anda.CA_CERT: data sertifikat CA kunci publik, tetapi dengan semua baris baru diganti dengan string\n.
Jalankan perintah berikut untuk mengganti baris baru dengan
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHGanti
PUBLIC_KEY_PATHdengan jalur ke kunci publik.Salin output dari perintah sebelumnya dan tempelkan ke variabel placeholder
CA_CERT.
Jika jaringan Anda berada di balik 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 melewati 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 tersebut akan mengabaikan server proxy dan dikirim langsung ke tujuan.
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:
Lakukan inisialisasi Terraform:
terraform initTerraform menginstal library yang diperlukan, seperti penyedia Google Cloud . Perbaiki error di
maint.tfjika perlu.Buat rencana Terraform:
terraform plan -out tfplanTinjau konfigurasi dan buat 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, perintah tersebut akan meminta nama pengguna dan sandi akun vCenter. Pastikan Anda memiliki kredensial yang tersedia. Jika Anda menggunakan gkeadm untuk membuat workstation admin, nama pengguna
dan sandi ada dalam file credential.yaml.
Login ke workstation admin Anda menggunakan SSH.
Lakukan autentikasi dengan Google Cloud CLI:
gcloud auth login
Jalankan perintah berikut untuk membuat cluster bootstrap. Banyak nilai flag yang sama dengan nilai 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_NAMEGanti kode berikut dengan jalur workstation admin:
CA_CERT_PATH: jalur ke sertifikat root CA untuk vCenter Server Anda.BUNDLE_PATH: jalur ke file paket. Jika Anda menggunakangkeadmuntuk membuat workstation admin, file paket 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 logging audit. Jika Anda tidak membuat akun layanan logging audit, tentukan jalur ke file kunci untuk akun layanan logging-monitoring.KUBECONFIG_NAME: nama untuk file kubeconfig yang dibuat oleh perintahgkectl register bootstrap. Jika Anda tidak menentukan flag ini, perintah akan membuat file dengan namakubeconfigdi direktori kerja saat ini. Jika ada file bernamakubeconfig, perintah tersebut 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-datastoredan 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 Anda menambahkan karakter garis miring terbalik (\) kelanjutan command line.
Saat diminta, masukkan (atau salin dan tempel) nama pengguna vCenter. Nama pengguna tidak ditampilkan kembali ke layar.
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 dipotong agar lebih 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 ini 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 Terraform plan untuk membuat cluster admin:
terraform apply "tfplan"
Perlu waktu sekitar 15 menit atau lebih untuk membuat cluster admin. Anda dapat melihat cluster di konsol Google Cloud pada 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 tersebut akan membuat file kubeconfig bernama kubeconfig di direktori tempat Anda menjalankan perintah.
Anda perlu membatasi akses ke kubeconfig ini karena berisi kredensial autentikasi untuk cluster.
Selain itu, Anda dapat menjalankan perintah kubectl hanya baca melalui gateway Connect.
Jalankan perintah berikut di komputer yang memiliki gcloud CLI untuk mendapatkan entri
kubeconfigyang dapat mengakses cluster melalui gateway koneksi.gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME \ --project=PROJECT_IDOutputnya 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.Sekarang Anda dapat menjalankan perintah
kubectlhanya baca melalui gateway Connect, seperti berikut:kubectl get pods -AJika Anda memerlukan hak istimewa administratif penuh ke cluster admin, lihat Menyiapkan gateway koneksi.