本文为 SPIRE 官方文档 plugin_server_upstreamauthority_cert_manager 的中文译本,以英文原文为准。
🔗 穿越源码分析:Server 详解 · UpstreamAuthority · 上游 CA 与无缝轮换
服务端插件:UpstreamAuthority "cert-manager"
cert-manager 插件使用运行在 Kubernetes 中的一个 cert-manager 实例,为 SPIRE Server 请求中间签名证书(intermediate signing certificate)。
本插件会通过一个 CertificateRequest 资源向 cert-manager 请求一份签名证书。一旦被引用的签发者(issuer)对该请求完成签名,SPIRE 便会取回中间证书及 CA 信任包(CA bundle)。
考量
本插件需要访问一个运行着 cert-manager 的 Kubernetes 集群,并能创建 CertificateRequest。
仅支持那些具备提供签名证书能力的签发者(issuer)。
权限
所提供的 kubeconfig 必须包含一个 Kubernetes 客户端,该客户端在所配置的命名空间(namespace)内具备对 CertificateRequest 的创建权限。需要注意该 Kubernetes 客户端的身份是什么,因为在运行自定义审批器(custom approver)时,这可能会对审批流程产生影响。
配置
本插件向所配置的 cert-manager 签发者请求证书。
| 配置项 | 说明 |
|---|---|
| kube_config_file | (可选)用于连接 Kubernetes 集群的 kubeconfig 路径。留空路径将尝试使用集群内(in-cluster)配置。 |
| namespace | 用于创建 CertificateRequest 以进行签名的命名空间。 |
| issuer_name | 在 CertificateRequest 中引用的签发者名称。 |
| issuer_kind | (可选)在 CertificateRequest 中引用的签发者种类(kind)。为空时默认为 "Issuer"。 |
| issuer_group | (可选)在 CertificateRequest 中引用的签发者组(group)。为空时默认为 "cert-manager.io"。 |
hcl
UpstreamAuthority "cert-manager" {
plugin_data {
issuer_name = "spire-ca"
issuer_kind = "Issuer"
issuer_group = "cert-manager.io"
namespace = "sandbox"
kube_config_file = "/etc/kubernetes/kubeconfig"
}
}