我有一个带有配置文件的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:证书由未知授权机构签名
因为它使用了以前的证书。
答案 0 :(得分:0)
$ht = @{ '10' = 'ten'; 'a1' = 'a-one' } # string keys
$ht['10'] # quoting required
$ht.'10' # ditto, because 10 without quotes would be a *number*
$ht.a1 # quoting *optional*, because a1 is parsed as a *string*
证书颁发机构选项适用于客户端本身。您需要在容器内设置ca。我认为您可以通过几种方式进行设置(但不限于):
使用ca内容创建ConfigMap(或k8s机密)并将其安装在您的Pod上,并让您的应用程序将其作为ca config(您的docker注册表)进行引用
例如,将配置直接烘烤到某个kubectl
目录中的容器中,并让您的应用程序引用它。更加推荐的方法是1.,因为通常不建议在容器映像中使用硬包装的东西。