服务加密概述¶
警告
Knative Serving 加密功能 cluster-local-domain-tls
和 system-internal-tls
处于实验阶段。请谨慎使用!
Knative Serving 加密包含三个部分
- 集群外部的入口层上的 HTTPS(集群外部域,如
myapp-<namespace>.example.com
)。 - 集群内部的入口层上的 HTTPS(集群本地域,如
myapp.<namespace>.svc.cluster.local
)。 - Knative 内部组件之间的 HTTPS(
ingress-controller
、activator
、queue-proxy
)。
注意
目前,所有控制平面流量(包括 Kubernetes PreStopHooks 和指标等元数据)均未加密。
各个部分的详细信息¶
不同的部分彼此独立,(可以)使用不同的证书颁发机构来签署证书。
外部域加密¶
- 证书 CN/SAN 包含 Knative 服务的外部域,例如
myapp-<namespace>.example.com
。 - 证书由入口控制器的外部端点使用 SNI 托管。
- 调用者必须信任签署证书的(外部)CA(这超出了 Knative 的范围)。
- 这些证书要么手动提供,要么通过启用自动证书配置提供。
有关此功能的更多信息,请参阅 配置外部域加密。
集群本地加密¶
- 证书 CN/SAN 包含 Knative 服务的集群本地域,例如
myapp.namespace.svc.cluster.local
、myapp.namespace.svc
、myapp.namespace
。 - 证书由入口控制器的集群本地端点使用 SNI 托管。
- 调用者必须信任签署证书的 CA(这超出了 Knative 的范围)。一种方法是使用来自 cert-manager 的 trust-manager。
- 为了创建证书,Knative 依赖于 cert-manager 和 Knative cert-manager 集成。它们需要安装并配置才能使该功能正常工作。
有关此功能的更多信息,请参阅 配置集群本地域加密。
Knative 系统内部加密¶
启用此配置后,Knative 系统内部组件(入口控制器、激活器、队列代理)将托管 TLS 端点。
- 为了创建证书,Knative 依赖于 cert-manager 和 Knative cert-manager 集成。它们需要安装并配置才能使该功能正常工作。
- 将使用特定的 SAN 来验证每个连接。每个组件都需要信任签署证书的 CA(可能是完整链)。为此,Knative 系统组件将使用并信任提供的
CABundle
。CA 捆绑包需要由集群管理员提供,可能使用来自 cert-manager 的 trust-manager。
有关此功能的更多信息,请参阅 配置 Knative 系统内部加密。