containerd 配置使用私有映象倉庫 harbor

牛奔發表於2024-04-28

前言

​當要從非安全的映象倉庫中進行 PullPush 時,會遇到 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 配置完成!!

相關文章