簡體   English   中英

如何在從私有存儲庫中提取圖像時跳過 crictl (containerd CR) 的 TLS 證書檢查

[英]How to skip TLS cert check for crictl (containerd CR) while pulling the images from private repository

我已經安裝了 k8s 1.24 版本,並且 containerd (containerd://1.5.9) 是我的設置 (ubuntu 20.04) 的 CR。

我還在我的 VM 上安裝了 docker 並在 /etc/docker/daemon.json 下添加了我的私有存儲庫,並進行了以下更改:

{   "insecure-registries" : ["myPvtRepo.com:5028"] }

當我在使用 docker pull myPvtRepo:123/image 使用docker login myPvtRepo:123命令登錄到我的 pvt repo 后運行docker pull myPvtRepo:123/image時,我能夠在使用crictl pull myPvtRepo:123/image運行相同命令的同時拉取圖像,我正面臨:

E0819 06:49:01.200489 162610 remote_image.go:218] “從圖像服務中提取圖像失敗” err="rpc 錯誤:代碼 = 未知描述 = 無法提取和解壓縮圖像 "myPvtRepo.com:5028/centos:latest": 失敗解析引用“myPvtRepo.com:5028/centos:latest”:請求失敗:Head https://myPvtRepo.com::5028/v2/centos/manifests/latest :x509:由未知權威機構簽署的證書“image= “myPvtRepo.com::5028/centos:latest” FATA[0000] 拉取圖像:rpc 錯誤:代碼 = Unknown desc = 拉取和解壓圖像失敗 “myPvtRepo.com::5028/centos:latest”:無法解析參考“myPvtRepo.com:5028/centos:latest”:請求失敗:Head https://myPvtRepo.com::5028/v2/centos/manifests/latest :x509:由未知權威機構簽署的證書

僅供參考,我已經用以下內容修改了 /etc/containerd/config.toml。

version = 2

[plugin."io.containerd.grpc.v1.cri".registry.configs."myPvtRepo.com:5028".tls]
    insecure_skip_verify = true

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
     endpoint = ["https://myPvtRepo.com:5028", "https://myPvtRepo.com:5038", "https://myPvtRepo.com:5037",
 "https://myPvtRepo.com:5039"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."IP:5000"]
     endpoint = ["http://IP:5000"]

[plugins."io.containerd.grpc.v1.cri".registry.mirrors."IP:5000"]
     endpoint = ["http://IP:5000"]

我還修改了 containerd 的端點以指向 containerd 的襪子。

即使在為我的 pvt 存儲庫設置了insecure_skip_verify = true並重新啟動 containerd 服務之后,你能幫我理解並解決這個問題嗎?

我有一個解決方案:

cd /usr/local/share/ca-certificates/
curl -L --remote-name http://your-artifacts.com/xyz-bundle.crt
/usr/sbin/update-ca-certificates

這對我有用。

還要確保在 /etc/crictl.yaml 下更新您的端點

runtime-endpoint: unix:///run/containerd/containerd.sock 
image-endpoint: "" 
timeout: 0 
debug: false 
pull-image-on-create: false 
disable-pull-on-run: false

您需要為私有注冊表指定hosts.toml文件並添加skip-verify = true

參考: https://github.com/containerd/containerd/blob/main/docs/hosts.md

腳步:

  1. 創建文件夾: mkdir -p /etc/containerd/certs.d/<your registry>
  2. /etc/containerd/config.toml中添加這些配置:
     [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/etc/containerd/certs.d"
  3. 在剛剛創建的文件夾下創建和編輯hosts.toml
     server = "https://<your registry>" [host."https://<your registry>"] capabilities = ["pull", "resolve"] skip_verify = true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM