文章目錄
將打包好的 Helm Chart Push 至 Nexus
之前筆記 打包 Helm Chart 簡單紀錄該如何打包 Helm Chart,但打包後的 Helm Chart 如果無法提供其他 server 使用就失去意義了,所以延伸紀錄將打包後的 Helm Chart 推送至 Nexus 的作法
基本環境說明
- macOS Mojave 10.15.2
- Helm v2.16.1
Nexus 記得使用支援
Helm
的版本我不想多花時間從無到有建置 nexus-repository-helm 所以直接使用 docekr hub 包好的 image
docker run -d -p 8081:8081 --name nexus nngplatform/nexus-repository-helm
Push 方式
使用
curl
語法
curl -v -u {帳號}:{密碼} --upload-file {helm chart file} {nexus helm url}
範例
curl -v -u admin:pass.123 --upload-file yowkochart-1.0.1.tgz http://localhost:8081/repository/helm/
使用 plugin -
helm-nexus-push
安裝 plugin
helm plugin install --version master https://github.com/sonatype-nexus-community/helm-nexus-push.git
實際 push
先 login
語法
helm nexus-push {helm repo 名稱} login -u {帳號} -p {密碼} helm nexus-push {helm repo 名稱} {helm chart}
範例
helm nexus-push test login -u admin -p pass.123 helm nexus-push test yowkochart-2.0.0.tgz
直接 push
語法
helm nexus-push {helm repo 名稱} {helm chart} -u {帳號} -p
執行後會要求輸入密碼
範例
helm nexus-push test yowkochart-2.0.0.tgz -u admin -p
心得
helm-nexus-push
也支援直接 push chart 資料夾,而實際執行時會在真正 push 前直接做一次 helm package,需要留意的是這個動作沒有提供設定版本的參數,所以會依 helm chart 的慣例使用 Chart.yaml
的 version
值作為 chart version
另外是之前我常卡在 helm nexus-push 時會直接使用 -p {密碼}
讓執行時的 username 變為 ''
造成 401 Unauthorized
錯誤,這個我看了原始碼後覺得應該是防呆機制,所以要嘛先 login,要嘛就是 push 只帶 -u
,再輸入密碼
最後我一開始覺得奇怪的點是:用原生 helm cli 無法成功 push ,只能透過 curl
與 helm-nexus-push
(背後也是使用 curl
),後來猜測應該是 nexus 沒有實作 helm repository api 造成的
參考資訊
文章作者 Yowko Tsai
上次更新 2020-12-11
授權合約
本部落格 (Yowko's Notes) 所有的文章內容(包含圖片),任何轉載行為,必須通知並獲本部落格作者 (Yowko Tsai) 的同意始得轉載,且轉載皆須註明出處與作者。
Yowko's Notes 由 Yowko Tsai 製作,以創用CC 姓名標示-非商業性-相同方式分享 3.0 台灣 授權條款 釋出。