- OpenTofu 语言
- OpenTofu 设置
- 后端
- kubernetes
后端类型:kubernetes
注意
此后端受 Kubernetes 最大 Secret 大小限制,为 1MB。有关详细信息,请参阅Secret 限制。
将状态存储在Kubernetes secret 中。
此后端支持状态锁定,锁定通过 Lease 资源完成。
示例配置
terraform {
backend "kubernetes" {
secret_suffix = "state"
config_path = "~/.kube/config"
}
}
这假定运行 OpenTofu 的用户/服务帐户具有权限,以读取/写入存储 Secret 的命名空间中的 Secret。
如果设置了 config_path
或 config_paths
属性,后端将尝试使用kubeconfig 文件 来访问集群。
如果设置了 in_cluster_config
标志,后端将尝试使用服务帐户 来访问集群。如果 OpenTofu 在 Kubernetes 集群中运行的 Pod 内运行,则可以使用它。
对于大多数用例,需要设置 in_cluster_config
、config_path
或 config_paths
之一。如果所有标志都设置,则将使用 config_path
处的配置。
请注意,对于访问凭据,我们建议使用部分配置。
示例引用
data "terraform_remote_state" "foo" {
backend = "kubernetes"
config = {
secret_suffix = "state"
load_config_file = true
}
}
配置变量
警告
我们建议使用环境变量来提供凭据和其他敏感数据。如果您使用 -backend-config
或直接在您的配置中硬编码这些值,OpenTofu 将在 .terraform
子目录和计划文件中包含这些值。有关详细信息,请参阅凭据和敏感数据。
支持以下配置选项
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
- (可选) 执行插件时要设置的环境变量映射。