如何通过Terraform的Vault Provider为证书Subject字段添加组织信息?
解决办法
你可以通过Terraform Vault Provider的vault_pki_secret_backend_cert资源中的subject参数,指定Subject字段的组织(O)、通用名称(CN)等信息,该参数支持传入包含X.509主题字段的键值对映射,完全满足Kubernetes对证书主题的要求。
示例代码
以下是生成kube-etcd-healthcheck-client证书的Terraform配置,其中包含Kubernetes所需的组织信息:
resource "vault_pki_secret_backend_cert" "etcd_healthcheck_client" { backend = vault_pki_secret_backend.intermediate.path name = "kube-etcd-healthcheck-client" common_name = "kube-etcd-healthcheck-client" # 配置Subject中的组织字段 subject = { organization = "system:masters" } # 可根据需求添加其他Subject字段 # subject = { # organization = "system:masters" # organizational_unit = "Kubernetes Control Plane" # country = "CN" # } ttl = "8760h" format = "pem" private_key_format = "der" }
关键说明
subject参数支持的键包括organization(对应O字段)、organizational_unit(OU)、country(C)、locality(L)等标准X.509主题字段,配置后会直接写入证书的Subject信息。- 生成的证书会自动关联你指定的
common_name(CN字段)和subject中的其他字段,完全匹配Kubernetes的证书要求。 - 私钥会自动存储在Vault的PKI后端中,你可以通过该资源的
private_key属性提取私钥内容,直接写入cloudinit配置,无需等待节点就绪。
如果使用Vault中间CA签署证书,只需确保backend参数指向中间CA的后端路径即可,上述配置逻辑完全适用。
内容的提问来源于stack exchange,提问作者Lethargos
相关产品推荐
相关产品推荐

