持续集成交付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.mzph.cn/news/236717.shtml

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

相关文章

智能优化算法应用:基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于野狗算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.野狗算法4.实验参数设定5.算法结果6.参考文献7.MA…

APP测试要点有哪些?本文已经给你梳理好了!

我们日常购物、旅游、支付等活动都离不开手机&#xff0c;由此衍生了很多APP。 比如每天使用频率非常高的微信、支付宝、微博、抖音、王者荣耀等等。 APP测试主要进行功能测试、性能测试、自动化测试、安全性测试、兼容性测试、专项测试。 01 APP测试流程 APP测试流程与web…

NLP论文阅读记录 - AAAI-23 | 01 Cogito Ergo Summ:通过语义解析图和一致性奖励对生物医学论文进行抽象总结

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1抽象概括2.2图增强摘要2.3 抽象概括的强化学习 三.本文方法COGITOERGOSUMM 框架3.1 问题陈述3.2 图表构建**事件图****AMR 图****图合并和重新连接**Model文本编码器图编码器解码器…

机器学习--线性回归

目录 监督学习算法 线性回归 损失函数 梯度下降 目标函数 更新参数 批量梯度下降 随机梯度下降 小批量梯度下降法 数据预处理 特征标准化 正弦函数特征 多项式特征的函数 数据预处理步骤 线性回归代码实现 初始化步骤 实现梯度下降优化模块 损失与预测模块 …

在Linux Docker中部署RStudio Server,实现高效远程访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、Cpolar杂谈 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. 安装RStudio Server二. 本地访问三. Linux 安装cpolar四. 配置RStudio serv…

图像卷积操作

目录 一、互相关运算 二、卷积层 三、图像中目标的边缘检测 四、学习卷积核 五、特征映射和感受野 一、互相关运算 严格来说&#xff0c;卷积层是个错误的叫法&#xff0c;因为它所表达的运算其实是互相关运算&#xff08;cross-correlation&#xff09;&#xff0c;而不是…

软考学习五部曲

视频学知识 学习知识环节看视频看书都可以&#xff0c;书很厚一本。如果要看完的话要很多时间&#xff0c;所以我觉得还是看视频更快一点&#xff0c;而且视频还可以倍速。我看的那个视频我觉得非常不错&#xff0c;但是我看的视频b站已经下架了看不到了。其他的视频没仔细去看…

原生Android项目中引入Flutter并实现android 与 flutter 之间的通信

前提条件&#xff1a; 完成Flutter安装与环境搭建 一、原生Android项目中引入Flutter 1、在Android项目中&#xff0c;添加Flutter支持的体系结构过滤器 项目 - > app -> build.gradle ...... defaultConfig {......ndk {// Flutter支持的体系结构过滤器abiFilters a…

【笔记】Spring是什么

什么是spring&#xff1f; Spring的基础知识铺垫 IOC AOP<-Spring->容器->生态 先说你的认知&#xff0c;总-分结构 spring是一个基础的框架&#xff0c;同时提供了Bean的容器&#xff0c;用来方便装载具体的Bean对象&#xff0c;之前在使用对象的时候必须自己new&…

公章透明png图片怎么弄?一键生成透明图片

公章透明png图片可以应用于图像或照片的水印保护。通过将公章图片作为水印添加到图像上&#xff0c;可以保护图像的版权和来源&#xff0c;并防止未经授权的复制和使用&#xff0c;但是通常我们扫描到电脑上的公章图片都是有背景底色的&#xff0c;如何将图片去背景变透明呢&am…

Android Studio使用Genymotion

1. Genymotion介绍 GenyMotion速度之快令人发指&#xff0c;模拟效果堪比真机调试&#xff0c;支持绝大部分的模拟器功能&#xff0c;甚至包括语音&#xff0c;Google Now&#xff0c;支持eclipse, android studio。非常适合用来开发和演示效果。 2. Genymotion下载 Genymotio…

设计模式03结构型模式

结构型模式 参考网课:黑马程序员Java设计模式详解 博客笔记 https://zgtsky.top/ 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式&#xff0c;前者采用继承机制来组织接口和类&#xff0c;后者釆用组合或聚合来组合对象。 由于…

数字生态文明:构建可持续发展的未来

数字技术的快速发展给人类社会带来了巨大的变革,同时也对生态环境产生了深远的影响。在这个背景下,数字生态文明的概念应运而生,它强调在数字时代实现经济、社会和环境的协调发展,构建可持续的未来。 一、数字生态文明的内涵 数字生态文明是指在数字经济发展过程中,遵循…

什么是逆变器电源?逆变器需要测试哪些指标?

逆变器是一种将低压直流电(12v/24v/48v)转化为220v交流电的电子设备&#xff0c;由逆变桥、控制逻辑、滤波电路组成&#xff0c;被广泛应用于电脑、洗衣机、空调、太阳能发电系统、电池储能系统、风力发电系统等。逆变器有以下特点&#xff1a; 1.转换效率高、启动快; 2.安全性…

Java 第14章 集合 课堂练习

文章目录 HashSet判断是否两次add都能加入成功HashSet编码遍历HashMap判断输出中是否有"abc" HashSet判断是否两次add都能加入成功 HashSet set new HashSet(); set.add(new String("hsp")); set.add(new String("hsp"));第一次可以&#xff0…

直播电商“去网红化”势在必行,AI数字人打造品牌专属IP

近年来&#xff0c;网红直播带货“翻车”事件频发&#xff0c;给品牌商带来了信任危机和负面口碑的困扰&#xff0c;严重损害了企业的声誉。这证明强大的个人IP,对于吸引粉丝和流量确实能起到巨大的好处,堪称“金牌销售”,但太过强势的个人IP属性也会给企业带来一定风险&#x…

.NET 药厂业务系统 CPU爆高分析

Windbg 分析 1. CPU 真的爆高吗 还是老规矩&#xff0c;要想找到这个答案&#xff0c;可以使用 !tp 命令。 0:044> !tp logStart: 1 logSize: 200 CPU utilization: 88 % Worker Thread: Total: 8 Running: 4 Idle: 4 MaxLimit: 1023 MinLimit: 4 Work Request in Queue: …

如何本地搭建Zblog网站并通过内网穿透将个人博客发布到公网

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站…

Navicat里MySQL表的创建(详细)

我以Navicat连接MySQL为例&#xff0c;演示表的创建方法。 前提 创建表的语法&#xff1a; create table 表名 &#xff08; 字段名1&#xff0c;字段类型&#xff0c; 字段名2&#xff0c;字段类型&#xff0c; ...... 字段名n&#xff0c;字段类型 ); 我计划在test库存放一…

第三方登录-pc支付宝扫码登录流程

最近有个奇葩的需求&#xff0c;用户要支持支付宝扫码登录。这个需求很少见&#xff0c;那就做一下&#xff0c;看起来有点难&#xff0c;其实很简单。 先看结果 流程梳理 核心代码 获取支付宝扫码页面的url // 获取支付宝扫码登录页面的urlasync function getZFBLoginUrl()…