如何将根CA添加到minikube?

时间:2017-03-07 10:43:05

标签: kubernetes minikube

当我尝试提取图片时,我的公司使用它自己的根CA.即使是私人注册表,我也会收到错误:

  

1h 3m 22 {kubelet minikube}警告FailedSync同步错误   pod,跳过:使用ErrImagePull“POD”的“StartContainer”失败:   “图片拉取失败了gcr.io/google_containers/pause-amd64:3.0,这个   可能是因为此请求没有凭据。

     

细节:   (来自守护程序的错误响应:获取https://gcr.io/v1/_ping:x509:   由未知权威签署的证书)“       1h 10s 387 {kubelet minikube}警告FailedSync错误同步窗格,跳过:“POD”失败为“StartContainer”   ImagePullBackOff:“退回拉图像   \ “gcr.io/google_containers/pause-amd64:3.0 \”“

如何将根CA安装到minkube或避免此消息,即仅使用私有注册表,并且不要从gcr.io提取任何内容?

3 个答案:

答案 0 :(得分:6)

我到目前为止找到的唯一解决方案是在minikube中添加--insecure-registry gcr.io选项。

答案 1 :(得分:3)

解决:

x509: certificate signed by unknown authority

请你试试Minikube repo的以下建议吗?

  

将证书复制到VM中。位置应该是:

     

/etc/docker/certs.d /

     

从这里开始:https://docs.docker.com/engine/security/certificates/

ref

该帖子还包括以下单行:

cat <certificatefile> \
  | minikube ssh "sudo mkdir -p /etc/docker/certs.d/<domain> && sudo tee /etc/docker/certs.d/<domain>/ca.crt"

此处的问题是需要更新的Linux主机的CA Trust链。最简单的方法是在将证书复制到VM后重新启动Linux主机,如果不能重新启动 - 请寻找update-ca-certificates的方法。

重新启动Docker守护程序很可能无法解决此问题

注意:允许Docker守护程序使用不安全的注册表意味着证书未经过验证..虽然这可能有所帮助,但它并没有解决这里提出的问题

答案 2 :(得分:0)

独立于minikube执行此操作的直接方法是使用imagePullSecrets配置。如Pulling an Image from a Private Registry指南中所述,您可以创建Secret并将其与您的图片一起使用,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: demo-pod
spec:
  containers:
    - name: private-container
      image: <your-private-image>
  imagePullSecrets:
    - name: the_secret

可以使用以下内容创建the_secret的地方:

kubectl create secret docker-registry the_secret --docker-server=xxx --docker-username=xxx --docker-password=xxx --docker-email=xxx

或者用:

kubectl create secret generic the_secret --from-file=.docker/config.json

或与kubectl create secret相关的任何其他内容 - 请参阅documentation for details

修改:即使在官方minikube文档中,您也会发现他们使用Secrets以及registry-creds插件。

您将找到通用文档here以及插件here的文档。

它归结为:

minikube addons enable registry-creds

但从技术上讲,它与上述相同。