# Helm的Repo仓库和Docker Registry类似,这个Chart库可用来存储和共享打包
# Chart仓库其实就是带有index.yaml索引文件和若干个已打包的Chart的HTTP服务而已
# 自己托管Chart仓库非常简单,如阿里云的OSS、Github Pages,甚至创建一个简单服务器都可以
# --------------------------------------- Example
# 添加私有仓库
[root@localhost ~]# helm repo add bitnami https://charts.bitnami.com/bitnami
[root@localhost ~]# helm repo add ali-stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 输出现有仓库列表
[root@localhost ~]# helm repo list
# NAME URL
# bitnami https://charts.bitnami.com/bitnami
# ali-stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
# 从仓库更新Charts (相当于yum update) Make sure we get the latest list of charts
[root@localhost ~]# helm repo update
# Hang tight while we grab the latest from your chart repositories...
# ...Successfully got an update from the "ali-stable" chart repository
# ...Successfully got an update from the "bitnami" chart repository
# Update Complete. ⎈Happy Helming!⎈
# 在仓库中搜索并列出可安装的chart
[root@localhost ~]# helm search repo mysql | head -n 5
# NAME CHART VERSION APP VERSION DESCRIPTION
# ali-stable/mysql 0.3.5 Fast, reliable, scalable, and easy to use open-...
# bitnami/mysql 8.5.8 8.0.25 Chart to create a Highly available MySQL cluster
# ali-stable/percona 0.3.0 free, fully compatible, enhanced, open source d...
# bitnami/phpmyadmin 8.2.5 5.1.0 phpMyAdmin is an mysql administration
# --------------------------------------- 附
helm search hub
# 从Artifact Hub中查找并列出charts。Artifact Hub中存放了大量不同的仓库
# 可通过运行该命令找到公开可用的charts,如:helm search hub wordpress
# 新版中的helm search命令区分repo和hub (repo是自己手动添加的源)
# 其中hub是helm的中心库,各软件商需在这个hub仓库中把应用更新到最新之后用户才能搜索到 (类似dockerhub)
helm search repo
# 从添加(使用helm repo add命令)到本地客户端的仓库中查找,该命令基于本地数据进行搜索,无需互联网
# 推荐使用微软的Helm仓库
# stable: http://mirror.azure.cn/kubernetes/charts/
# incubator: http://mirror.azure.cn/kubernetes/charts-incubator/
# 公共的charts仓库地址
# https://hub.kubeapps.com/
# ---------------------------------------
# 若需自己创建Web服务器作为repo的话只需实现下面几个功能点即可
# 1.将索引文件和Chart置于服务器目录中
# 2.确保索引文件index.yaml可以在没有认证要求的情况下访问
# 3.确保YAML文件的正确内容类型(text/yaml 或 text/x-yaml)
基于 helm3 使用 harbor 作为 chart repo
# 设置context指定对应的namespace (不指定使用的是default)
# 这里是因为helm3的执行权限和 kubectl config 的权限是一致的 ...
kubectl config set-context <current-context> --namespace harbor
# 简化方式安装harbor (harbor的默认账号密码: admin/Harbor12345)
helm -n harbor install harbor goharbor/harbor \
--set persistence.enabled=false \
--set expose.type=nodePort \
--set expose.tls.enabled=false \
--set externalURL=http://192.168.10.196:30002
# 通过nodeport登录harbor的web页面,新建一个仓库 chart repo、新建一个 test 用户
# 添加repo到helm中
helm repo add harbor_repo http://192.168.1.1:30002/chartrepo/chart_repo
# 安装使用 helm-push 插件
helm plugin install https://github.com/chartmuseum/helm-push
# Push charts 到 harbor
helm push grafana-0.0.2.tgz harbor_repo --username test --password xxx
基于 helm2 创建内部 repo
helm serve --address 0.0.0.0:8879 --repo-path /data/helm/repo/ --url http://192.168.1.1:8879/charts/
# 更新 Helm Repository 的索引文件
cd /home/kubernetes/.helm/repository/local
helm repo index --url=http://192.168.100.211:8879 .
# 添加helm仓库
helm repo add local http://127.0.0.1:8879