k8s:安装 Helm 私有仓库ChartMuseum、helm-push插件并上传、安装Zookeeper
ChartMuseum 是 Kubernetes 生态中用于存储、管理和发布 Helm Charts 的开源系统,主要用于扩展 Helm 包管理器的功能
核心功能
集中存储:提供中央化仓库存储Charts,支持版本管理和权限控制。
跨集群部署:支持多集群环境下共享Charts,简化部署流程。
离线部署:适配无网络环境,可将Charts存储在本地或局域网内。
HTTP接口:通过HTTP协议提供服务,用户可通过Helm客户端上传、下载及搜索Charts。
1.docker启动ChartMuseum
docker run -d \
--name chartmuseum \
-p 8080:8080 \
-v $(pwd)/charts:/charts \
-e STORAGE=local \
-e STORAGE_LOCAL_ROOTDIR=/charts \
chartmuseum/chartmuseum:latest
-v $(pwd)/charts:/charts:将当前目录下的 charts/ 文件夹作为存储路径。
1.1给charts文件夹权限
chmod -R 777 /app/KubeSphere/charts
2.添加私有仓库到 Helm 客户端
在你的 Helm 客户端机器上执行:
helm repo add sinopsrepo http://172.23.123.117:8080
helm repo list
3.安装 helm-push 插件
cm-push 是一个 Helm 插件,允许你将本地 .tgz 格式的 Helm Chart 包上传到 ChartMuseum 或兼容的 Helm 仓库服务器(如 Harbor、Nexus、Jfrog Artifactory 等)
下载地址
https://github.com/chartmuseum/helm-push/releases/download/v0.10.4/helm-push_0.10.4_linux_amd64.tar.gz
3.1解压
#tar -zxvf helm-push_0.10.4_linux_amd64.tar.gz
3.2查看 Helm Home(插件安装路径)
HELM_PLUGINS_DIR=$(helm env | grep HELM_PLUGINS | cut -d '=' -f2 | tr -d '"')
[root@master bin]# echo $HELM_PLUGINS_DIR
3.3创建插件目录
mkdir -p "$HELM_PLUGINS_DIR/helm-push"
把下载好的 helm-push 放在"$HELM_PLUGINS_DIR/helm-push" 并解压
#tar -zxvf helm-push_0.10.4_linux_amd64.tar.gz
解压后包括/bin/helm-cm-push及plugin.yaml
3.4赋予可执行权限
chmod +x "$HELM_PLUGINS_DIR/helm-push/bin/helm-cm-push"
3.5验证插件
helm plugin list
4.上传zookeeper到 Chart
helm cm-push zookeeper-13.8.4.tgz sinopsrepo
5.查看私有仓库的组件
helm repo update(如果不执行该行代码,会导致最新上传的chart看不到)
helm search repo sinopsrepo
6.私有仓库安装 Helm Chart
helm repo update
helm install zookeeper sinopsrepo/zookeeper --version 13.8.4
7卸载
helm uninstall my-zookeeper
8.参数详解
⚙️ 通用设置
参数 | 环境变量 | 含义 |
---|---|---|
--access-token string | HELM_REPO_ACCESS_TOKEN | 使用 Token 认证时提供访问令牌(例如 GitHub Personal Access Token)。 |
-a, --app-version string | - | 覆盖 Chart 中的 appVersion 字段。 |
--auth-header string | HELM_REPO_AUTH_HEADER | 自定义认证请求头字段名称。 |
--ca-file string | HELM_REPO_CA_FILE | 指定 CA 证书文件路径,用于验证 HTTPS 服务器。 |
--cert-file string | HELM_REPO_CERT_FILE | 客户端 SSL 证书文件路径(用于双向 TLS)。 |
--check-helm-version | - | 输出当前使用的 Helm 主版本号(2 或 3)。 |
--context-path string | HELM_REPO_CONTEXT_PATH | ChartMuseum 的上下文路径(如 /charts )。 |
--debug | - | 开启调试模式,显示更详细的日志信息。 |
-d, --dependency-update | - | 打包前更新依赖项(从 requirements.yaml 到 charts/ 目录)。 |
-f, --force | - | 即使远程仓库已存在相同版本也强制推送。 |
-h, --help | - | 显示帮助信息。 |
🏠 Helm 配置目录
参数 | 默认值 | 含义 |
---|---|---|
--home string | /root/.helm | 设置 Helm 的配置根目录(可覆盖环境变量 $HELM_HOME )。 |
🛡️ Tiller 设置(Helm 2 特有)
Helm 3 已移除 Tiller,以下参数主要用于兼容旧 Helm 2 行为。
参数 | 默认值 | 含义 |
---|---|---|
--host string | - | Tiller 地址(若使用 Helm 2)。 |
--tiller-namespace string | kube-system | Tiller 所在命名空间。 |
--tiller-connection-timeout int | 300 秒 | 连接 Tiller 的超时时间。 |
🔐 HTTPS 和认证相关
参数 | 环境变量 | 含义 |
---|---|---|
--insecure | HELM_REPO_INSECURE | 忽略 HTTPS 证书校验(适用于自签名证书)。 |
--key-file string | HELM_REPO_KEY_FILE | 客户端 SSL 密钥文件路径(用于双向 TLS)。 |
--keyring string | - | GPG 公钥环路径(默认:~/.gnupg/pubring.gpg )。 |
-p, --password string | HELM_REPO_PASSWORD | HTTP Basic Auth 密码。 |
-u, --username string | HELM_REPO_USERNAME | HTTP Basic Auth 用户名。 |
🕒 超时控制
参数 | 默认值 | 含义 |
---|---|---|
-t, --timeout int | 30 秒 | 等待 ChartMuseum 响应的最大时间(秒)。 |
📦 Chart 元数据覆盖
参数 | 含义 |
---|---|
-v, --version string | 覆盖 Chart 的版本号(version 字段)。 |