遠端 Mac上的 Helm CI 常同時打
oci:// 與 Chart 儲存庫;跨境場景下,瓶頸多在429/401與併發 install,而非模板本身。下文為決策矩陣與指令示例;延伸:部落格列表、GHCR 矩陣、構建池 FAQ、首頁。
場景與風險
典型流程:helm pull oci:// 後再 helm upgrade --install;混用 HTTP Chart 庫時 401/429/TLS 訊息易混淆。
- 逾時/卡住:跨境 RTT 與多層 blob;疊加高併發 install 時共享節點易排隊。
- 429:WAF/Registry 限速;硬重試忽略
Retry-After會與登入刷新互搶。 - 401/403:權杖過期、scope 不足,或 login host 與
oci://主機不一致。 - x509/plain-http:企業 CA 未信任;
--plain-http僅限內網 HTTP registry,勿在公網 CI 預設開啟。
決策矩陣(併發、--plain-http、認證、退避)
決策矩陣
| 維度 | 建議起點 | 決策備註 |
|---|---|---|
| 併發 install/upgrade | 共享:1–2;專用:2–4 | 與 pull 錯開;429 先降併發 |
--plain-http | 預設關;僅內網 HTTP 加旗標 | CI 註解標記,防誤用公網 |
| 認證/輪換 | 短期權杖覆蓋最長 job+10–15 分;唯讀機器人12–24 h輪替 | 拉取前集中 login;避免同秒多 job 刷新 |
| 429 退避(秒) | 10+jitter→20→40→80,頂300;Retry-After 優先 | wrapper 記錄狀態碼 |
| 5xx/重置(秒) | 2–4+jitter→8→16→32,頂120;最多5–7次 | 暫態過載;設上限 |
| 快取 | 固定 HELM_CACHE_HOME;空間約 18–20% 警戒 | 與容器暫存同卷一併看 |
可執行清單(login、helm pull oci://、環境變數)
1
登入:REGISTRY_HOST 須與 oci:// 一致;權杖走 stdin。
2
拉取:先 helm pull 固定版再 install,減少重複請求。
3
併發:用 CI 變數或隊列限制同機平行 helm 步驟。
export HELM_CACHE_HOME="${CI_WORKSPACE:-$HOME}/.cache/helm"
export HELM_CONFIG_HOME="${CI_WORKSPACE:-$HOME}/.config/helm"
echo "$REGISTRY_TOKEN" | helm registry login "$REGISTRY_HOST" --username "$REGISTRY_USER" --password-stdin
helm pull oci://$REGISTRY_HOST/$CHART_REPO_PATH --version 1.2.3
# 內網 HTTP:helm pull oci://registry.local/ns/chart --version 1.0.0 --plain-http
# 重試:for i in 1 2 3 4 5; do helm pull oci://... && break || sleep $((2**i)); done
同機併發可用 flock/隊列;代理見 跨境對照。
FAQ
429:尊重 Retry-After;降 install 併發;單一登入步驟避免刷新風暴。
401/403:login host=oci:// 主機;檢 scope 與長 job 權杖過期。
x509:安裝企業 CA;勿長期關閉驗證;以最小 helm pull 驗證。
總結引導購買
要穩定拉取:分開429/5xx 退避、對齊權杖與 oci 主機、節流併發 install。選節點時:共享池先保守併發與快取路徑;需可重現延遲樣本可選專用 Apple Silicon。定價、購買、說明中心、部落格、首頁皆免登入。
總結:矩陣固定併發/退避;login 與 oci:// 對齊減 401;HELM_CACHE_HOME 與水位避免誤判。頁首含 BlogPosting、BreadcrumbList、FAQPage。