前端框架选型是企业提升开发效率与用户体验的关键因素
754
2022-10-12
devops学习(九) Helm工具--持续部署
我们后续部署的程序可能包含很多个子程序,单一的yaml文件部署会让我们的启动脚本变的很繁琐,这里就直接改为使用helm去部署
一、部署helm工具
1、拉取软件包
//自己的小站101.43.4.210/helm-v3.5.1-linux-amd64.tar.gzwget -zxvf helm-v3.5.1-linux-amd64.tar.gz cp linux-amd64/helm /usr/bin/
2、查看版本
helm version
二、自定义Chart包
通常来说,我们这个Chart包是给集群master节点用的,大部分情况我们都不会频繁的修改Chart包,这里可以直接定义到master节点也可以用,这里为了演示就直接以CD的形式发送到节点上去部署
mkdir -p helm/mytest
1、指定Chart包的版本信息
vi Chart.yaml
apiVersion: v2name: mytestappVersion: "v1.0.1"version: "v1.0.1"
2、定义要使用的变量
vi values.yaml
name: "mytest"namespace: "devops"containers: name: "mytest" image: "mytest:v1.0.1" containerPort: "9999" nodePort: "30008"
3、定义Chart包中要部署的模板文件
vi templates/mytest-dev.yaml
apiVersion: apps/v1kind: Deploymentmetadata: name: {{ .Values.name }} namespace: {{ .Values.namespace }}spec: selector: matchLabels: app: {{ .Values.name }}-init template: metadata: labels: app: {{ .Values.name }}-init spec: containers: - name: {{ .Values.containers.name }} image: {{ .Values.containers.image }} ports: - name: containerPort: {{ .Values.containers.containerPort }}---apiVersion: v1kind: Servicemetadata: name: {{ .Values.name }}-svc namespace: {{ .Values.namespace }}spec: ports: - port: {{ .Values.containers.containerPort }} targetPort: nodePort: {{ .Values.containers.nodePort }} selector: app: {{ .Values.name }}-init type: NodePort
4、定义打包时要忽略的配置
vi .helmignore
# Patterns to ignore when building packages.# This supports shell glob matching, relative path matching, and# negation (prefixed with !). Only one pattern per line..DS_Store# Common VCS dirs.git/.gitignore.bzr/.bzrignore.hg/.hgignore.svn/# Common backup files*.swp*.bak*.tmp*.orig*~# Various IDEs.project.idea/*.tmproj.vscode/
创建完之后要上传到gitlab仓库中使用
helm文档参考
helm/mytest/templates/*
2.2、指定EXEC程序
helm upgrade -i ${JOB_NAME} /usr/local/test/helm/mytest///这里helm upgrade 是代表更新的意思, -i 表示如果没有部署则会部署,如果部署了就会更新//这样一来,每次我们有变更下
如上,我们配置后直接构建V4版本会通过helm工具直接去部署/更新新的配置
2.3、添加helm指定使用镜像的版本
这里实际上就是通过修改helm的语句在更新的时候覆盖value.yaml的变量来实现的
添加覆盖的配置
helm upgrade -i ${JOB_NAME} --set containers.image=101.43.4.210:30007/repo/${JOB_NAME}:${tag} /usr/local/test/helm/mytest///我们原先value.yaml的配置是 mytest:v1.0.1//这里我们在启动的时候指定value.yaml下的镜像的变量进行覆盖使用//这个操作不会修改value.yaml的值,模板中其他变量还是用的value.yaml下的值
如此一来,我们从V4版本之后就可以通过helm快速进行版本更新了( •̀ ω •́ )y
存在的问题
1、步骤太长了,我们实现上面的步骤点了很多东西,如果那里出错了我们无法快速的排查问题 //pipline 流水线2、我们在任务中关于harbor仓库的地址是写死的,如果要修改就需要一步一步切进去很麻烦 //jenkinsfile
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~