? ? ? ? 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 ?字段)。 |