一、解决问题:
二、解决步骤
1、解决cri工具对于证书的信任问题
[root@oula-k8s-02 anchors]# ls /etc/containerd/certs.d/harbor.com\:543/
ca.crt harbor.com.cert harbor.com.key
ca.crt CA机构证书
harbor.com.cert harbor.com 域名证书
harbor.com.key harbor.com 密钥
harbor官网对于证书有非常详细的生成教程,不多说。
2.解决本机对于自签名证书的信任问题
\[root@oula-k8s-02 anchors]# ls -l
总用量 8
-rw-r--r-- 1 root root 2041 7月 17 16:58 ca.crt
-rw-r--r-- 1 root root 2098 7月 17 16:58 harbor.com.crt
把ca.crt 、 harbor.com.crt 放在 /etc/pki/ca-trust/source/anchors 目录下,(不同OS不同),需要使得主机信任这个自签名证书,其他公有云的仓库不需要是因为他们的ca证书签发是主机本身就信任的CA机构签发的证书所以不涉及。
3.更新CA机构以及CA签发的证书
update-ca-trust
4.仓库信任顺序
1、你通过nerdctl或docker等客户端工具进行传递的user以及passwd,优先于你配置的cri的auth字段。
例如:nerdctl login \ docker login 等等
保存在~/..docker/config.json
.这个文件中置. --优先
2、如果没有传递参数,如 nerdctl login +<server>,则读取你的配置的cri的配置。
配置文件在:
/etc/containerd/config.toml中.
例如:
[plugins."io.containerd.grpc.v1.cri".registry]
config_path = "/etc/containerd/certs.d"
[plugins."io.containerd.grpc.v1.cri".registry.configs]
[plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.com".auth]
username = "xxxxxx"
password = "xxxxxx"
3、一般不需要配置,你使用 cli工具 login 仓库,进行更新你的~/.docker/ config.json 文件就行。