如需在 Google Distributed Cloud (GDC) 气隙环境中配置 Terraform,您必须下载并配置 Terraform 以处理 Kubernetes 资源。
本文档面向需要设置 Terraform 来管理其气隙硬件和软件工作流的所有受众群体。如需了解详情,请参阅 GDC 网闸隔离配置文档的受众群体。
准备工作
按照 HashiCorp 提供的文档将 Terraform 下载到工作站:https://developer.hashicorp.com/terraform/install。
验证您是否已有 GDC 存储桶。 如果您没有存储桶,请创建一个。如需了解详情,请参阅 创建存储分区。
安装 gdcloud CLI。如需了解详情,请参阅 使用 gdcloud CLI。
为托管您要使用 Terraform 管理的资源的 API 服务器或集群生成 kubeconfig 文件。如需了解详情,请参阅 获取 kubeconfig 文件。
设置 Terraform
如需在 GDC 环境中设置 Terraform,请完成以下操作:
在 Terraform 模块或工作站上的 Terraform 文件集合中,创建
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" } }替换以下内容:
在您在上一步中指定的存储桶中初始化 Terraform 状态文件:
terraform initTerraform 可能会要求您输入 AWS 区域作为必需输入,但由于您使用的是 GDC 对象存储,因此不会使用该值。 输入任何 AWS 区域以满足要求。
部署
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"] --- 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替换以下内容:
KUBECONFIG:托管您要使用 Terraform 管理的资源的 API 服务器或集群的 kubeconfig 文件。USER_EMAIL:要将角色绑定到的用户的电子邮件地址。
将
crd-viewer角色部署到您要使用 Terraform 的每个 API 服务器或集群。在
main.tf文件中,插入以下required_providers块:terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }此配置会安装 Kubernetes 提供方 ,以在您的 GDC 环境中预配和管理 Kubernetes 资源。
初始化 Terraform 工作目录以安装提供程序:
terraform init