helm學習

solomon123發表於2024-10-04

引用案例:

學習連線: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檔案

helm學習
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 }}
deployment.yaml

helm學習
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
values.yaml

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

  

  

相關文章