Authentication EKS集群不';不提供客户端ca文件
在EKS(Kubernetes 1.11.5)中创建了一个包含多个节点组的集群,但是我注意到在Authentication EKS集群不';不提供客户端ca文件,authentication,kubernetes,amazon-eks,Authentication,Kubernetes,Amazon Eks,在EKS(Kubernetes 1.11.5)中创建了一个包含多个节点组的集群,但是我注意到在扩展apiserver authenticationconfigmap中缺少客户端ca文件密钥 我认为这是由于Kubernetes API服务的启动方式。还有其他人遇到过这个问题吗 我在部署证书管理器时遇到了这个问题,它使用GET查询api服务器https://10.100.0.1:443/api/v1/namespaces/kube-系统/配置映射/扩展apiserver身份验证 在GKE中,这不是问
扩展apiserver authentication
configmap中缺少客户端ca文件
密钥
我认为这是由于Kubernetes API服务的启动方式。还有其他人遇到过这个问题吗
我在部署证书管理器时遇到了这个问题,它使用GET查询api服务器https://10.100.0.1:443/api/v1/namespaces/kube-系统/配置映射/扩展apiserver身份验证
在GKE中,这不是问题,因为扩展apiserver身份验证
configmap已经包括客户端ca文件
AWS中的扩展apiserver身份验证configmap
apiVersion: v1
data:
requestheader-allowed-names: '["front-proxy-client"]'
requestheader-client-ca-file: |
<certificate file>
requestheader-extra-headers-prefix: '["X-Remote-Extra-"]'
requestheader-group-headers: '["X-Remote-Group"]'
requestheader-username-headers: '["X-Remote-User"]'
kind: ConfigMap
metadata:
creationTimestamp: 2019-01-14T04:56:51Z
name: extension-apiserver-authentication
namespace: kube-system
resourceVersion: "39"
selfLink: /api/v1/namespaces/kube-system/configmaps/extension-apiserver-authentication
uid: ce2b6f64-17b8-11e9-a6dd-021a269d3ce8
apiVersion:v1
数据:
requestheader允许的名称:“[“前端代理客户端”]”
requestheader客户端ca文件:|
requestheader额外标头前缀:'[“X-Remote-extra-“]”
requestheader组标题:“[“X-Remote-group”]”
requestheader用户名标题:“[“X-Remote-User”]”
种类:配置地图
元数据:
创建时间戳:2019-01-14T04:56:51Z
名称:扩展服务器身份验证
名称空间:kube系统
资源版本:“39”
selfLink:/api/v1/namespace/kube system/configmaps/extension-apiserver身份验证
uid:ce2b6f64-17b8-11e9-a6dd-021a269d3ce8
但是在GKE,
apiVersion: v1
data:
client-ca-file: |
<client certificate file>
requestheader-allowed-names: '["aggregator"]'
requestheader-client-ca-file: |
<certificate file>
requestheader-extra-headers-prefix: '["X-Remote-Extra-"]'
requestheader-group-headers: '["X-Remote-Group"]'
requestheader-username-headers: '["X-Remote-User"]'
kind: ConfigMap
metadata:
creationTimestamp: 2018-05-24T12:06:33Z
name: extension-apiserver-authentication
namespace: kube-system
resourceVersion: "32"
selfLink: /api/v1/namespaces/kube-system/configmaps/extension-apiserver-authentication
uid: e6c0c431-5f4a-11e8-8d8c-42010a9a0191
apiVersion:v1
数据:
客户端ca文件:|
requestheader允许的名称:“[“聚合器”]”
requestheader客户端ca文件:|
requestheader额外标头前缀:'[“X-Remote-extra-“]”
requestheader组标题:“[“X-Remote-group”]”
requestheader用户名标题:“[“X-Remote-User”]”
种类:配置地图
元数据:
creationTimestamp:2018-05-24T12:06:33Z
名称:扩展服务器身份验证
名称空间:kube系统
资源版本:“32”
selfLink:/api/v1/namespace/kube system/configmaps/extension-apiserver身份验证
uid:e6c0c431-5f4a-11e8-8d8c-42010a9a0191
您的假设可能是正确的,我的意思是您的问题可能真的与EKS中启动api server的方式有关,并且当缺少选项时,根据apiserver源代码: 群集未在%s中的configmap/%s中提供客户端ca文件,因此 扩展api服务器的客户端证书身份验证将不起作用 我想知道你是否可以自己创建一个客户端ca,然后更新扩展apiserver身份验证配置映射。毕竟在EKS中,我们可以访问CA(获取CA的方法),CA可以为我们签署客户机证书提供服务,如GitHub页面和api服务器中所述 作为附带评论: 我注意到,在EKS上,像kubelet这样的组件正在使用
aws iam验证器
(集群节点上/var/lib/kubelet/kubeconfig的内容):
与GKE相反,客户端ca用作验证客户端的方式:
apiVersion: v1
kind: Config
users:
- name: kubelet
user:
client-certificate: /etc/srv/kubernetes/pki/kubelet.crt
client-key: /etc/srv/kubernetes/pki/kubelet.key
我在尝试在AWS EKS群集上使用cert manager时也遇到了这个问题。可以使用从AWS CLI获得的证书自己注入证书。请按照以下步骤解决此问题:
获取证书
证书以Base64编码存储,可以使用
aws eks描述集群\
--region=${AWS\U DEFAULT\U region}\
--name=${CLUSTER_name}\
--输出=文本\
--查询'cluster.{certificateAuthorityData:certificateAuthority.data}'| base64-D
注入证书
在kube系统命名空间下编辑configMap/扩展apiserver身份验证:kubectl-n kube系统编辑cm扩展apiserver身份验证
在data部分下,将CA添加到名为client CA file的新配置项下。例如:
client-ca-file: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
是的,我完全同意。关于这一点,我已经向AWS寻求支持。与请求头标志不同,该标志看起来不是必需的。因此,管理的K8提供者可能不需要实现它。尽管如此,他们至少应该拿出一些文件来说明这一点。当我收到支持人员的回复时,我会发回。嗯,这看起来是我们应该解决的问题。有人想为它制造一个问题吗?
client-ca-file: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----