安装 harbor 的 helmchart repository
默认新版 harbor 不会启用 chart repository service,如果需要管理 helm,我们需要在安装时添加额外的参数,例如:
默认安装是下面这样的
$ cd /usr/local/harbor
$ ./install.sh
启用 chart repository service 服务的安装方式要添加一个参数 --with-chartmuseum
$ cd /usr/local/harbor
$ ./install.sh --with-chartmuseum
如果是后期修改配置文件,可以使用 ./prepare --with-chartmuseum 后,再 docker-compose up -d 启动容器
等待安装,你户看到如下类似提示
Creating chartmuseum ... done
然后,就可以登录 harbor 来管理 helm charts 了。
发布 helm charts
方式一、基于 UI 的可视化上传
这种方式没什么可说的,使用浏览器登录 harbor 后,在对应的管理界面操作即可,如下图:
方式二、基于命令的 CLI 推送
更多时候基于第1种UI界面的上传并不能满足我们的实际需求,大部分情况我们都是要通过脚本发布helmchart 的。
1、安装插件
为了能使用命令推送,我们需要安装并使用 helm push 插件包,地址:https://github.com/chartmuseum/helm-push/releases
a) 在线安装插件:
helm plugin install https://github.com/chartmuseum/helm-pus
b) 离线安装插件:
下载安装包 helm-push_0.10.1_linux_amd64.tar.gz,再使用命令 helm env 获取 HELM_PLUGINS 路径,然后放置和解压安装包,最后使用 helm plugin list 查看结果,如下:
[root@shy-test chart]# helm env | grep HELM_PLUGINS
HELM_PLUGINS="/root/.local/share/helm/plugins"
[root@shy-test chart]# mkdir -p /root/.local/share/helm/plugins/helm-push
[root@shy-test chart]# mv helm-push_0.10.1_linux_amd64.tar.gz /root/.local/share/helm/plugins/helm-push/
[root@shy-test chart]# cd /root/.local/share/helm/plugins/helm-push/
[root@shy-test helm-push]# tar -xzvf helm-push_0.10.1_linux_amd64.tar.gz
[root@shy-test helm-push]# helm plugin list
NAME VERSION DESCRIPTION
cm-push 0.10.1 Push chart package to ChartMuseum
2、添加 harbor 仓库到本地 helm 仓库列表
先到 harbor 中创建一个项目,或者直接使用你已经存在的项目也行,下面的脚本示例是以创建的项目 helmchart_repo 为例的。
# 查看本地仓库列表(列出的是我已经添加其他仓库)
[root@shy-test chart]# helm repo list
NAME URL
rancher-stable https://nexus.shanhy.com/repository/helm_rancher_stable/
# 添加仓库地址到本地列表(其中 myharbor 为这个仓库地址在 helm 本地的名称,连接是仓库URL,后面是登录 harbor 的用户名和密码)
# URL格式:http(s)://{harbor域名或iP:端口(如果默认443或80可不加)}/chartrepo/{yourHarborProjectName}
[root@shy-test chart]# helm repo add myharbor https://harbor.shanhy.com/chartrepo/helmchart_repo --username admin --password harbor12345
"myharbor" has been added to your repositories
# 再查看(发现已添加成功)
[root@shy-test chart]# helm repo list
NAME URL
rancher-stable https://nexus.shanhy.com/repository/helm_rancher_stable/
myharbor https://harbor.shanhy.com/chartrepo/helmchart_repo
# 更新本地仓库缓存内容
[root@shy-test chart]# helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "myharbor" chart repository
...Successfully got an update from the "rancher-stable" chart repository
Update Complete. ⎈Happy Helming!⎈
特别说明:
1.harbor 仓库 URL 中的 chartrepo 是固定值。
2.在操作之前,请务必先在 harbor 中创建好项目,例如 helmchart_repo 即为我先创建好的项目名称。
3.如果你还是搞不清这个URL,可以在harbor界面中上传一个外面下着的 chart 包,上次成功后进入这个 chart 详细页面,在 “概要这个Tab” 的最底部区域,harbor会告诉你在本地添加仓库的URL和命令。
如果你的 https 报错,可以添加 ca 证书尝试,至少我这里没有出现错误,https 直接成功。
携带 harbor 证书的示例如下:
helm repo add --ca-file /data/harbor/certs/ca.crt --cert-file /data/harbor/certs/harbor.shanhy.com.crt --key-file /data/harbor/certs/harbor.shanhy.com.key --username admin --password harbor12345 myharbor https://harbor.shanhy.com/chartrepo/helmchart_repo
3、推送 chart 以及 chart 的更多操作
a) 打包 chart
打包的步骤非三言两语能述,此处略。
b) 推送 chart 示例
# 推送chart文件夹方式
helm push mychartdemo myharbor
# 推送chart压缩包方式
helm push mychartdemo-1.0.1.tgz myharbor
其中 myharbor 为上面已经添加到 helm 本地仓库的名称。
c) 搜索 chart 示例
[root@shy-test chart]# helm search repo rancher
NAME CHART VERSION APP VERSION DESCRIPTION
rancher-stable/rancher 2.6.2 v2.6.2 Install Rancher Server to manage Kubernetes clu...
d) 拉取 chart 示例
# myharbor 和 mychartdemo 分别对应本地 repo 名称和远程 chart 名称
[root@shy-test chart]# helm pull myharbor/mychartdemo
命令执行后,会在当前目录出现一个 tgz 文件。
e) 安装 chart 示例
# 从 helm repo 直接安装(无需先pull),其中 install 后跟的 mychartdemo 是命名,不指定的话会自动产生随机名称,推荐手工设定别让随机生成
[root@shy-test chart]# helm install mychartdemo myharbor/mychartdemo
# 或者从本地压缩文件安装
[root@shy-test chart]# helm install mychartdemo-1.0.1.tgz
# 也可以从本地目录安装
[root@shy-test chart]# helm install mychartdemo
f) 查看已安装 charts
# 注意此处不是 helm repo list
[root@shy-test chart]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
mychartdemo default 1 2021-12-10 19:00:26.48673122 +0800 CST deployed mychartdemo-1.0.1
g) 删除helm charts应用
# mychartdemo 是 helm list 第一列的 NAME,如果 namespace 不是 default,也需要加上
[root@shy-test chart]# helm uninstall mychartdemo
[root@shy-test chart]# helm -n default uninstall mychartdemo
(END)
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/catoop/article/details/121848279