我在这个问题中使用的定义:
- 主 apiserver:核心 kube-apiserver
- 扩展 apiserver:像 metrics-server 这样的插件
我正在阅读配置聚合层指南,但我不了解主要apiserver 对--requestheader-allowed-names
. 在Kubernetes Apiserver 客户端身份验证部分它说:
必须使用其 CN 是 --requestheader-allowed-names 中列出的证书之一的客户端证书建立连接。注意:您可以将此选项设置为空白,如 --requestheader-allowed-names=""。这将向扩展 apiserver 指示任何 CN 都是可接受的。
这听起来像是主要的apiserver 负责设置它。扩展apiserver 肯定会控制这一点并确定什么是可以接受的?为什么要在主apiserver 上配置它呢?即客户端证书通用名称是什么,由扩展apiserver 来接受/拒绝这些?
或者是传递给主要和扩展apiservers的文档部分混合选项?
我想我现在明白了为什么主kube-apiserver 需要这个允许的名称列表:kube-apiserver 是所有扩展 apiservers 的前端。所以请求总是首先通过 kube-apiserver;它聚合请求,然后将它们传递到正确的后端扩展 apiserver。因此,它需要知道要接受哪个 CN。即对扩展服务器的请求将:
扩展 apiserver 也会在收到请求后检查 CN,并在主 kube-apiserver 将其路由到 CN。