Untuk menggunakan Terraform di lingkungan Google Distributed Cloud (GDC) yang terisolasi, Anda harus mendownload dan mengonfigurasinya untuk menangani resource Kubernetes.
Sebelum memulai
Download Terraform ke workstation Anda dengan mengikuti dokumentasi yang disediakan oleh HashiCorp: https://developer.hashicorp.com/terraform/install.
Pastikan Anda memiliki bucket penyimpanan GDC. Jika Anda tidak memiliki bucket penyimpanan, buat bucket.
Pastikan sistem Anda dapat mengenali sertifikat Certificate Authority (CA) yang digunakan oleh penyimpanan objek.
Mengelola file status
File status di Terraform digunakan untuk mencatat status deployment saat ini dan memetakannya ke konfigurasi Terraform. Karena penyimpanan objek GDC diimplementasikan menggunakan S3, Anda dapat menggunakan Terraform S3 API untuk menyinkronkan dengan file status bersama. Untuk melakukannya, Anda harus mengonfigurasi Terraform agar disinkronkan dengan status jarak jauh:
Tambahkan konfigurasi berikut ke file Terraform yang disimpan secara lokal, seperti file
main.tf:terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" endpoint = "BUCKET_ENDPOINT" region = "ZONE" skip_credentials_validation = true force_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" ... } }Ganti kode berikut:
BUCKET_FQN: nama yang sepenuhnya memenuhi syarat dari resource kustomBucket.TF_STATE_PATH: lokasi file status Terraform yang akan disimpan di bucket penyimpanan.BUCKET_ENDPOINT: endpoint dari resource kustomBucket.ZONE: zona resource kustomBucket.ACCESS_KEY: kunci akses yang diperoleh dari secret yang berisi kredensial akses Anda. Ikuti Mendapatkan kredensial akses bucket untuk mendapatkan kunci akses.SECRET_KEY: kunci rahasia yang diperoleh dari secret yang berisi kredensial akses Anda. Ikuti Mendapatkan kredensial akses bucket untuk mendapatkan kunci rahasia.
Anda harus menetapkan
skip_credentials_validationdanforce_style_pathketruekarena GDC tidak mendukung validasi kredensial dan menggunakan endpoint gaya jalur.Lakukan inisialisasi pengeditan file status baru di bucket penyimpanan yang Anda tentukan pada langkah sebelumnya:
terraform initTerraform mungkin meminta region AWS sebagai input yang diperlukan, tetapi nilai tersebut tidak digunakan karena Anda menggunakan penyimpanan objek GDC. Masukkan region AWS apa pun untuk memenuhi persyaratan.
Menetapkan izin
Selain izin yang diperlukan untuk melakukan tugas tertentu menggunakan Terraform, seperti membuat project GDC, Anda juga harus memiliki izin untuk melihat definisi resource kustom dalam cakupan tersebut. Terapkan izin yang diperlukan untuk menggunakan Terraform:
Buat resource peran cluster
crd-viewer:kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: crd-viewer rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch"] EOFGanti
KUBECONFIGdengan file kubeconfig server API atau cluster yang menghosting resource yang Anda kelola dengan Terraform. Misalnya, sebagian besar resource berjalan di server API Pengelolaan. Untuk workload container, tetapkan file kubeconfig cluster Kubernetes Anda. Pastikan untuk menetapkan server API global jika Anda mengelola resource global.Ikat peran cluster yang ditentukan pada langkah sebelumnya ke pengguna:
kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: crd-viewer-binding subjects: - kind: User name: USER_EMAIL roleRef: kind: ClusterRole name: crd-viewer apiGroup: rbac.authorization.k8s.io EOF
Ulangi langkah-langkah ini untuk setiap server API atau cluster yang ingin Anda tetapkan izin Terraform.
Menginstal dan mengonfigurasi penyedia Terraform
Anda harus menginstal Penyedia Kubernetes untuk menyediakan dan mengelola resource Kubernetes.
Dalam file Terraform di dalam modul Anda, seperti file
main.tf, sisipkan blokrequired_providersberikut:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Lakukan inisialisasi direktori kerja Terraform untuk menginstal penyedia:
terraform init