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
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. Baik Terraform maupun konsol tidak mendukung penggunaan registry Docker pribadi untuk komponen sistem. Google CloudTentukan 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:
Isi file konfigurasi Anda. Gunakan resource google_gkeonprem_vmware_admin_cluster dan contoh berikut untuk membuat file konfigurasi
main.tf.Buat 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 akan terus berjalan hingga cluster admin dibuat.Buat 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 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. Tentukanus-west1atau region 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 tinggi. Versi yang Anda tentukan di sini harus cocok dengan versi paket yang Anda tentukan dalam flag--bundle-pathdalam perintahgkectl 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.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_namesebagai gantinya. 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 Anda menggunakangkeadmuntuk membuat workstation admin, Anda dapat menggunakan nilai dari kolomcaCertPathdalam 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 dalam flag--vcenter-ca-cert-pathdalam perintahgkectl register bootstrap.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_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 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:
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.
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 perintah sebelumnya dan tempel ke variabel placeholder
CA_CERT.
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:
Lakukan inisialisasi Terraform:
terraform initTerraform menginstal library yang diperlukan, seperti penyedia Google Cloud . Perbaiki error di
maint.tfjika diperlukan.Buat rencana Terraform:
terraform plan -out tfplanTinjau 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.
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 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 CA root untuk vCenter Server Anda.BUNDLE_PATH: jalur ke file paket. Jika Anda menggunakangkeadmuntuk 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 perintahgkectl register bootstrap. Jika Anda tidak menentukan flag ini, perintah akan membuat file dengan namakubeconfigdi direktori kerja saat ini. Jika ada file yang sudah ada bernamakubeconfig, 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-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 untuk 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 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.
Jalankan perintah berikut di komputer yang memiliki gcloud CLI untuk mendapatkan entri
kubeconfigyang dapat mengakses cluster melalui gateway connect.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 connect.