持续集成交付CICD:HELM 手动完成前端项目应用发布与回滚

目录

一、实验

1.环境

2.K8S master节点部署HELM3

3.K8S master节点安装git

4. Harbor镜像确认

5. HELM 手动完成前端项目应用发布与回滚

6.代码上传到GitLab

二、问题

1.Ingress中 path 的类型有何区别

2. HELM创建项目报错


 

 

一、实验

1.环境

(1)主机

表1  主机

主机架构版本IP备注
master1K8S master节点1.20.6192.168.204.180

jenkins slave

(从节点)

 helm3.6.0  
 git1.8.3.1  
node1K8S node节点1.20.6192.168.204.181 
node2K8S node节点1.20.6192.168.204.182 
jenkins

 jenkins主节点      

2.414.2192.168.204.15:8080

 gitlab runner

(从节点)

 

harbor私有仓库

1.2.2192.168.204.15 
gitlabgitlab 主节点     12.10.14192.168.204.8:82

jenkins slave

(从节点)

 sonarqube9.6192.168.204.8:9000 

2.K8S master节点部署HELM3

(1)Helm版本与K8S集群兼容

ee70de7fccd441c2866678f1b28ca9da.png

(2)查看K8S集群状态

# kubectl get node

980e994461ea419187ac8739bfd8c263.png

(3)策略

当前K8S 集群为1.20.6版本,HELM 3.6.x 版本可以兼容。

所以选择3.6.0版本。

(4)部署


1)安装 helm 
//下载二进制 Helm client 安装包
helm-v3.6.0-linux-amd64.tar.gztar -zxvf helm-v3.6.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
helm version//命令补全
source <(helm completion bash)2)使用 helm 安装 Chart
//添加常用的 chart 仓库,
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo add incubator https://charts.helm.sh/incubator3) 更新 charts 列表
helm repo update
helm repo list          

安装

11241a72251a4e6e87f5ce7f5de14783.png

使用 helm 安装 Chart

ff517b7d44b541dd8a9cf3ee97d7795c.png6f3e168cb7244272ac568207c80ef910.png

 

3.K8S master节点安装git

(1) 安装

1)安装
# yum install -y git2)查看版本
# git --version3)全局设置(初始邮箱为admin@example.com)
# git config --global user.name "root"
# git config --global user.email "594372682@qq.com"

安装
b640f096c0fd45a6b98c99952e76a47f.png5f7570d8f9324ebda524d8bb8d38ef26.png

查看版本

9b8f10e92ebe4249bdc147f7432d85f6.png

全局设置
da065a4627534b6494dd1a898ee55348.png

 

4. Harbor镜像确认

(1)查看前端项目镜像

8b099f0c34414d53932441abc12ff585.png

(2)确认如下镜像作为helm项目使用的镜像

 192.168.204.15/devops03/devops03-devops-ui:RELEASE-1.1.6

 

5. HELM 手动完成前端项目应用发布与回滚

(1)构建项目

# helm create devops03-devops-ui

525e34555c1a475ebab0db8ab6798c2c.png

(2)安装tree

# yum install -y tree

554e30074aab4cd5a16030d96383c319.pngb86ba730399d453490cbb6a25b230898.png

(3) 查看目录

# tree

222615993b6d405eb2e004127348ade1.png

(4)修改values.yaml 

# vim values.yaml 

指定镜像仓库、镜像版本为RELEASE-1.1.6、开启ingress

1 # Default values for devops03-devops-ui.2 # This is a YAML-formatted file.3 # Declare variables to be passed into your templates.4 5 replicaCount: 26 7 image:8   repository: 192.168.204.15/devops03/devops03-devops-ui9   pullPolicy: IfNotPresent10   # Overrides the image tag whose default is the chart appVersion.11   tag: "RELEASE-1.1.6"12 13 imagePullSecrets: []14 nameOverride: ""15 fullnameOverride: ""16 17 serviceAccount:18   # Specifies whether a service account should be created19   create: true20   # Annotations to add to the service account21   annotations: {}22   # The name of the service account to use.23   # If not set and create is true, a name is generated using the fullname template24   name: ""25 26 podAnnotations: {}27 28 podSecurityContext: {}29   # fsGroup: 200030 31 securityContext: {}32   # capabilities:33   #   drop:34   #   - ALL35   # readOnlyRootFilesystem: true36   # runAsNonRoot: true37   # runAsUser: 100038 39 service:40   type: ClusterIP41   port: 8042 43 ingress:44   enabled: true45   className: ""46   annotations:47     kubernetes.io/ingress.class: nginx48     # kubernetes.io/tls-acme: "true"49   hosts:50     - host: devops03-devops-ui.devops.com51       paths:52         - path: /53           pathType: ImplementationSpecific54   tls: []55   #  - secretName: chart-example-tls56   #    hosts:57   #      - chart-example.local58 59 resources: {}60   # We usually recommend not to specify default resources and to leave this as a conscious61   # choice for the user. This also increases chances charts run on environments with little62   # resources, such as Minikube. If you do want to specify resources, uncomment the following63   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.64   # limits:65   #   cpu: 100m66   #   memory: 128Mi67   # requests:68   #   cpu: 100m69   #   memory: 128Mi70 71 autoscaling:72   enabled: false73   minReplicas: 174   maxReplicas: 10075   targetCPUUtilizationPercentage: 8076   # targetMemoryUtilizationPercentage: 8077 78 nodeSelector: {}79 80 tolerations: []81 82 affinity: {}

(5) 另开一个终端用watch命令观察pod变化

# watch -n 1 "kubectl get pod -n devops03"

ba807433ad4d4e6595b7f743a006a154.png

1c4229ba19854f56b8274ae582ebe903.png

(6)外部测试访问(当前版本为1.1.6)

# curl http://devops03-devops-ui.devops.com:31291

bf9081c1d872440eb5ee2cf888f5a80f.png

 (7)删除已有命名空间

# kubectl delete ns devops03

f7be2b68bf7846b98f12ee39433ff6ee.png

(8)观察pod变化b79da2332628480da53ed7685b52abf9.png

7dffc5a376034fdc9e57b4b4176bbc01.png

(9)重新创建命名空间并查看资源

# kubectl create ns devops03# kubectl get all -n devops03

45ab26810dc74e189d56c53d6177c3df.png

bdd460b360864dedbb7d37228427483c.png

(7)运行项目

# helm install devops03-devops-ui -n devops03 devops03-devops-ui/

296b935623f14c7c93a3958f3b397e2d.png

(8)观察pod变化

4c8db84159e74520a7f19e056ab36bfa.png

af629e3adff145968197b6dad2b4b324.png

817fb95075cc4ccab5d86d8bc42bc25e.png

(9)外部测试访问(当前版本为1.1.6)

# curl http://devops03-devops-ui.devops.com:31291

4cfd3cf26b964d1186e0a31bac74f35d.png

(10)修改values.yaml 

# vim values.yaml 

指定镜像仓库、镜像版本为RELEASE-1.1.5、开启ingress

1 # Default values for devops03-devops-ui.2 # This is a YAML-formatted file.3 # Declare variables to be passed into your templates.4 5 replicaCount: 26 7 image:8   repository: 192.168.204.15/devops03/devops03-devops-ui9   pullPolicy: IfNotPresent10   # Overrides the image tag whose default is the chart appVersion.11   tag: "RELEASE-1.1.6"12 13 imagePullSecrets: []14 nameOverride: ""15 fullnameOverride: ""16 17 serviceAccount:18   # Specifies whether a service account should be created19   create: true20   # Annotations to add to the service account21   annotations: {}22   # The name of the service account to use.23   # If not set and create is true, a name is generated using the fullname template24   name: ""25 26 podAnnotations: {}27 28 podSecurityContext: {}29   # fsGroup: 200030 31 securityContext: {}32   # capabilities:33   #   drop:34   #   - ALL35   # readOnlyRootFilesystem: true36   # runAsNonRoot: true37   # runAsUser: 100038 39 service:40   type: ClusterIP41   port: 8042 43 ingress:44   enabled: true45   className: ""46   annotations:47     kubernetes.io/ingress.class: nginx48     # kubernetes.io/tls-acme: "true"49   hosts:50     - host: devops03-devops-ui.devops.com51       paths:52         - path: /53           pathType: ImplementationSpecific54   tls: []55   #  - secretName: chart-example-tls56   #    hosts:57   #      - chart-example.local58 59 resources: {}60   # We usually recommend not to specify default resources and to leave this as a conscious61   # choice for the user. This also increases chances charts run on environments with little62   # resources, such as Minikube. If you do want to specify resources, uncomment the following63   # lines, adjust them as necessary, and remove the curly braces after 'resources:'.64   # limits:65   #   cpu: 100m66   #   memory: 128Mi67   # requests:68   #   cpu: 100m69   #   memory: 128Mi70 71 autoscaling:72   enabled: false73   minReplicas: 174   maxReplicas: 10075   targetCPUUtilizationPercentage: 8076   # targetMemoryUtilizationPercentage: 8077 78 nodeSelector: {}79 80 tolerations: []81 82 affinity: {}

修改前:

b9e27d1af0c341edbd551a24c5fb9c93.png

修改后:

9456ec598178466d8948f267c713cd3f.png

(11)更新项目

# helm upgrade devops03-devops-ui -n devops03 devops03-devops-ui/

0533c2a2bd0146958f0d12458fba6174.png

(12)观察pod变化

584ac02b96484ef38fc0cfbc072699bf.png

1f1423073d3b4bbd9383abba2aebea6a.png

a1fa364efb3f4c03bf248dde6b19def6.png

22529ac20a1846e1be91f06604b7b86a.png

5996e347953043f98f36430f91c16a08.png

(13)外部测试访问(当前版本为1.1.5)

# curl http://devops03-devops-ui.devops.com:31291

0a2b649d311944a98e132a90a15cb3b8.png

(14)查看历史版本

# helm history devops03-devops-ui -n devops03

a619675ed16c44db949de1fff4d0ad0d.png

(15)回滚指定版本

# helm rollback devops03-devops-ui 1 -n devops03

7712da6b6b6348fb92e17adf1a7ab95c.png

(16)观察pod变化

d9937cabf85a4a4bad75a3186a765602.png

80ae516b79b041e8b5eb3cbccdef903e.png

5b3b0dcc47554391a83f559d7e35f517.png

d6df60a242be4a64b29c0752ff626550.png

d23125e09397406d80c1b94788a7a0a0.png

(17)外部测试访问(当前版本为1.1.6)

# curl http://devops03-devops-ui.devops.com:31291

acb0d800a34147da8ab6ebe349628b51.png

 

6.代码上传到GitLab

(1) 将项目克隆到服务器

# git clone http://192.168.204.8:82/devops03/devops03-helm-service.git

99ddaf60094141b589edb21517b20cc2.png

(2)切换目录,移动HELM项目

# mv devops03-devops-ui/ devops03-helm-service/

7264242ea34749c1b5615edc7275732b.png

(3)将代码上传到工作区

# git add devops03-devops-ui/

259862b802b745a48f61fe7b305ed2af.png

(4)提交代码申明

# git commit -m "devops03 app"

9b53b020ede7409fba4e8d41a6f3baa5.png

(5) 将代码推送到GitLab

# git push origin master

dd4fa580e2974c0a949154671ef4725b.png

(6)GitLab查看项目

b991229c3b37407c8d252bc6009d2cfb.png

(7)目录结构

4a1ad908ba4c4b14a60b8707f92a696d.png

 

二、问题

1.Ingress中 path 的类型有何区别

(1)区别

exact: 精确匹配路径。如 path: /foo,只匹配请求路径与之完全相同的 /foo。prefix: 前缀匹配路径。如 path: /foo,匹配请求路径以 /foo 开始的所有路径,如 /foo、/foo/bar 等。ImplementationSpecific: 特定 Ingress controller 的匹配方式。如 Nginx Ingress controller 忽略路径类型,作为前缀匹配路径处理。

2. HELM创建项目报错

(1)报错

ae45ad93cf904bb2b9a78113c5500a41.png

(2)原因分析

格式转换错误。

(3)解决方法

修改配置文件。

修改前:

34854e7121684042a168205fed49807b.png

修改后:

a7e02f164e274e6c878b73e9e7a5604f.png

成功:

cc61d48bd8b1418ab8c86066b4c724eb.png

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/222192.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink cdc3.0同步实例(动态变更表结构、分库分表同步)

文章目录 前言准备flink环境docker构建mysql、doris环境数据准备 通过 FlinkCDC cli 提交任务整库同步同步变更路由变更路由表结构不一致无法同步 结尾 前言 最近Flink CDC 3.0发布&#xff0c; 不仅提供基础的数据同步能力。schema 变更自动同步、整库同步、分库分表等增强功…

MyBatis:动态 SQL 标签

MyBatis 动态 SQL 标签if 标签where 标签trim 标签choose 、when 、otherwise 标签foreach 标签附 动态 SQL 标签 MyBatis 动态 SQL 标签&#xff0c;是一组预定义的标签&#xff0c;用于构建动态的 SQL 语句&#xff0c;允许在 SQL 语句中使用条件、循环和迭代等逻辑。通过使…

HW03 -实物图像识别-改进:图像增强、网络架构,K折交叉验证

修改模型架构或者进行图像增强 # Normally, We dont need augmentations in testing and validation. # All we need here is to resize the PIL image and transform it into Tensor. test_tfm transforms.Compose([transforms.Resize((128, 128)),transforms.ToTensor(),#t…

Vue中的加密方式(js-base64、crypto-js、jsencrypt、bcryptjs)

目录 1.安装js-base64库 2. 在Vue组件中引入js-base64库 3.使用js-base64库进行加密 4.Vue中其他加密方式 1.crypto-js 2.jsencrypt 3.bcryptjs 1.安装js-base64库 npm install js-base64 --save-dev 2. 在Vue组件中引入js-base64库 import { Base64 } from js-ba…

大型语言模型:SBERT — Sentence-BERT

slavahead 一、介绍 Transformer 在 NLP 方面取得了进化进步&#xff0c;这已经不是什么秘密了。基于转换器&#xff0c;许多其他机器学习模型已经发展起来。其中之一是BERT&#xff0c;它主要由几个堆叠的变压器编码器组成。除了用于情感分析或问答等一系列不同的问题外&#…

AI数字人互动大屏支持多种场景交互!

互动大屏&#xff08;技术支持&#xff1a;zhibo175&#xff09;本身具有令人瞩目的效果&#xff0c;再配置丰富多彩的多媒体&#xff0c;如引人注目的广告、特效或游戏等&#xff0c;可起到很好的引流作用。在空间开阔且客流密集的场所&#xff0c;使用各种形态的大面积屏幕&a…

【AIGC重塑教育】AI大模型驱动的教育变革与实践

文章目录 &#x1f354;现状&#x1f6f8;解决方法✨为什么要使用ai&#x1f386;彩蛋 &#x1f354;现状 AI正迅猛地改变着我们的生活。根据高盛发布的一份报告&#xff0c;AI有可能取代3亿个全职工作岗位&#xff0c;影响全球18%的工作岗位。在欧美&#xff0c;或许四分之一…

【2023 英特尔On技术创新大会直播 |我与英特尔的初次相遇】—— AIPC探索下一代的物联网时代

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:英特尔技术学习专栏 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 硅谷经济的发展与挑战 Intel开发者云与AI技术的应用 AI压缩技术的发展与应用 英特尔与阿里巴巴在AI领域的合作 AIPC时代的…

flink sql1.18.0连接SASL_PLAINTEXT认证的kafka3.3.1

阅读此文默认读者对docker、docker-compose有一定了解。 环境 docker-compose运行了一个jobmanager、一个taskmanager和一个sql-client。 如下&#xff1a; version: "2.2" services:jobmanager:image: flink:1.18.0-scala_2.12container_name: jobmanagerports:…

C语言——数组

一、数组介绍 C 语言支持数组数据结构&#xff0c;它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据&#xff0c;但它往往被认为是一系列相同类型的变量。 ps&#xff1a;再C99之前的标准不支持变长数组&#xff0c;C99及之后的标准支持变长数组&a…

软件系统质量保证计划书

本计划描述了信息系统项目质量保证工作相关的一些情况&#xff0c;是软件质量保证过程和方针在项目中的具体实施计划。 计划中阐述了质量保证工作的基本目标&#xff1b;项目的基本情况&#xff1b;质量保证工作所需的资源&#xff1b;质量保证的主要工作&#xff1b;工作量估算…

openGuass:极简版安装

目录 一、openGauss简介 二、初始化安装环境 1.创建安装用户 2.修改文件句柄设置 ​3.修改SEM内核参数 4.关闭防火墙 6.禁用SELINUX 7.安装依赖软件 8.重启服务器 三、安装数据库 1.下载安装包 2.创建安装目录 3.解压安装包 4.执行安装 5.验证安装 四、gsql工具…

循环神经网络中的梯度消失或梯度爆炸问题产生原因分析(二)

上一篇中讨论了一般性的原则&#xff0c;这里我们具体讨论通过时间反向传播&#xff08;backpropagation through time&#xff0c;BPTT&#xff09;的细节。我们将展示目标函数对于所有模型参数的梯度计算方法。 出于简单的目的&#xff0c;我们以一个没有偏置参数的循环神经…

医院设置反馈投诉建议二维码的好处

将投诉建议的记录单制作成二维码,放在导医台、挂号窗口、门诊门口、电梯等公共区域,群众在就医过程中遇到的种种难点、堵点&#xff0c;皆可通过扫码进行评价、投诉,医院会及时收到信息安排员工第一时间与投诉人联系沟通解决&#xff0c;做到“码”上建议&#xff0c;马上落实。…

什么牌子的猫罐头健康又实惠?五大猫罐头推荐排行榜

新手养猫很容易陷入疯狂购买的模式&#xff0c;但有些品牌真的不能乱买&#xff01;现在的大环境不太好&#xff0c;我们需要学会控制自己的消费欲望&#xff0c;把钱花在刀刃上&#xff01;现在宠物市场真的很内卷&#xff0c;很多品牌都在比拼产品的数据和营养成分。很多铲屎…

PyQt6 基类QObject类介绍以及应用

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计51条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

Ubuntu 22.04 LTS上安装Docker-ce

在Ubuntu 22.04 LTS上安装Docker-ce Docker是一个开源平台&#xff0c;用于自动化应用程序的部署、扩展和管理。它使用容器技术&#xff0c;使开发、测试和部署过程更加简化和可靠。本文将介绍在Ubuntu 22.04 LTS上安装Docker-ce的步骤。 步骤1&#xff1a;更新软件包列表 …

qt-C++笔记之使用QLabel和QPushButton实现一个bool状态的指示灯

qt-C笔记之使用QLabel和QPushButton实现一个bool状态的指示灯 code review! 文章目录 qt-C笔记之使用QLabel和QPushButton实现一个bool状态的指示灯1.QPushButton实现2.QLabel实现2.QLabel实现-对错符号 1.QPushButton实现 运行 代码 #include <QtWidgets>class Ind…

学习Java第74天,Ajax简介

什么是ajax AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 AJAX 不是新的编程语言&#xff0c;而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页…

Web前端-JavaScript(对象)

文章目录 1.对象1.1 概念1.2 创建对象三种方式**对象字面量创建对象**&#xff1a;new Object创建对象构造函数创建对象 1.3 遍历对象 2.作用域1.1 概述1.2 全局作用域1.3 局部作用域1.4 JS没有块级作用域1.5 变量的作用域1.6 作用域链1.7 预解析 1.对象 1.1 概念 什么是对象 …