目錄
一、release介紹
在以上的章節中曾介紹過 helm 的兩大術語:chart 和 release。如果可以把 chart 比作程序源碼的話,那么 release 則可以看做是程序運行時的進程。
chart 是用戶可直接感知的對象(其表現形式就是 .tgz 格式的壓縮包);而 release 理解起來則比較抽象,它是專屬於 helm 的一個邏輯概念,用來標識在 k8s 中運行的一組資源。有了 release,helm 在操作 k8s 時,就再也不用逐個管理資源,而可以將一組相關的資源當做一個整體來操作,比如刪除或升級。
二、release 查看
$ helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
三、release 安裝
在線安裝指定的 chart,比如 nginx-ingress。
$ helm repo add nginx-stable https://helm.nginx.com/stable
$ helm repo update
$ helm search repo nginx-ingress
NAME CHART VERSION APP VERSION DESCRIPTION
aliyun/nginx-ingress 0.9.5 0.10.2 An nginx Ingress controller that uses ConfigMap...
nginx-stable/nginx-ingress 0.9.3 1.11.3 NGINX Ingress Controller
stable/nginx-ingress 1.41.3 v0.34.1 DEPRECATED! An nginx Ingress controller that us...
aliyun/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
stable/nginx-lego 0.3.1 Chart for nginx-ingress-controller and kube-lego
$ helm install mynginx-ingress nginx-stable/nginx-ingress
NAME: mynginx-ingress
LAST DEPLOYED: Sat Jun 12 16:17:57 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The NGINX Ingress Controller has been installed.
四、release更新
如果想修改運行時 release 的配置,可以使用 --set
或者 -f
選項進行修改。
4.1 基於命令行更新 release
# mynginx-ingress 是上面創建的 release 名;nginx-stable/nginx-ingress 是在線 chart 名
$ helm upgrade --set controller.hostNetwork=true mynginx-ingress nginx-stable/nginx-ingress
Release "mynginx-ingress" has been upgraded. Happy Helming!
NAME: mynginx-ingress
LAST DEPLOYED: Sat Jun 12 16:20:05 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None
NOTES:
The NGINX Ingress Controller has been installed.
4.2 基於文件更新 release
如果想基於文件來更新 release,則首先需要將 chart 下載到本地,然后手動修改 chart 的 values.yaml
文件。
$ helm pull nginx-stable/nginx-ingress
# 下載 chart
$ tar zxf nginx-ingress-0.9.3.tgz
# 解壓縮 chart
$ sed -i 's/hostNetwork: false/hostNetwork: true/g' nginx-ingress/values.yaml
# 修改 values.yaml 內容。比如修改 hostNetwork 的值為 true
$ helm upgrade mynginx-ingress nginx-ingress -f nginx-ingress/values.yaml
Release "mynginx-ingress" has been upgraded. Happy Helming!
NAME: mynginx-ingress
LAST DEPLOYED: Sat Jun 12 16:23:50 2021
NAMESPACE: default
STATUS: deployed
REVISION: 3
TEST SUITE: None
NOTES:
The NGINX Ingress Controller has been installed.
4.3 查看 release 更新后的新值
$ helm get values mynginx-ingress
五、release 版本
$ helm history mynginx-ingress
# mynginx-ingress 這個 release 各個歷史版本。其中 REVISION 3 是最新的版本。
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Jun 12 16:17:57 2021 superseded nginx-ingress-0.9.3 1.11.3 Install complete
2 Sat Jun 12 16:20:05 2021 superseded nginx-ingress-0.9.3 1.11.3 Upgrade complete
3 Sat Jun 12 16:23:50 2021 deployed nginx-ingress-0.9.3 1.11.3 Upgrade complete
六、release 回滾
$ helm rollback mynginx-ingress 1
Rollback was a success! Happy Helming!
$ helm history mynginx-ingress
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Sat Jun 12 16:17:57 2021 superseded nginx-ingress-0.9.3 1.11.3 Install complete
2 Sat Jun 12 16:20:05 2021 superseded nginx-ingress-0.9.3 1.11.3 Upgrade complete
3 Sat Jun 12 16:23:50 2021 superseded nginx-ingress-0.9.3 1.11.3 Upgrade complete
4 Sat Jun 12 16:29:59 2021 deployed nginx-ingress-0.9.3 1.11.3 Rollback to 1
七、release 卸載
$ helm uninstall mynginx-ingress
release "mynginx-ingress" uninstalled