引用案例:
學習連線:https://www.bilibili.com/video/BV12D4y1Y7Z7/?p=7&vd_source=e03131cedc959fdee0d1ea092e73fb24 (時間:06:16)
helm新建一個chart,然後刪除templates裡面的檔案,重新編寫一個,最後完成釋出,更新,回滾動作
1,建立一個模版的chart包,刪除原來的內容,自定義成我們的需要的內容,後面我們自定義部署的yanm檔案
heml create nginx-chart
cd nginx-chart
>values.yaml #清空所有預設定義的變數,後面我們根據需要自定義
rm -rf templates/* #刪除原來所有預設的部署yaml檔案,後面我們根據需要自定義
2,自定義的模版yaml檔案
cat templates/nginx-deploy-service.yaml apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.deployment_name }} spec: replicas: {{ .Values.replicas }} selector: matchLabels: app: {{ .Values.pod_label }} template: metadata: labels: app: {{ .Values.pod_label }} spec: containers: - name: {{ .Values.container_name }} image: "{{ .Values.image }}:{{.Values.imageTag }}" ports: - containerPort: {{ .Values.containerport }} --- apiVersion: v1 kind: Service metadata: name: {{ .Values.service_name }} namespace: {{ .Values.namespace }} spec: type: NodePort ports: - port: {{ .Values.port }} targetPort: {{ .Values.targetport}} nodePort: {{ .Values.nodeport }} selector: app: {{ .Values.pod_label }}
cat values.yaml deployment_name: nginx-deployment replicas: 2 pod_label: nginx-pod-label image: nginx imageTag: 1.17 container_name: nginx-container service_name: nginx-service namespace: default port: 80 targetport: 80 containerport: 80 nodeport: 30001
3 ##安裝(新建)releae例項:
[root@master test]# helm install nginx-release ./nginx-chart/ NAME: nginx-release LAST DEPLOYED: Fri Oct 4 09:09:10 2024 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None 檢視例項啟動情況 helm list kubectl get pods 檢視svc kubectl get pod,svc,ep ep是service後端匹配的pod的地址 瀏覽器訪問透過nodeport對映出來的服務 比如我的地址是: http://192.168.17.102:30001/ 檢視並確認pod執行的版本 kubectl get pod nginx-deployment-5c8469b67f-cq959 -o yaml|grep image 輸出結果包含: image: nginx:1.17 模擬修改程式碼,對版本進行升級 修改values.yml檔案中的版本號 imageTag: 1.20.0 檢視helm有哪些release helm release
4. ## 升級release例項
方法一: helm upgrade release例項名 chart名 --set imageTag=1.19 #透過傳遞命令的方式進行升級,指定release名和chart名進行相關set設定的升級 方法二: helm upgrade release例項名 chart名 -f /../mychart/values.yaml #透過指定yaml檔案的方式進行升級,指定release名和chart名,相關的values.yaml檔案進行升級 更新release例項 helm upgrade nginx-release nginx-chart -f nginx-chart/values.yaml Release "nginx-release" has been upgraded. Happy Helming! NAME: nginx-release LAST DEPLOYED: Fri Oct 4 10:37:11 2024 NAMESPACE: default STATUS: deployed REVISION: 2 TEST SUITE: None 更新以後顯示版本變化的有兩個地方,上面的REVISION會變化,還有就是pod適用的映象的版本也會變化 檢視重新生成的pod名稱 kubectl get pods 檢視pod的image kubectl get pod nginx-deployment-7dd78bf775-tz5mb -o yaml|grep image 輸出結果包含: image: nginx:1.20.0
5. ##回滾release例項版本(將nginx的版本1.20.0回滾為1.17)
helm rollback release例項名 #指定release例項名,回滾到上一個版本 helm rollback release例項名 版本號 #注意版本號是release的版本號,不是映象版本號 回滾後檢視 helm list release的版本是一個阿拉伯數字,不管是升級還是回滾,一直都是遞增的 檢視重新生成的pod名稱 kubectl get pods 檢視pod的image kubectl get pod nginx-deployment-7dd78bf775-tz5mb -o yaml|grep image 輸出的結果是版本回滾到了1.17 image: nginx:1.17
6. ##獲取release的實力歷史
helm history release例項名 示例: helm history nginx-release