Helm 介紹和安裝
Helm 是 kubernetes 的包管理工具,用 yaml 管理多個(gè)應(yīng)用同時(shí)部署,實(shí)現(xiàn)了部署的版本管理,應(yīng)用和配置分離。
安裝
在 master 節(jié)點(diǎn)
下載:
wget https://get.helm.sh/helm-v3.4.1-linux-amd64.tar.gz -O helm-v3.4.1-linux-amd64.tar.gz
解壓:
tar -zxvf helm-v3.4.1-linux-amd64.tar.gz
移動(dòng):
mv linux-amd64/helm /usr/local/bin/helm
部署一個(gè) Helm Chart
創(chuàng)建一個(gè) Helm Chart
helm create nginx
cd nginx
ls
charts Chart.yaml templates values.yaml
打包一個(gè) Helm Chart
[root@master ~]# helm package nginx
Successfully packaged chart and saved it to: /root/nginx-0.1.0.tgz
部署 Chart
helm install nginx nginx-0.1.0.tgz
查看
[root@master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
mysql-0 1/1 Running 3 5d6h
nginx-764c6bcc78-622t9 0/1 Pending 0 37s
[root@master ~]# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
nginx default 1 2021-04-07 20:18:25.373773344 +0800 CST deployed nginx-0.1.0 1.16.0
刪除
helm delete nginx
查看
[root@master ~]# helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
[root@master ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
mysql-0 1/1 Running 3 5d6h
創(chuàng)建私有 Helm 倉庫
在 jcr 中創(chuàng)建倉庫
- helm-test-local
- helm-prod-local
把創(chuàng)建的倉庫检盼,添加到虛擬倉庫
配置 helm 倉庫
helm repo add helm http://192.168.190.131:8081/artifactory/helm --username admin --password AP3rr97FJeUgXodLsZLyFfLLK9C
創(chuàng)建博客應(yīng)用的 Helm Chart
helm package kubeblog
-
helm install kubeblog kubeblog-0.1.2.tgz
返回
NAME: kubeblog LAST DEPLOYED: Wed Apr 7 22:51:26 2021 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
-
kubectl get all
可以看到
NAME READY STATUS RESTARTS AGE pod/kubeblog-6865d55c9c-k28qn 1/1 Running 3 116s pod/kubeblog-6865d55c9c-rmzwf 1/1 Running 0 114s pod/kubeblog-6865d55c9c-t7cwh 1/1 Running 0 113s pod/mysql-0 1/1 Running 0 116s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubeblog NodePort 10.1.160.36 <none> 5000:30002/TCP 3m20s service/kubernetes ClusterIP 10.1.0.1 <none> 443/TCP 21d service/mysql57 NodePort 10.1.96.158 <none> 3306:30306/TCP 3m20s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/kubeblog 3/3 3 3 3m18s NAME DESIRED CURRENT READY AGE replicaset.apps/kubeblog-6865d55c9c 3 3 3 117s NAME READY AGE statefulset.apps/mysql 1/1 3m4s
瀏覽器訪問:
http://192.168.190.132:30002/
Helm Chart 上傳到 JCR
上傳
curl -uadmin:AP3rr97FJeUgXodLsZLyFfLLK9C -T kubeblog-0.1.2.tgz "http://192.168.190.131:8081/artifactory/helm/kubeblog-0.1.2.tgz"
從 jcr 部署 chart
helm repo update
helm install kubeblog helm/kubeblog
稍等一會(huì),查看
kubectl get po
可以看到
NAME READY STATUS RESTARTS AGE
kubeblog-6865d55c9c-2gnlb 1/1 Running 0 55s
kubeblog-6865d55c9c-8wm82 1/1 Running 0 105s
kubeblog-6865d55c9c-s4tvl 1/1 Running 0 59s
mysql-0 1/1 Running 0 105s
Helm 升級翘单,回滾
上傳新版本
curl -uadmin:password123 -T kubeblog-0.1.3.tgz "http://192.168.190.131:8081/artifactory/helm/kubeblog-0.1.3.tgz"
查找新版本 chart
helm repo update
部署新版本 chart
helm upgrade kubeblog helm/kubeblog --version 0.1.3
后滾到上一版本
helm rollback kubeblog 1
在多環(huán)境中部署 Helm Chart
創(chuàng)建命名空間:kubectl create ns test
部署到測試環(huán)境吨枉,通過 -f
參數(shù)指定 yaml 文件,通過 -n
參數(shù)指定命名空間
helm install kubeblog kubeblog-0.1.2.tgz -f kubeblog/values-test.yaml -n test
瀏覽器訪問:http://192.168.190.132:30003/
如果需要強(qiáng)制刪除 pod哄芜,使用:
kubectl delete pod <name> --grace-period=0 --force -n <namespace>