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