2

我有一个带有配置文件的 EKS 设置(kubernetes):

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: REDACTED
    server: https://E3D13176159D2CA5C51AF0622AFE252C.yl4.us-east-1.eks.amazonaws.com
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - terraform-eks-demo-green
      command: aws-iam-authenticator
      env: null

这里的证书授权数据是自签名的(随 EKS AMI 一起提供),我正在尝试为 kubernetes(人工制品)设置一个私有 docker 注册表,它是 https 并使用内部证书。

所以在应用我的容器时,我执行以下操作:

kubectl apply  --certificate-authority='internal-ca.pem' -f echo-service.yaml

失败:

错误:为 kubernetes 指定了证书授权数据和证书授权。证书授权数据将覆盖。

如何设置一个容器以使用不同于 docker config 中定义的 ca 证书?

目前任何容器的应用都失败了:

x509: 由未知机构签署的证书

因为它使用以前的证书..

4

1 回答 1

0

证书颁发机构选项适用于kubectl客户端本身。你想要的是在容器内设置 ca 。我认为您可以设置几种方法(不限于):

  1. 使用 ca 内容创建一个 ConfigMap(或 k8s 密钥)并安装在您的 pod 上,并让您的应用程序将其作为 ca 配置(您的 docker 注册表)引用

  2. 例如,将配置直接烘焙到某个/etc/registry目录中的容器中,并让您的应用程序引用它。更推荐的方法是 1. 因为通常不建议在容器映像中硬 cde cred 的东西。

于 2018-09-12T21:15:14.820 回答