利用VSTS跟Kubernetes整合进行CI/CD

为什么VSTS要搭配Kubernetes?

通常我们在开发管理软件项目的时候都会碰到一个很头痛的问题,就是开发、测试、生产环境不一致,导致开发人员和测试人员甚至和运维吵架。

因为常见的物理环境甚至云环境中,这些部署环境都是由运维人员提前准备好的。每次更新代码版本,都要很小心的在几个环境之前修改不同的参数配置,一不小心就将生产环境的数据库连接到了测试库,或者日志文件的地址写到了一个不存在的盘符里等等各种异常情况,有了Kubernetes这样微服务编排框架,我们可以通过代码的形式描述服务的架构,描述服务之间的依赖关系,做到了 Infrastructure As Code。这样可以大大减少了开发运维之间在做环境切换时带来的额外成本。

将VSTS的持续集成能力和持续发布能力整合Kubernetes,可以让项目团队更容易发现和改进代码(这时候的Infrastructure也已经是代码了)的问题,真正将精力放在改进用户体验和改进产品品质上。

准备VSTS管理环境

首先我们需要到www.visualstudio.com下申请好的VSTS账号,然后在账号下创建一个用Git作为代码管理的项目

创建好项目后我们就可以利用git clone将代码库同步到本地开发服务器上面来,构建开发人员的workspace

准备Docker Registry和Kubernetes环境

2.准备一个私有的Docker Registry.因为我们需要将Build 好的代码放进一个Docker的Images上面然后推送到一个私有的Registry上。Azure Container Registry无疑是一个非常好的选择,因为等一下我们的代码需要部署到Azure的Kubernetes群集里,Image所在的地方离部署的地方越近,部署速度当然也就越快了。而且Azure Container Registry还支持全球同步,如果你的代码打算全球多站点发布的话,Azure Container Registry服务无疑是最好的选择。创建Azure Docker Registry可以参考官方文档:https://docs.microsoft.com/zh-cn/azure/container-registry/ 

3.准备Kubernetes群集,Azure上支持提供了AKS服务,让我们可以快速搭建出来Kubernetes的群集环境,减少了运维人员管理群集的压力,搭建方法参考官方文档:https://docs.microsoft.com/zh-cn/azure/aks/kubernetes-walkthrough-portal 

  搭建的过程中注意几个地方

1.准备好Service Principle服务主体APP

2.准备好linux ssh登录的Key

安装好群集后通过 Azure CLI 2.0命令:az aks install-cli 这样我们就可以自动在你的linux上装上Kubernetes的kubectl命令行工具了.

要管理Kubernetes的话,需要运行下面的命令,在本地生成K8S的管理配置信息

az aks get-credentials --resource-group=myResourceGroup --name=myK8sCluster

获取到的配置内容会放在/home/<youraccount>/.kube/config文件里面,这文件里面的内容非常重要,等一下VSTS需要这个信息来跟K8S群集进行链接的。

我们可以通过kubectl get nodes命令看看群集的状况

开始配置VSTS的自动化构建和自动化发布

我们再VSTS的项目站点里找到Build and Release的菜单项,点击New的按钮

选择NodeJS with Gulp的模板

创建好后,我们先裁剪掉暂时不需要的Task,然后添加上Docker build Image和push Image的Task

--->

配置Build an image Task:

在这里我们可以将一开始准备好的Azure Container Registry环境用上了

配置Push an image Task,Image Name使用BuildId作为镜像的Tag,这样后面部署到Kubernetes的时候就可以指定这个Tag对Image进行更新了。

Build的定义不算太复杂,定义完之后我们就可以直接触发一次Build来检验一下配置是否成功了。

下图就是Build成功之后的日志,我图中我们可以看到Docker push命令将image push到了我们之前建立的Azure注册Repository里面了


自动化构建成功之后,我们可以做自动化的部署了,

创建一个新的发布定义

在Environment里点击一下蓝色字体部分,编辑部署任务

在配置部署任务时,选择Deploy to Kubernetes的任务类型,并且在Manage这个蓝色链接这里配置Kubernetes的链接信息。

在Kubernetes的命令里使用set命令,通过设置image的更新地址来通知Kubernetes更新部署版本。

命令的格式是:kubectl set image deployment/<deploymentname> <imagename>=<image url>

在VSTS里面,只需要argument里面把后面的部分填上就好

配置Kubernetes的 Service Endpoints信息:

配置好部署任务后,我们可以尝试一下手动将前面成功的Build部署到Kubernetes环境中

至此我们已经可以成功将一份代码部署到了Kubernetes里面去了

部署成功后,可以通过kubectl get pods -w命令监控一下Kubernetes对容器进行更新替换的过程,从下图中可以看到Kubernetes创建了一个新的pod,然后将旧版本的pod进行了Terminate.

如果我们需要将Release跟Build自动链接起来,可以通过编辑Release定义,选择图上的闪电按钮,将Continuous deployment trigger的按钮设置为Enabled即可。

原文地址:https://www.cnblogs.com/wing-ms/p/8177718.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

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

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

相关文章

P3112-[USACO14DEC]后卫马克Guard Mark【贪心】

正题 题目链接:https://www.luogu.org/problemnew/show/P3112 题目大意 有nnn只牛&#xff0c;每只牛有hi,wi,sih_i,w_i,s_ihi​,wi​,si​分别表示有多高&#xff0c;有多重&#xff0c;上面最多承载总共多重的牛。 选择一些牛依次摆放要求高度超过TTT且上面还能增加最重的物…

(十一)Spring 基础注解(对象创建相关注解、注入相关注解)

注解编程 目录 注解基础概念注解的作用Spring 注解的发展历程Spring 基础注解&#xff08;Spring 2.x&#xff09;对象创建相关注解ComponentRepository、Service、ContollerScopeLazy生命周期注解 PostConstruct、PreDestroy注入相关注解用户自定义类型 AutowiredJDK 类型注…

Spark Streaming之统计socket单词数

一、统计socket单词数 侦听TCP套接字的数据服务器接收到的文本数据中的单词数。 二、maven配置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/…

使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇

介绍这是“使用 ASP.NET Core &#xff0c;Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用”系列文章的第二篇。以下可以看其他篇目&#xff1a;使用 ASP.NET Core &#xff0c;Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用 第一篇 &…

jzoj4786-[NOIP2016提高A组模拟9.17]小a的强迫症【数论】

正题 题目大意 nnn个颜色第iii个个数为numinum_inumi​个&#xff0c;然后要求第iii种颜色的最后一个一定在第i1i1i1种的最后一个前面。求方案总数。 解题思路 首先先定义一个1∼n1\sim n1∼n的序列&#xff0c;然后依次将剩下的数插入。 第iii个颜色有z(∑j1i−1numj)1z(\su…

0-MyBatis简介

MyBatis简介 目录 简介MyBatis 历史MyBatis特点为什么要使用 MyBatis&#xff1f;JDBC 缺点Hibernate 缺点MyBatis简介 MyBatis 历史 MyBatis 原是 apache 的一个开源项目 iBatis&#xff1b;2010年6月这个项目由 apache software foundation 迁移到了 google code&#xf…

揭秘微软6万工程师DevOps成功转型的技术「武器」

在微软&#xff0c;通过其自身数年的 DevOps 转型&#xff0c; 6 万名工程师实现了更好的软件平台创新和快速迭代。微软有庞大的技术产品矩阵&#xff0c;同时也具有每天发布的能力&#xff0c;其中&#xff0c;微软研发云是支撑整个开发过程与运维最重要的基础平台。微软研发云…

jzoj4787-[NOIP2016提高A组模拟9.17]数格子【矩阵乘法】

正题 题目大意 求121\times 212的方块铺满4n4\times n4n的方格方案总数。 解题思路 首先 当计算fnf_nfn​时&#xff0c; 显然最后一排可以(−−−−)(∣∣∣∣)(−−∣∣)(∣−−∣)(∣∣−−)(--\ --)(|\ \ |\ \ |\ \ |)(--\ \ |\ \ |)(|\ \ --\ \ |)(|\ \ |--)(−− −−)…

Flowable学习笔记(一、入门)

转载自 Flowable学习笔记&#xff08;一、入门&#xff09; 一、Flowable简介 1、Flowable是什么 Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义&#xff08;用于定义流程的行业XML标准&#xff09;&#xff0c; 创建这些流…

01-MyBatis入门程序

MyBatis入门程序 目录 1. 下载 Mybatis 核心包2. 创建工程&#xff0c;引入 MyBatis 核心包及依赖包3. 创建 customer 表&#xff0c;建立与表对应的 domain使用 lombok&#xff0c;开启注解创建 Customer 类4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml5. 创建表对象…

角落的开发工具集之Vs(Visual Studio)2017插件推荐

“ 工具善其事&#xff0c;必先利其器&#xff01;装好这些插件让vs更上一层楼”因为最近录制视频的缘故&#xff0c;很多朋友都在QQ群留言&#xff0c;或者微信公众号私信我&#xff0c;问我一些工具和一些插件啊&#xff0c;怎么使用的啊&#xff1f;那么今天我忙里偷闲整理一…

jzoj4788-[NOIP2016提高A组模拟9.17]序列【差分,贪心】

正题 题目大意 一个序列AAA可以每次选择一段区间(Ai1)%4(i∈[l..r])(A_{i}1)\%4(i\in [l..r])(Ai​1)%4(i∈[l..r])。求最少次数使其变成BBB序列。 解题思路 先计算出每个数字最少加多少可以变成目标数字记录入aaa数组。 然后若不考虑一个数要取模多次的话答案就是 ∑i1nmax…

02-MyBatis配置SQL打印

MyBatis 配置SQL打印 在 SqlMappingConfig.xml 中配置以下代码&#xff1a; <!--配置sql打印--> <settings><setting name"logImpl" value"STDOUT_LOGGING"/> </settings>运行效果&#xff1a;会显示 SQL 语句&#xff0c;查询结…

Flowable学习笔记(二、BPMN 2.0-基础 )

转载自 Flowable学习笔记&#xff08;二、BPMN 2.0-基础 &#xff09; 1、BPMN简介 业务流程模型和标记法&#xff08;BPMN, Business Process Model and Notation&#xff09;是一套图形化表示法&#xff0c;用于以业务流程模型详细说明各种业务流程。 它最初由业务流程管理…

ASP.NET Core文件上传与下载(多种上传方式)

前言前段时间项目上线,实在太忙,最近终于开始可以研究研究ASP.NET Core了.打算写个系列,但是还没想好目录,今天先来一篇,后面在整理吧.ASP.NET Core 2.0 发展到现在,已经很成熟了.下个项目争取使用吧.正文1.使用模型绑定上传文件(官方例子)官方机器翻译的地址:https://docs.mic…

03-映射文件的sql语句中 #{} 和 ${} 的区别以及实现模糊查询

映射文件的sql语句中 #{} 和 ${} 区别以及实现模糊查询 目录 sql 语句中的 #{}#{} 模糊查询错误用法#{} 实现模糊查询sql 语句中的 ${}${} 实现模糊查询#{} 与 ${} 对比sql 语句中的 #{} 表示一个占位符号&#xff0c;通过 #{} 可以实现 preparedStatement 向占位符中设置值…

欢乐纪中A组周六赛【2019.5.25】

前言 话说中间jzojjzojjzoj炸了一次。 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC222(J−2)WYC(me)(J-2)WYC(me)(J−2)WYC(me)250250250100100100100100100505050444(J−2)ZYC(J-2)ZYC(J−2)ZYC200200…

SpringBoot集成Flowable

一、项目结构 二、maven配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

04-插入操作更新操作删除操作

保存更新删除 目录 插入操作获取插入的最后一个id更新操作删除操作插入操作 映射文件 Customer.xml &#xff1a; 插入数据的标签为 insert&#xff0c;与查询 select 区分开来。 parameterType 是输入参数类型&#xff0c;这里指定为 Customer 对象&#xff0c;即需要传入一…

微软跨平台移动开发工具套件HockeyApp宣布免费

HockeyApp 是一款领先的移动崩溃分析和应用发布服务&#xff0c;可为开发者提供实时崩溃分析报告、用户反馈、测试版分发平台以及测试分析等功能&#xff0c;于 2016 年被微软收购&#xff0c;随后集成在了 Visual Studio 应用中心中&#xff0c;与 Xamarin Insights 一起提供移…