前言
其實 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