当前位置:网站首页>devops学习(九) Helm工具--持续部署
devops学习(九) Helm工具--持续部署
2022-07-29 23:05:00 【默子昂】
我们后续部署的程序可能包含很多个子程序,单一的yaml文件部署会让我们的启动脚本变的很繁琐,这里就直接改为使用helm去部署
一、部署helm工具
1、拉取软件包
//自己的小站101.43.4.210/helm-v3.5.1-linux-amd64.tar.gz
wget https://get.helm.sh/helm-v3.5.1-linux-amd64.tar.gz
tar -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/mytest1、指定Chart包的版本信息
vi Chart.yaml
apiVersion: v2
name: mytest
appVersion: "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/v1
kind: Deployment
metadata:
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: http
containerPort: {
{ .Values.containers.containerPort }}
---
apiVersion: v1
kind: Service
metadata:
name: {
{ .Values.name }}-svc
namespace: {
{ .Values.namespace }}
spec:
ports:
- port: {
{ .Values.containers.containerPort }}
targetPort: http
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文档参考
https://docs.helm.sh/zh/docs/chart_template_guide/functions_and_pipelines/三、jenkins添加构建后操作
1、gitlab新建v4.0.0标签
我们添加helm是在v3版本之后添加的,这里要在gitlab再打一个tag

2.1、定义要拷贝的配置
//要拷贝的源文件
//这里指定将helm项目下的文件都拷贝过去
//默认不拷贝目录,这里要再加个templates
helm/mytest/* 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边栏推荐
猜你喜欢

信用卡又一新规来袭!菊风用科技助推金融行业提升服务质效

jenkins use and maintenance
![[C] list explanation (headless ChanXiangFei cycle)](/img/41/14d1968296deb0135da0694fc6ccaf.png)
[C] list explanation (headless ChanXiangFei cycle)

VsCode更新后,怎么使用使用快捷键同时生成多个元素

Three chess (written in C language)

BGP Federal Comprehensive Experiment

canvas 中如何实现物体的点选(五)

【openlayers】地图【二】

Another new rule for credit cards is coming!Juphoon uses technology to boost the financial industry to improve service quality and efficiency

设计消息队列存储消息的MySQL表格
随机推荐
通过 FileUploader 的初始化,了解 SAP UI5 应用的 StaticArea 初始化逻辑
JetsonNano学习(六)Jetson踩过的大坑及解决方法___持续更新
cv.copyMakeBorder(imwrite opencv)
[C] list explanation (headless ChanXiangFei cycle)
Guidelines for the Release of New WeChat Mini Programs
High - level - the rest - the client determine whether indexes exist
This article penetrates the architecture design and cluster construction of the distributed storage system Ceph (hands-on)
暴力递归到动态规划 04 (数字字符串转化)
线性表之顺序表(干货满满的分享来啦~内含顺序表全部函数代码~
go语言中的goroutine(协程)
Qt之在QML中使用QSortFilterProxyModel进行排序和过滤
地狱挖掘者系列#1
jenkins使用维护
Qt uses QSortFilterProxyModel for sorting and filtering in QML
PLSQL Developer安装和配置
【2023校招刷题】笔试及面试中常考知识点、手撕代码总结
A print function, very good at playing?
DNA修饰的上转换纳米材料|聚胞苷酸Poly-C DNA修饰的氧化石墨烯|解析说明
Jsp使用<c:forEach>遍历List集合「建议收藏」
@Autowired与@Resource区别