前言
當要從非安全的映象倉庫中進行 Pull
、Push
時,會遇到 x509: certificate signed by unknown authority
錯誤提示; 這是由於映象倉庫是可能是 http
服務,或者 https
的證書是自簽名的就會出現這個問題。
Containerd
可以配置為連線到私有映象倉庫,並使用倉庫在每個節點上拉取私有映象。
Containerd
中的配置可以用於透過 TLS 連線到私有映象倉庫,也可以與啟用驗證的映象倉庫連線。
下面以三種執行時來說明,如何解決這個問題
配置 Containerd
vim /etc/containerd/config.toml
在 /etc/containerd/config.toml
檔案中加入如下的配置:
[plugins."io.containerd.grpc.v1.cri".registry.configs."test.registry.com".tls] # test.registry.com harbor地址
insecure_skip_verify = true # 跳過tls認證
配置之後需要重啟 containerd
,重啟命令為:
systemctl restart containerd
containerd
配置完成!!
如下配置:
vim /etc/containerd/config.toml # 新增如下資訊
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
# 如下這些倉庫可以作為公共倉庫使用
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://docker.mirrors.ustc.edu.cn","http://hub-mirror.c.163.com"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
endpoint = ["https://gcr.mirrors.ustc.edu.cn"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
endpoint = ["https://gcr.mirrors.ustc.edu.cn/google-containers/"]
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."quay.io"]
endpoint = ["https://quay.mirrors.ustc.edu.cn"]
# 內部私有倉庫配置
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."www.myharbor.com"]
endpoint = ["https://www.myharbor.com/"]
[plugins."io.containerd.grpc.v1.cri".registry.configs]
# 內部私有倉庫認證資訊
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com"] # 這行不確定要不要寫上
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".tls]
insecure_skip_verify = false # 是否跳過證書認證
ca_file = "/etc/containerd/www.myharbor.com/ca.crt" # CA 證書
[plugins."io.containerd.grpc.v1.cri".registry.configs."www.myharbor.com".auth]
username = "test" # 在harbor裡單獨建立的使用者,授權訪問指定專案
password = "Test123456"
配置 Docker
在 /etc/docker/daemon.json
檔案中加入如下配置:
{
"insecure-registries": [
"test.registry.com",
"test.registry.com1"
]
}
修改之後重啟 docker 即可,重啟命令為:
systemctl restart docker
docker
配置完成!!
配置 CRI-O
修改 /etc/crio/crio.conf 配置檔案:
insecure_registries = ["test.registry.com"]
重啟 crio:
systemctl restart crio
crio
配置完成!!