跳至主要内容

后端类型:kubernetes

将状态存储在Kubernetes secret 中。

此后端支持状态锁定,锁定通过 Lease 资源完成。

示例配置

代码块
terraform {
backend "kubernetes" {
secret_suffix = "state"
config_path = "~/.kube/config"
}
}

这假定运行 OpenTofu 的用户/服务帐户具有权限,以读取/写入存储 Secret 的命名空间中的 Secret。

如果设置了 config_pathconfig_paths 属性,后端将尝试使用kubeconfig 文件 来访问集群。

如果设置了 in_cluster_config 标志,后端将尝试使用服务帐户 来访问集群。如果 OpenTofu 在 Kubernetes 集群中运行的 Pod 内运行,则可以使用它。

对于大多数用例,需要设置 in_cluster_configconfig_pathconfig_paths 之一。如果所有标志都设置,则将使用 config_path 处的配置。

请注意,对于访问凭据,我们建议使用部分配置

示例引用

代码块
data "terraform_remote_state" "foo" {
backend = "kubernetes"
config = {
secret_suffix = "state"
load_config_file = true
}
}

配置变量

支持以下配置选项

  • secret_suffix - (必填) 创建 Secret 时使用的后缀。Secret 将以 tfstate-{workspace}-{secret_suffix} 的格式命名。
  • labels - (可选) 要应用于 Secret 和 Lease 的其他标签的映射。
  • namespace - (可选) 存储 Secret 和 Lease 的命名空间。可以从 KUBE_NAMESPACE 获取。
  • in_cluster_config - (可选) 用于从 Pod 内部对集群进行身份验证。可以从 KUBE_IN_CLUSTER_CONFIG 获取。
  • host - (可选) Kubernetes 主机的 hostname(以 URI 的形式)。可以从 KUBE_HOST 获取。默认为 https://
  • username - (可选) 访问 Kubernetes 主节点端点时使用的 HTTP 基本身份验证的用户名。可以从 KUBE_USER 获取。
  • password - (可选) 访问 Kubernetes 主节点端点时使用的 HTTP 基本身份验证的密码。可以从 KUBE_PASSWORD 获取。
  • insecure - (可选) 是否应在不验证 TLS 证书的情况下访问服务器。可以从 KUBE_INSECURE 获取。默认为 false
  • client_certificate - (可选) 用于 TLS 身份验证的 PEM 编码的客户端证书。可以从 KUBE_CLIENT_CERT_DATA 获取。
  • client_key - (可选) 用于 TLS 身份验证的 PEM 编码的客户端证书密钥。可以从 KUBE_CLIENT_KEY_DATA 获取。
  • cluster_ca_certificate - (可选) 用于 TLS 身份验证的 PEM 编码的根证书捆绑包。可以从 KUBE_CLUSTER_CA_CERT_DATA 获取。
  • config_path - (可选) kube 配置文件的路径。可以从 KUBE_CONFIG_PATH 获取。
  • config_paths - (可选) kube 配置文件路径的列表。可以从 KUBE_CONFIG_PATHS 获取。
  • config_context - (可选) 要从配置文件中选择的上下文。可以从 KUBE_CTX 获取。
  • config_context_auth_info - (可选) kube 配置的身份验证信息上下文(kubeconfig 用户的名称,kubectl 中的 --user 标志)。可以从 KUBE_CTX_AUTH_INFO 获取。
  • config_context_cluster - (可选) Kube 配置的集群上下文(kubeconfig 集群的名称,kubectl 中的 --cluster 标志)。可以从 KUBE_CTX_CLUSTER 中获取。
  • token - (可选) 您的服务帐户的令牌。可以从 KUBE_TOKEN 中获取。
  • exec - (可选) 用于使用 基于 exec 的凭据插件 的配置块,例如调用外部命令以接收用户凭据。
    • api_version - (必需) 解码 ExecCredentials 资源时使用的 API 版本,例如 client.authentication.k8s.io/v1beta1
    • command - (必需) 要执行的命令。
    • args - (可选) 执行插件时要传递的参数列表。
    • env - (可选) 执行插件时要设置的环境变量映射。