VMWare Harbor 在 Kubernetes 上的部署

2023年 7月 9日 102.3k 0

VMWare 家的 Harbor 是我目前能免费得到的最好的私库管理工具了,除了解决了基础的镜像存储、权限控制这些基础能力之外,还具备 对 DevOps 非常有帮助的镜像同步功能。

原本这一产品只提供了基于 Docker Composer 的部署方法,后由社区为其新增了 Kubernetes 的部署支持。本文大部分基于官方文档而来。

部署过程大概分这样几个步骤:

  • 环境准备
  • 配置
  • 运行
  • 环境准备

    • 首先是需要有一个正常运行的 Kubernetes 环境,需要提供对持久卷和 Config Map 的支持,没记错的话应该是 1.2。
    • 下文需要执行的脚本需要 Python 2.6 的支持。

    镜像获取和上传

    https://github.com/vmware/harbor/releases可以找到离线版本的二进制文件包。

    目前的版本是harbor-offline-installer-0.5.0.tgz,解压之后其中包含一个harbor.0.5.0.tgz的镜像包,使用docker load -i harbor.0.5.0.tgz命令装入后,再用docker images列表查看,会看到以下几个镜像:

    • vmware/harbor-log:0.5.0:Harbor 日志服务
    • vmware/harbor-jobservice:0.5.0:Harbor 核心
    • vmware/harbor-ui:0.5.0:Harbor 界面
    • vmware/harbor-db:0.5.0:数据库,其实是个 MySQL,附带了初始化脚本。

    另外还需要获取 Registry 2.x 和 Nginx 的镜像。

    接下来就需要把这几个镜像进行tag/push操作,推送到 Kubernetes 的私库。

    git clone https://github.com/vmware/harbor.git 获得源码,其中的make文件夹包含我们需要的 Kubernetes Yaml 文件和相关的支持文件。

    生成配置文件

    实际上这一过程之前首先要编辑 make 目录下的 harbor.cfg 文件,来完成一些个性配置。

    进入源码的make/kubernetes目录,python prepare 运行脚本之后,利用git status命令可以看到,生成了几个新的*.cm.*文件,其中包含了各个组件的 Config Map 内容。

    配置

    持久卷(PV)

    这里利用持久卷 (pv/pvc) 的方式来配置各个组件的存储。
    根据集群的存储环境(例如 ceph/glusterfs 等)和容量需求,对每个文件分别进行持久卷类型和容量的修改。
    修改完毕之后,利用kubectl apply -f pv命令创建这些 PV 和 PVC 对象。

    数据库(MySQL)

    • rc 文件:修改 image 行,把镜像指向之前的 harbor-db 在私库中的地址。
    • svc 文件:一般无需修改,为调试方便,可以更改服务类型暴露 MySQL 端口。
    • cm 文件:MySQL 的 root 密码。

    存盘,运行。

    私库(Registry)

    • rc 文件:只需要修改镜像地址。
    • cm 文件:这里可以根据实际需要,对涉及到的证书等进行修改。
    • svc 文件:因为 Habor 将代替 Registry 提供服务,因此无需暴露 Registry 端口。

    存盘,运行。

    Jobeservice

    • rc 文件:镜像地址。
    • cm 文件:这里有一些核心配置,例如 MySQL 连接信息,私库地址等,只是玩玩的话可以不用修改。

    存盘,运行。

    UI

    • rc 文件:镜像地址。
    • cm 文件:此处的配置主要是 LDAP、MySQL 和认证方面的修改。如果之前修改过数据库密码,或者有自己的证书,都可以在这里进行修改。

    存盘运行。

    Nginx

    负责反向代理 UI 组件。

    • rc 文件:指向我们 PUSH 到私库的 Nginx 地址。
    • cm 文件:此处需要注意,这里并没有提供证书内容,因此有两个选择:
      • 禁用 https 访问
      • 或者自行提供证书。
    • svc 文件:根据实际需要设置

    运行。

    尾声

    至此,Harbor 就在 Kubernetes 集群上运行起来了。接下来就可以按照网上的其他教程,来进行进一步的配置和应用了。

    相关文章

    KubeSphere 部署向量数据库 Milvus 实战指南
    探索 Kubernetes 持久化存储之 Longhorn 初窥门径
    征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
    那些年在 Terraform 上吃到的糖和踩过的坑
    无需 Kubernetes 测试 Kubernetes 网络实现
    Kubernetes v1.31 中的移除和主要变更

    发布评论