跳转到文档内容
版本:Next

Karmada 证书框架

本文档详细描述了 Karmada 系统中的证书框架体系,包括所有证书资源的组织结构、用途及其配置建议。Karmada 证书框架定义了组件间安全通信所需的证书体系,清晰地阐明了各组件如何使用证书进行身份验证和通信加密。本文档将帮助管理员了解 Karmada 的证书体系架构,正确配置和管理组件所需的证书,确保整个系统的安全性。

注意:当前,通过社区维护的 hack/deploy-karmada.sh 脚本安装 Karmada 时,会按照本文档所述的证书框架生成证书。其他安装方式(包括 karmadactl initkarmada-operator 和 Helm)将在后续版本中逐步统一采用本标准。更多信息请参考issue: Karmada Self-Signed Certificate Content Standardization.。

Karmada 根证书

Karmada 根证书作为证书链的最顶端,是所有后续证书的签发者。系统中的各种组件(如 API Server、聚合 API Server、Webhook、ETCD 等)生成的证书都是由该根证书签署并建立信任链的。

Karmada API Server

服务端证书

Karmada API Server 服务端证书用于加密和验证 karmada-apiserver 与客户端之间的通信。该证书确保了 karmada-apiserver 能够安全地提供其服务接口,同时允许客户端验证api服务器的真实性,防止中间人攻击。

命令行标志

通过 --tls-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:karmada-apiserver
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:karmada-apiserver.karmada-system.svc.cluster.local,
DNS:karmada-apiserver.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1, IP Address:${apiserver_service_ip_address}

ETCD客户端证书

Karmada API Server ETCD 客户端证书用于 karmada-apiserver 访问 ETCD 数据存储时的身份验证。它确保只有授权的 API Server 实例能够读写 ETCD 中的数据。

命令行标志

通过 --etcd-certfile 标志传入证书文件

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-apiserver-etcd-client
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Front Proxy 客户端证书

Front Proxy 客户端证书用于前端代理与karmada-apiserver之间的通信认证。在 Karmada 的 API 聚合架构中,前端代理处理来自聚合 API Server 的请求转发。该证书确保了请求转发过程的安全性和可信度。

命令行标志

通过--proxy-client-cert-file标志传入证书文件

推荐CN和SAN值

Subject: CN=front-proxy-client
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Aggregated API Server

服务端证书

Karmada Aggregated API Server 证书用于 Karmada 的 API 聚合层,允许动态地将 API 扩展添加到核心 API Server 中。该证书确保了聚合 API Server 的身份验证,并保护与其他组件间的通信安全。通过karmada-aggregated-apiserver,Karmada 能够以安全的方式扩展其 API 功能。

命令行标志

通过 --tls-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:karmada-aggregated-apiserver
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:karmada-aggregated-apiserver.karmada-system.svc.cluster.local,
DNS:karmada-aggregated-apiserver.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1

客户端证书

Karmada Aggregated API Server 客户端证书用于 karmada-aggregated-apiserver组件作为客户端与 karmada-apiserver 通信时的身份验证。它允许 Karmada Aggregated API Server 组件安全地访问 API 服务并执行必要的操作。该证书确保了 Karmada Aggregated API Server 的请求能被正确识别和授权。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-aggregated-apiserver
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

ETCD客户端证书

Karmada Aggregated API Server ETCD 客户端证书用于karmada-aggregated-apiserver访问 ETCD 数据存储时的身份验证。它确karmada-aggregated-apiserver能够安全地存储和检索其扩展 API 资源的状态信息,同时维护适当的访问控制。

命令行标志

通过 --etcd-certfile 标志传入证书文件

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-aggregated-apiserver-etcd-client
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Webhook

服务端证书

Karmada Webhook 服务端证书用于加密和验证 karmada-webhookkarmada-apiserver 之间的通信。karmada-webhook在 Karmada 中负责资源验证和准入控制,确保所有对资源的操作符合预定义的规则。

命令行标志

通过 --cert-dir 标志传入证书文件目录,从目录中自动读取

推荐CN和SAN值

Subject: CN=system:karmada:karmada-webhook
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:karmada-webhook.karmada-system.svc.cluster.local,
DNS:karmada-webhook.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1

客户端证书

Karmada Webhook 客户端证书用于 karmada-webhook组件作为客户端与 karmada-apiserver 通信时的身份验证。它允许 Webhook 组件安全地访问 API 服务并执行必要的操作。该证书确保了 Webhook 的请求能被正确识别和授权。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-webhook
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

服务端证书

Karmada Search 服务端证书用于加密和验证 karmada-search与客户端之间的通信。karmada-search提供跨集群资源搜索功能,使管理员能够快速检索和查询分布在多个集群中的资源。

命令行标志 通过 --tls-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:karmada-search
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:karmada-search.karmada-system.svc.cluster.local,
DNS:karmada-search.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1

客户端证书

Karmada Search 客户端证书用于karmada-searchkarmada-apiserver之间的通信认证。它允许搜索服务安全地查询和检索跨集群资源信息。该证书确保了搜索请求的安全性和数据访问权限的正确控制。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-search
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

ETCD客户端证书

Karmada Search ETCD 客户端证书用于karmada-search访问 ETCD 数据存储时的身份验证。它允许karmada-search安全地从 ETCD 检索资源信息,同时确保数据访问权限的正确控制。

命令行标志 通过 --etcd-certfile 标志传入证书文件

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-search-etcd-client
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Metrics Adapter

服务端证书

Karmada Metrics Adapter 服务端证书用于加密和验证 karmada-metrics-adapterkarmada-apiserver 之间的通信。 karmada-metrics-adapter 提供自定义指标 API 支持,使 Karmada 能够基于自定义指标进行资源调度和自动伸缩。

命令行标志 通过 --tls-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:karmada-metrics-adapter
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:karmada-metrics-adapter.karmada-system.svc.cluster.local,
DNS:karmada-metrics-adapter.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1

客户端证书

Karmada Metrics Adapter 客户端证书用于karmada-metrics-adapterkarmada-apiserver 之间的通信认证。它允许指标适配器安全地访问和提供自定义指标 API。该证书确保了指标数据的安全查询和权限控制。

命令行标志 通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-metrics-adapter
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Scheduler Estimator

服务端证书

Karmada Scheduler Estimator 服务端证书用于加密和验证karmada-scheduler-estimatorkarmada-schedulerkarmada-descheduler之间的通信。karmada-scheduler-estimator为调度决策提供集群负载评估,帮助 Karmada 做出更优的资源分配决策。

命令行标志 通过 --grpc-auth-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:karmada-scheduler-estimator
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:*.karmada-system.svc.cluster.local, DNS:*.karmada-system.svc,
DNS:localhost,
IP Address:127.0.0.1

ETCD

服务端证书

ETCD 服务端证书用于加密和验证 ETCD 服务端与客户端之间的通信。ETCD 是 Karmada 的核心数据存储,保存了所有的集群状态信息。该证书对于保护这些敏感数据的存储和访问至关重要,确保只有授权组件能够读写 ETCD 中的数据。

命令行标志

通过 --key-file= 标志传入证书文件

推荐CN和SAN值

Subject: CN=system:karmada:etcd-server
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:
DNS:etcd.karmada-system.svc.cluster.local, DNS:etcd.karmada-system.svc,
DNS:etcd-client.karmada-system.svc.cluster.local,
DNS:etcd-client.karmada-system.svc, DNS:localhost,
IP Address:127.0.0.1

ETCD客户端证书

ETCD ETCD 客户端证书是 Karmada ETCD 服务的自我健康检查和内部通信的关键安全凭证,它确保了 ETCD 服务的安全性和可用性。

命令行标志

在构建etcd容器时,使用如下命令在容器中使用

etcdctl get /registry --prefix --keys-only  --endpoints https://127.0.0.1:2379  --cacert /etc/karmada/pki/etcd-client/ca.crt --cert /etc/karmada/pki/etcd-client/tls.crt --key /etc/karmada/pki/etcd-client/tls.key

推荐CN和SAN值

Subject: CN=system:karmada:etcd-etcd-client
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Controller Manager

客户端证书

Karmada Controller Manager 客户端证书用于karmada-controller-managerkarmada-apiserver 之间的通信认证。控制器管理器包含多个控制循环,负责维护集群的期望状态。该证书确保了控制器能够安全地与 karmada-apiserver 交互,获取和更新资源状态。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-controller-manager
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Scheduler

客户端证书

Karmada Scheduler 客户端证书用于karmada-schedulerkarmada-apiserver 之间的通信认证。调度器负责决定资源应该分配到哪些成员集群,是 Karmada 多集群管理的核心组件。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-scheduler
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

GRPC证书

Karmada Scheduler GRPC 证书用于加密和验证karmada-schedulerkarmada-scheduler-estimator之间的 gRPC 通信。karmada-scheduler使用此通道获取集群负载评估信息以做出调度决策。该证书确保了这些关键性能数据的安全传输。

命令行标志

通过 --scheduler-estimator-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-scheduler-grpc
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

Karmada Descheduler

客户端证书

Karmada Descheduler 客户端证书用于karmada-deschedulerkarmada-apiserver 之间的通信认证。反调度器负责优化已有的资源分配,通过重新调度来提高整体集群效率。该证书确保了反调度操作的安全性和权限控制。

命令行标志

通过 --kubeconfig 标志传入含有证书的kubeconfig

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-descheduler
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name:

GRPC证书

Karmada Descheduler GRPC 证书用于加密和验证karmada-deschedulerkarmada-scheduler-estimator之间的 gRPC 通信。karmada-descheduler使用此通道获取集群负载评估信息以做出调度决策。该证书确保了这些关键性能数据的安全传输。

命令行标志

通过 --scheduler-estimator-cert-file 标志传入证书文件

推荐CN和SAN值

Subject: O=system:masters, CN=system:karmada:karmada-descheduler-grpc
Subject Public Key Info:
X509v3 extensions:
X509v3 Subject Alternative Name: