Harbor在v1.6版本开始支持Helm Chart仓库功能,这样就可以利用 harbor 同时管理镜像和 helm charts 了,无需另外部署一套Helm Chart系统。在harbor中,chart仓库由chartmuseum以插件的方式提供,可以自己选择安装或者不安装。
ChartMuseum:提供了API管理非OCI规范的Helm Chart。在安装了ChartMuseum组件后,当用户使用“helm”命令向Harbor推送或拉取Chart时,Harbor的Core组件会首先收到请求,在校验后将请求转发给ChartMuseum进行Chart文件的读写。
随着兼容OCI规范的Helm Chart在社区上被更广泛地接受,Helm Chart能以Artifact的形式在Harbor中存储和管理,不再依赖ChartMuseum,因此Harbor会在后续版本中移除对ChartMuseum的支持。
虽然被废弃,但是并不意味着不能用Harbor存储chart了,而是用 OCI chart替代。
环境说明
Harbor版本: 2.6.2Harbor地址:https://192.168.2.30:443部署路径: /App/harbor证书位置:/app/harbor/ssl/
在absolute_url参使用ChartMuseum组件时,客户端获取到的Chart的index.yaml中包含的URL是否为绝对路径。在不配置该项时,ChartMuseum组件会返回相对路径,默认为disabled。
$ vim harbor.yml
chart:
# Change the value of absolute_url to enabled can enable absolute url in chart
absolute_url: enabled
enabled表示使用绝对路径!
$ Docker-compose stop
执行./prepare将新的配置注入到各个组件中。
$ ./prepare
在执行install.sh安装时,通过--with-chartmuseum参数安装chart插件,安装完后会自动启动Harbor。
$ ./install.sh --with-notary --with-trivy --with-chartmuseum
✔ ----Harbor has been installed and started successfully.---- #输出该信息则表示安装成功
通过docker-compose ps命令可以看到harbor的组件中多了个chartmuseum的容器。
$ docker-compose ps
登录Harbor UI管理界面:【项目】==>【library】==> 【Helm Charts】
通过Harbor UI界面可以将制作好的chart包直接上传到Harbor,但是命令行上传、下载Chart则需要安装helmpush插件。
通常在kube.NETes的master节点进行操作,前提是已经安装好helm。
$ helm plugin install https://github.com/chartmuseum/helm-push
Downloading and installing helm-push v0.9.0 ...
https://github.com/chartmuseum/helmpush/releases/download/v0.9.0/helmpush_0.9.0_linux_amd64.tar.gz
Installed plugin: push
$ helm plugin list
NAME VERSION DESCRIPTION
cm-push 0.10.3 Push chart package to ChartMuseum
$ ls /root/.local/share/helm/plugins/helmpush/bin/helmpush
/root/.local/share/helm/plugins/helm-push/bin/helmpush
登录Harbor管理界面,进入要将chart包上传的projects(项目),选择【Helm Charts】,然后选择【上传】按钮将本地电脑中制作好的Chart包上传到Harbor中。
然后点击【上传】
$ helm repo list
NAME URL
bitnami https://charts.bitnami.com/bitnami
ali-incubator https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/
$ helm search repo bitnami | head -2
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami/airflow 14.0.13 2.5.1 Apache Airflow is a tool to express and execute...
$ helm pull bitnami/airflow
$ ls
airflow-14.0.13.tgz
$ scp 192.168.2.30:/app/harbor/ssl/{ca.pem,harbor.pem,harbor-key.pem} ./
$ helm repo add harbor-library https://192.168.2.30:443/chartrepo/library --username admin --password Harbor12345
--ca-file ca.pem --key-file harbor-key.pem --cert-file harbor.pem
"harbor-library" has been added to your repositories
harbor-library:自定义的repo名称;https://192.168.2.30:443/chartrepo/library为chart连接地址,chartrepo固定格式,“library”为chart所在项目的名称,请结合自身的实际环境修改。--username:指定Harbor的用户名(该用户必须对project对象拥有权限);--password:指定密码;--ca-file:为harbor颁发证书的颁发者证书;--key-file: Harbor的私钥;--cert-file:指定harbor的证书;
参数 |
含义 |
Cfssl工具格式 |
Openssl工具格式 |
--ca-file |
CA证书 |
ca.pem |
ca.crt |
--cert-file |
证书文件 |
harbor.pem |
harbor.crt |
--key-file |
私钥 |
harbor-key.pem |
|
$ helm repo list
NAME URL
harbor-library https://192.168.2.30:443/chartrepo/library
格式:helm cm-push chart包 repo名称
$ helm cm-push airflow-14.0.13.tgz harbor-library
--ca-file ca.pem --key-file harbor-key.pem
--cert-file harbor.pem
使用helm包管理工具将存放在Harbor中的chart包部署到kubernetes集群中
在Harbor UI点击chart名称即可查看该chart的概要信息,包括chart介绍、安装、卸载、配置等,可以根据概要信息来使用相关的管理命令。
图5.1-1
图5.1-2
图5.1-3
添加的命令格式:
$ helm repo add --ca-file <ca file>
--cert-file <cert file> --key-file <key file>
--username <username>
--password <password> <repo name> https://192.168.2.22/chartrepo/lidabai
将harbor相关的证书拷贝到Helm所在服务器(一般是kubernetes集群中的master节点)。
$ scp 192.168.2.30:/app/harbor-cert/{ca.pem, harbor.pem, harbor-key.pem} ./
$ helm repo add my-harbor https://192.168.2.22/chartrepo/lidabai
--username admin --password Harbor12345
--ca-file ca.pem --cert-file harbor.pem --key-file harbor-key.pem
输出结果:
"my-harbor" has been added to your repositories
表示添加成功!
$ helm repo list
NAME URL
aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
my-harbor https://192.168.2.22/chartrepo/lidabai
$ helm install --ca-file <ca file> --cert-file <cert file> --key-file <key file>
--username=<username> --password=<password> --version 2.0.1 <repo name>/memcached
$ helm search repo my-harbor
NAME CHART VERSION APP VERSION DESCRIPTION
my-harbor/memcached 2.0.1 Free & open source, high-performance, distribut...
$ helm install memcached-test
--ca-file ca.pem --cert-file harbor.pem
--key-file harbor-key.pem
> --username=admin --password=Harbor12345
--version 2.0.1 my-harbor/memcached