使用harbor作为chart仓库实现内网部署
制作好的chart包可以传到chart仓库进行共享,chart仓库可以是公有仓库或者使用Harbor搭建的私有仓库。
本文使用的环境信息:
root@master1:~# kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready control-plane 22d v1.28.2
master2 Ready control-plane 22d v1.28.2
master3 Ready control-plane 22d v1.28.2
worker1 Ready <none> 22d v1.27.1
# helm 版本
root@master1:/tmp# helm version
version.BuildInfo{
Version:"v3.15.2", GitCommit:"1a500d5625419a524fdae4b33de351cc4f58ec35", GitTreeState:"clean", GoVersion:"go1.22.4"}
# harbor版本
root@master1:~# helm ls -n harbor
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
harbor harbor 2 2024-07-13 15:36:40.772521934 +0800 CST deployed harbor-1.15.0 2.11.0
关于chart仓库
chart仓库介绍
chart仓库是打包的chart存储和分享的位置。chart仓库由chart包和包含了仓库中所有chart索引的特殊文件index.yaml。 通常描述chart的index.yaml也托管在同一个服务器上作为来源文件。
基于OCI的注册中心
从Helm 3开始,可以使用具有 OCI支持的容器注册中心来存储和共享chart包。从Helm v3.8.0开始,默认启用OCI支持。
以下是几种chart可以使用的托管容器注册中心,都支持OCI,例如:
- Amazon ECR
- Azure Container Registry
- Docker Hub
- Google Artifact Registry
- IBM Cloud Container Registry
- JFrog Artifactory
同样的,harbor作为是一款云原生制品仓库,可以存储和管理容器镜像、Helm Chart 等 Artifact,同样启用了OCI支持。
本文使用harbor作为chart仓库。
上传chart到harbor
如果Harbor版本低于2.8,安装harbor时需要启用chartmuseum。
harbor启用helm chart仓库(harbor 2.8之前)
默认新版 harbor 不会启用 chart repository service,如果启用安装方式要添加一个参数 --with-chartmuseum
$ ./install.sh --with-chartmuseum
如果是后期修改配置文件,可以使用 ./prepare --with-chartmuseum
后,再 docker-compo