Skip to content

本文为 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"
    }
}