Authentication EKS集群不';不提供客户端ca文件

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中,这不是问

在EKS(Kubernetes 1.11.5)中创建了一个包含多个节点组的集群,但是我注意到在
扩展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-----