首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何向kubeadm配置添加不安全的Docker注册表证书

如何向kubeadm配置添加不安全的Docker注册表证书
EN

Stack Overflow用户
提问于 2019-10-03 20:19:25
回答 2查看 1.4K关注 0票数 0

我对Kubernetes非常陌生,并且我成功地获得了一个使用minikube在本地部署的角应用程序。但是现在我正在处理一个Bitnami Kubernetes沙盒 EC2实例,并且遇到了从另一个EC2实例上从我的坞注册中心提取的问题。

每当我尝试应用部署时,pods都会记录以下错误

代码语言:javascript
运行
复制
Failed to pull image "registry-url.net:5000/app": no available registry endpoint:
failed to do request: Head https://registry-url.net/v2/app/manifests/latest:
x509: certificate signed by unknown authority

码头注册证书是由CA (Comodo RSA)签名的,但是我必须将注册表的.crt.key文件添加到/etc/docker/certs.d/registry-url.net:5000/中,以获取本地的minikube和docker副本。

但是,Bitnami实例没有一个/etc/docker/目录,也没有添加不安全注册表异常的daemon.json文件,我也不确定是否应该将证书文件定位于kubeadm。

所以,是否有类似的位置来放置kubeadm的.crt .key .key文件,或者是否有一个命令可以将我的停靠器注册表添加到异常列表中?

或者更好的是,是否有一种方法可以让Kubernetes/docker识别注册表SSL证书的CA?

谢谢

编辑:我已经在下面列出了我的部署和秘密文件:

app-deployment.yaml

代码语言:javascript
运行
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
        - name: app
          image: registry-url.net:5000/app
          ports:
            - containerPort: 80
          env:
            ...

      imagePullSecrets:
        - name: registry-pull-secret

registry-secret.yaml

代码语言:javascript
运行
复制
apiVersion: v1
kind: Secret
metadata:
  name: registry-pull-secret
data:
 .dockerconfigjson: <base-64 JSON>
type: kubernetes.io/dockerconfigjson
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-07 17:50:29

因此,我通过以下命令手动安装了docker,从而解决了我的问题:

代码语言:javascript
运行
复制
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get install docker-ce docker-ce-cli containerd.io

然后我必须创建目录结构/etc/docker/certs.d/registry-url:5000/,并将注册表的.crt.key文件复制到目录中。

但是,这仍然不起作用;但是在停止EC2实例并再次启动它之后,它似乎没有问题地从远程注册表中提取。

当我最初运行service kubelet restart时,这些更改似乎并没有生效,但是重新启动起了关键作用。我不确定是否有更好的方法来解决我的问题,但这是唯一对我有效的解决办法。

票数 0
EN

Stack Overflow用户

发布于 2019-10-03 22:51:26

您需要创建一个包含存储库详细信息的secret

这可能是将图像上传到码头回购系统的示例:

代码语言:javascript
运行
复制
docker login _my-registry-url_:5000  
Username (admin):  
Password:  
Login Succeeded  

docker tag _user_/_my-cool-image_  _my-registry-url_:5000/_my-cool-image_:0.1  
docker push _my-registry-url_:5000/_my-cool-image_:0.1

在该主机上,您应该创建base64 of ~/.docker/config.json,类似于so cat ~/.docker/config.json | base64,然后您将能够将其添加到秘密中,因此创建一个可能如下所示的yaml

代码语言:javascript
运行
复制
apiVersion: v1
kind: Secret
metadata:
 name: registrypullsecret
data:
 .dockerconfigjson: <base-64-encoded-json-here>
type: kubernetes.io/dockerconfigjson

一旦完成,您可以使用kubectl create -f my-secret.yaml && kubectl get secrets应用这个秘密。

至于您的pod,应该如下所示:

代码语言:javascript
运行
复制
apiVersion: v1
kind: Pod
metadata:
 name: jss
spec:
 imagePullSecrets:
  — name: registrypullsecret
 containers:
  — name: jss
    image: my-registry-url:5000/my-cool-image:0.1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58226349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档