Untuk menggunakan Terraform di lingkungan air gap Google Distributed Cloud (GDC), 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.
Verifikasi bahwa Anda memiliki bucket penyimpanan GDC yang ada. Jika Anda belum memiliki bucket penyimpanan, buat bucket penyimpanan.
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" 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
.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 menyetel
skip_credentials_validation
danforce_style_path
ketrue
karena GDC tidak mendukung validasi kredensial dan menggunakan endpoint gaya jalur.Lakukan inisialisasi pengeditan file status baru di bucket penyimpanan yang Anda tentukan di langkah sebelumnya:
terraform init
Terraform 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"] EOF
Ganti
KUBECONFIG
dengan file kubeconfig server atau cluster API yang menghosting resource yang Anda kelola dengan Terraform. Misalnya, sebagian besar resource berjalan di server Management API. Untuk beban kerja 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 kepada 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 atau cluster API yang ingin Anda tetapkan izin Terraform-nya.
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_providers
berikut:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = "~>2.6.1" } } }
Lakukan inisialisasi direktori kerja Terraform Anda untuk menginstal penyedia:
terraform init