helm chart 仓库chartmuseum

安装 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

posted @ 2024-07-29 16:46  滴滴滴  阅读(116)  评论(0编辑  收藏  举报