helm学习

引用案例:

学习连接: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 }}
deployment.yaml

 

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

  

 

  

 

posted @ 2024-10-04 11:59  solomon123  阅读(2)  评论(0编辑  收藏  举报