ack使用containerd拉取自建docker仓库 x509: cannot validate certificate for because it doesn‘t contain 处理

本文详细描述了如何生成和配置证书以解决Docker私有仓库的访问问题,包括生成CA文件、证书请求文件,以及在Kubernetesworker节点上配置containerd以使用自定义证书进行安全通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是证书问题。

步骤一、生成证书

除了根据docker私有仓库搭建

这篇文章生成 ca 文件,domain.key外。还需要生成其他的证书

可以参考传送门

核心点:

# 生成2048位的私钥,也可以生成4096位的,看自己需求
openssl genrsa -out wayne.key 2048
# 生成证书请求文件
openssl req -new -key wayne.key -subj "/CN=ip:port" -out wayne.csr
# 将IP地址写入一个文件,为了解决上述所说的那个问题
echo subjectAltName = IP:ipxxxx>extfile.cnf
# 这里的ca我就使用了集群自带的,在/etc/kubernetes/pki/下
openssl x509 -req -in wayne.csr -CA domain.crt -CAkey domain.key -CAcreateserial -extfile extfile.cnf -out wayne.crt -days 3650  
# 查看证书信息
openssl x509 -in wayne.crt -noout -text

 注:生成新的证书之后,需要将自建的 docker 私有库的容器删除后,重新加载新的crt 和 key 文件

docker run -d -p 5000:5000 --restart=always --name registry --memory 4906m --memory-swap -1 --read-only -v /mnt/registry:/var/lib/registry -v /data/docker_data/registry/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/docker_data/registry/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/wayne.crt -e REGISTRY_HTTP_TLS_KEY=/certs/wayne.key registry:latest

步骤二、配置 worker 节点(所有)相关证书

1st 将上述的所有证书文件,上传到worker 节点服务器

[root]# ls
domain.crt  domain.key  wayne.crt  wayne.csr  wayne.key

2nd 修改/etc/containerd/config.toml文件

vi /etc/containerd/config.toml

按下面的配置进行修改


    [plugins."io.containerd.grpc.v1.cri".registry]
      config_path = ""
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."仓库地址"]
           endpoint = ["https://仓库地址"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
        [plugins."io.containerd.grpc.v1.cri".registry.configs."仓库地址".tls]
           insecure_skip_verify = false
           ca_file = "/etc/containerd/ssl/wayne.crt"
           cert_file = "/etc/containerd/ssl/wayne.crt"
           key_file = "/etc/containerd/ssl/wayne.key"
        [plugins."io.containerd.grpc.v1.cri".registry.configs."仓库地址".auth]
           username = "用户名"
           password = "密码"

 3rd 将生存的证书信息追加到系统的证书管理文件后

# 将生存的证书信息追加到系统的证书管理文件后
cat wayne.crt >> /etc/pki/tls/certs/ca-bundle.crt

步骤三、重启containerd服务

systemctl restart containerd.service

这样就解决了 ack 拉取镜像时的x509问题了

说明:

目前能解决ack 页面上拉取的问题。但是如果在控制台,使用 ctr 拉取,就会提示没有认证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值