EKS 集群不提供 client-ca-file

nix*_*get 2 authentication kubernetes amazon-eks

在 EKS(Kubernetes 1.11.5)中创建了一个具有多个节点组的集群,但是我注意到在configmap 中缺少extension-apiserver-authentication该键。client-ca-file

我认为这是由于 Kubernetes API 服务的启动方式造成的。还有其他人遇到过这个问题吗?

我在部署证书管理器时遇到了这个问题,该管理器使用GET https://10.100.0.1:443/api/v1/namespaces/kube-system/configmaps/extension-apiserver-authentication.

在 GKE 中这不是问题,因为extension-apiserver-authenticationconfigmap 已经包含了client-ca-file.

extension-apiserver-authenticationAWS 中的配置映射,

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
Run Code Online (Sandbox Code Playgroud)

然而在 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
Run Code Online (Sandbox Code Playgroud)

小智 6

我在尝试在 AWS EKS 集群上使用 cert-manager 时也遇到了这个问题。可以使用从 AWS CLI 获取的证书自行注入证书。请按照以下步骤解决此问题:

获得证书

证书以 Base64 编码存储,可以使用以下命令检索

aws eks describe-cluster \
        --region=${AWS_DEFAULT_REGION} \
        --name=${CLUSTER_NAME} \
        --output=text \
        --query 'cluster.{certificateAuthorityData: certificateAuthority.data}' | base64 -D
Run Code Online (Sandbox Code Playgroud)

注入证书

在 kube-system 命名空间下编辑 configMap/extension-apiserver-authentication:kubectl -n kube-system edit cm extension-apiserver-authentication

在数据部分下,将 CA 添加到名为 client-ca-file 的新配置条目下。例如:

  client-ca-file: |
    -----BEGIN CERTIFICATE-----
...
    -----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)