返回
Featured image of post Helm - package 管理器入門

Helm - package 管理器入門

The package manager for Kubernetes

前言

其實 Helm 非必要學習之項目,熟透所需的三方套件以及融會貫通k8s即可。
很多 K8s 三方工具都被包裝成 Helm Package,通常也有 k8s yaml 的三方教學。
建議操作:

  • 三方工具 - Helm 管理 (istio / Traefik / Promethous / Grafana …) > 開源專案維護
  • 自身專案 - kustomize 管理 (kubectl apply -k) > k8s yaml 自己維護

快速入門

install

$ brew install helm

Helm 倉庫

$ helm search hub  # 官方 hub.helm.sh
$ helm repo add bitnami https://charts.bitnami.com/bitnami  # 指定特別的倉庫

快速使用

$ helm repo update                            # 確保第一次是倉庫是最新的
$ helm install bitnami/mysql --generate-name  # helm自動生名稱 (helm install my-sql bitnami/mysql => 自定義名稱)
NAME: mysql-1658203848
LAST DEPLOYED: Tue Jul 19 12:10:51 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
...
$ helm show chart bitnami/mysql               # 可以知道這份repo相關設定
...
$ helm ls
NAME                    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
mysql-1658203848        default         1               2022-07-19 12:10:51.044109 +0800 CST    deployed        mysql-9.2.1     8.0.29

$ helm un mysql-1658203848
release "mysql-1658203848" uninstalled

helm show values - 關於 repo 的 config

Helm Repo 通常會一組 default 可執行之設定,會用幾種方式替換掉

  • --values (-f): yaml 替換
  • --set: 終端機指令替換

用 bitnami/wordpress 這 image 範例

$ helm show values bitnami/wordpress
...
## MariaDB chart configuration
## ref: https://github.com/bitnami/charts/blob/master/bitnami/mariadb/values.yaml
##
mariadb:
  ## @param mariadb.enabled Deploy a MariaDB server to satisfy the applications database requirements
  ## To use an external database set this to false and configure the `externalDatabase.*` parameters
  ##
  enabled: true
  ## @param mariadb.architecture MariaDB architecture. Allowed values: `standalone` or `replication`
  ##
  architecture: standalone
  ## MariaDB Authentication parameters
  ## @param mariadb.auth.rootPassword MariaDB root password
  ## @param mariadb.auth.database MariaDB custom database
  ## @param mariadb.auth.username MariaDB custom user name
  ## @param mariadb.auth.password MariaDB custom user password
  ## ref: https://github.com/bitnami/bitnami-docker-mariadb#setting-the-root-password-on-first-run
  ##      https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run
  ##      https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
  ##
  auth:
    rootPassword: ""
    database: bitnami_wordpress
    username: bn_wordpress
    password: ""
...

values.yaml

mariadb:
  auth:
    database: user0db
    username: user0
$ helm install -f values.yaml bitnami/wordpress --generate-name # 引用 values.yaml
NAME: wordpress-1658213468
...
$ helm get values wordpress-1658213468
USER-SUPPLIED VALUES:
mariadb.auth.database: user0db
mariadb.auth.username: user0

-set vs --values

--set name=value

name: value

--set a=b,c=d

a: b
c: d

--set outer.inner=value

outer:
  inner: value

--set name={a, b, c}

name:
  - a
  - b
  - c

--set servers[0].port=80,servers[0].host=example

servers:
  - port: 80
    host: example

基本上大概知道即可,不外乎嘗試測試多數都用 -f 替換


install / upgrade / rollback

  • install - 安裝 (第一次安裝)
  • upgrade - 更新 (套件升版)
  • rollback - 回滾 (套件回滾)
# 更新
$ helm upgrade -f confg.yaml deploy-name organize/image
# 回滾
$ helm rollback deploy-name [REVISION] # helm rollback [RELEASE] [REVISION] 可用 helm history 查詢指定版本

總結

和前言一樣,這是必須先學會使用 k8s 後的進階使用,建議是操作三方套件,而且在專研三方套件時一樣在學習的過程測試套件順序一樣為:

local > docker > k8s

為什麼呢?
在本地操作的門檻總是比較彈性,當config都設定差不多之後才會進到容器化調教資源
可以用 upgrade 的方式替換 repo config

熱門 Helm Charts

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus