kubernetes使用私有仓库harbor创建Pod

Mac上安装harbor

推送镜像到私有harbor仓库

上述两篇日记为本次练习的前置条件。

环境信息如下:

harbor版本是 v2.10.2

kubernetes版本是v1.28.0

containerd版本是 1.6.22

一、创建Robot Account并赋予权限

登录到Harbor的Web界面。

导航到项目(Project)页面。

选择你希望Kubernetes拉取镜像的项目。

在左侧菜单中选择"Robot Accounts"。

点击"New Robot Account"按钮。

填写机器人账户的名称和描述。

在权限(Permissions)部分,选择以下选项:

资源类型(Resource Type): Repository

操作(Actions): Pull

点击创建(Create)按钮。

创建后会生成一个用户名和密码(Token)。请记住这些凭证,因为稍后配置Kubernetes时需要使用。

一顿操作猛如虎,最后要拿到这么个结果:

二、Containerd拉取私有harbor仓库配置步骤

1、更新 Kubernetes 节点信任存储

将harbor的 server.crt 复制到每个 Kubernetes 节点,并更新 CA 证书:

复制代码
sudo cp server.crt /usr/local/share/ca-certificates/server.crt
sudo update-ca-certificates

2、配置 containerd 以信任私有仓库的证书

可以在 containerd 的配置文件中添加认证信息,这样 containerd 就能使用这些信息来访问需要身份验证的 Harbor 仓库。编辑 containerd 配置文件,通常是 /etc/containerd/config.toml。

复制代码
[plugins."io.containerd.grpc.v1.cri".registry.configs]
        [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.igmwx.com".tls]
          ca_file = "/usr/local/share/ca-certificates/server.crt"
        [plugins."io.containerd.grpc.v1.cri".registry.configs."harbor.igmwx.com".auth]
          username = "robot$robot"
          password = "jKEFMpgr72JofnBKAdYimdnegHyIV5RI"

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
         [plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor.igmwx.com"]
           endpoint = ["https://harbor.igmwx.com", "http://harbor.igmwx.com"]

3、重启containerd

复制代码
sudo systemctl restart containerd

4、测试拉取镜像

尝试拉取镜像以验证配置是否正确。

复制代码
sudo ctr images pull harbor.igmwx.com/zhangzk/tomcat-8.5.100-centos7.9:1.0

出现如下信息就表示OK啦:

二、Kubernetes Secret 认证配置步骤

在 Kubernetes 环境中,通过使用 Secret 来管理私有仓库的认证信息,可以避免在 containerd 的 config.toml 文件中配置 username 和 password。然而,为了确保 containerd 信任私有仓库的证书,仍然需要在 config.toml 文件中配置证书路径。通过这种方式,可以确保 Kubernetes 在拉取私有仓库的镜像时既安全又高效。

1、创建 Docker Registry Secret

使用 kubectl create secret docker-registry 命令来创建包含私有仓库认证信息的 Secret:

复制代码
kubectl create secret docker-registry docker-registry-creds  \
--docker-server="harbor.igmwx.com"  \
--docker-email=182833333@126.com  \
--docker-username='robot$robot'  \
--docker-password='jKEFMpgr72JofnBKAdYimdnegHyIV5RI'

其中:

  • docker-registry-creds是本次创建的Secret的名称。
  • harbor.igmwx.com 是Harbor服务器的URL。
  • robotrobot 是生成的机器人账户名称(例如:robotaccount_name)。
  • jKEFMpgr72JofnBKAdYimdnegHyIV5RI 是生成的机器人账户密码(Token)。
  • 182833333@126.com 可以是任意有效的电子邮件地址。

2、在 Pod 或 Deployment 中引用该 Secret

在 Kubernetes 部署文件中,使用 imagePullSecrets 字段来引用刚才创建的 Secret(docker-registry-creds):

复制代码
apiVersion: v1
kind: Pod
metadata:
  name: tomcat
  labels:
    app: tomcat
spec:
  containers:
 - name: tomcat
   image: harbor.igmwx.com/zhangzk/tomcat-8.5.100-centos7.9:1.0
   ports:
   - containerPort: 80
  imagePullSecrets:
   - name: docker-registry-creds
相关推荐
文静小土豆16 小时前
Java 应用上 K8s 全指南:从部署到治理的生产级实践
java·开发语言·kubernetes
努力搬砖的咸鱼16 小时前
Label 与 Selector:Kubernetes 资源选择的核心机制
微服务·云原生·容器·架构·kubernetes
Devin~Y21 小时前
大厂Java面试实战:Spring Boot/WebFlux、Redis+Kafka、K8s可观测性与Spring AI RAG/Agent三轮连环问
java·spring boot·redis·kafka·kubernetes·resilience4j·spring webflux
密瓜智能1 天前
从 Device Plugin 到 DRA:GPU 调度范式升级与 HAMi-DRA 实践
人工智能·kubernetes·开源·密瓜智能
A-刘晨阳1 天前
Kubernetes 部署 MySQL 一主两从集群(StatefulSet + Job 初始化主从复制)
运维·mysql·adb·kubernetes·主从复制
晨旭缘1 天前
GitLab CICD 中 K8s 部署:BOM 头与 YAML 格式全解
容器·kubernetes·gitlab
刘~浪地球2 天前
云原生与容器--Kubernetes 生产环境部署实战
云原生·容器·kubernetes
老卢聊运维2 天前
从零理解 CRD 与 Operator:如何扩展 Kubernetes
容器·kubernetes
老卢聊运维2 天前
CoreDNS配置详解:forward、cache、rewrite插件最佳实践指南
运维·云原生·kubernetes