HELM 包管理器

Helm

  • 是什么
    • Kubernetes 上的包管理器
  • helm.sh
  • nexus 可通过插件支持 helm sonatype-nexus-community/nexus-repository-helm
  • 注意
    • 3.0 过后没有 tiller 了
    • HELM 可以单纯的作为模板引擎来使用 - 但是失去了 helm 管理注册应用的能力
      • 如果用作模板引擎,那还可以选择 Kustomize, k8comp, kdeploy, ktmpl, kuku, jinja, sed, awk, gotpl
      • 失去的能力: 清单分组、应用或包依赖、查看集群安装应用、注册应用、应用版本回滚
    • 仓库不是必要的,一个 helm charts 就是一个 tgz
    • 相同版本可重复安装,revision 会有变化,本地开发时经常这样
  • 参考
brew install helm
# 客户端版本
helm version
helm repo add stable http://mirror.azure.cn/kubernetes/charts/
helm search repo stable
helm show values stable/nextcloud
helm pull stable/nextcloud
helm pull stable/nextcloud --untar

路径

系统缓存配置数据
Linux$HOME/.cache/helm$HOME/.config/helm$HOME/.local/share/helm
macOS$HOME/Library/Caches/helm$HOME/Library/Preferences/helm$HOME/Library/helm
Windows%TEMP%\helm%APPDATA%\helm%APPDATA%\helm

常用仓库

NAMEURL
stablehttps://kubernetes-charts.storage.googleapis.com/
incubatorhttps://kubernetes-charts-incubator.storage.googleapis.com
traefikhttps://containous.github.io/traefik-helm-chart
jetstackhttps://charts.jetstack.io
hashicorphttps://helm.releases.hashicorp.com
harborhttps://helm.goharbor.io
stable
azure mirror
http://mirror.azure.cn/kubernetes/charts/
incubator
azure mirror
http://mirror.azure.cn/kubernetes/charts-incubator/
wener
offcial collection
https://wenerme.github.io/charts
https://charts.wener.tech/

仓库

local

helm repo reindex local-repo

chartmuseum

# 本地存储
docker run --rm -it \
-p 8080:8080 \
-e DEBUG=1 \
-e STORAGE=local \
-e STORAGE_LOCAL_ROOTDIR=/charts \
-v $(pwd)/charts:/charts \
--name chartmuseum chartmuseum/chartmuseum:latest
# UI
# https://github.com/chartmuseum/ui
docker run --rm -it \
-p 80:8080 \
-e CHART_MUSESUM_URL: http://chartmuseum:8080 \
--link chartmuseum:chartmuseum \
--name chartmuseumui idobry/chartmuseumui:latest
# Aliyun OSS
# ALIBABA_CLOUD_ACCESS_KEY_ID
# ALIBABA_CLOUD_ACCESS_KEY_SECRET
chartmuseum --debug --port=8080 \
--storage="alibaba" \
--storage-alibaba-bucket="my-oss-bucket" \
--storage-alibaba-prefix="" \
--storage-alibaba-endpoint="oss-cn-beijing.aliyuncs.com"

registry

export HELM_EXPERIMENTAL_OCI=1
helm registry login -u myuser index.docker.io
helm chart save alpinelinux/ index.docker.io/v1/wcharts/alpinelinux:0.1.0
helm chart list
# 会导出到 alpinelinux/
helm chart export index.docker.io/v1/wcharts/alpinelinux:0.1.0
# 推送到服务器
helm chart push index.docker.io/v1/wcharts/alpinelinux:0.1.0
helm chart pull index.docker.io/v1/wcharts/alpinelinux:0.1.0

Helm 模板

# https://helm.sh/docs/chart_template_guide/
helm install --debug --dry-run goodly-guppy ./mychart
# 渲染单个模板 - 用于测试排查问题
helm template ./mychart --show-only templates/values.yaml > values.yaml
# 渲染整个 chart
helm template ./mychart

Helm Operator