www.6799.com采取VSTS跟Kubernetes整合进行CI

为什么VSTS要搭配Kubernetes?

为什么VSTS要搭配Kubernetes?

普普通通我们在支付管理软件项目标时候都会遇见三个很厌恶的标题,就是付出、测试、生产条件区别,导致开发职员和测试人士甚至和平运动维吵架。

通常大家在付出管理软件项目标时候都会碰着贰个很看不惯的难题,就是支付、测试、生产条件不雷同,导致开发职员和测试职员甚至和平运动维吵架。

www.6799.com 1

www.6799.com 2

因为周边的情理环境依然云环境中,那几个铺排环境都以由运转人士提前准备好的。每趟换代代码版本,都要不大心的在多少个环境在此以前修改分化的参数配置,一一点都不小心就将生育环境的数据库连接到了测试库,可能日志文件的地点写到了二个不设有的盘符里等等各样极度情状,有了Kubernetes这样微服务编排框架,我们能够经过代码的花样描述服务的架构,描述服务时期的借助关系,做到了
Infrastructure As
Code。那样能够大大减少了开发运行之间在做环境切换时带来的额外国资本金。

因为周边的大体环境依然云环境中,那几个安排环境都以由启摄人心魄士提前准备好的。每一遍换代代码版本,都要相当小心的在多少个环境此前修改分化的参数配置,一很大心就将生产条件的数据库连接到了测试库,或许日志文件的地点写到了多个不设有的盘符里等等各个十分景况,有了Kubernetes那样微服务编排框架,大家能够经过代码的花样描述服务的架构,描述服务时期的借助关系,做到了
Infrastructure As
Code。那样能够大大收缩了耗费运转之间在做环境切换时带来的额外国资本金。

将VSTS的接踵而至 蜂拥而至集成力量和缕缕发布能力构成Kubernetes,能够让项目共青团和少先队更易于察觉和创新代码(那时候的Infrastructure也一度是代码了)的标题,真正将精力放在创新用户体验和改进产品品质上。

将VSTS的无休止集成力量和不止发表能力整合Kubernetes,能够让项目团队更易于发觉和创新代码(那时候的Infrastructure也一度是代码了)的标题,真正将精力放在创新用户体验和考订产品品质上。

有备无患VSTS管理条件

准备VSTS管理条件

第3大家供给到www.visualstudio.com下申请好的VSTS账号,然后在账号下创建八个用Git作为代码管理的品种

首先大家要求到www.visualstudio.com下申请好的VSTS账号,然后在账号下成立一个用Git作为代码管理的类型

www.6799.com 3

www.6799.com 4

创建好项目后大家就足以选择git
clone将代码库同步到地头开发服务器上边来,营造开发职员的workspace

创制好项目后我们就足以运用git
clone将代码库同步到地头开发服务器上边来,创设开发人士的workspace

准备Docker Registry和Kubernetes环境

准备Docker Registry和Kubernetes环境

2.预备2个私有的Docker Registry.因为大家必要将Build
好的代码放进2个Docker的Images下边然后推送到2个民用的Registry上。Azure
Container
Registry无疑是2个不行好的选料,因为等一下大家的代码需求配置到Azure的Kubernetes群集里,Image所在的地方离布署的地点越近,安插速度自然也就越快了。而且Azure
Container
Registry还援救全世界同步,假如您的代码打算满世界多站点发布以来,Azure
Container Registry服务确实是最佳的选拔。创造Azure Docker
Registry可以参考官方文书档案:https://docs.microsoft.com/zh-cn/azure/container-registry/ 

2.预备一个民用的Docker Registry.因为大家必要将Build
好的代码放进三个Docker的Images上边然后推送到1个私房的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 

3.备选Kubernetes群集,Azure上支撑提供了AKS服务,让大家能够快速搭建出来Kubernetes的群集环境,收缩了运营职员管理群集的压力,搭建方法参考官方文书档案:https://docs.microsoft.com/zh-cn/azure/aks/kubernetes-walkthrough-portal 

  搭建的进程中注意多少个地方

  搭建的历程中注意多少个地方

1.准备好Service Principle服务宗旨APP

1.备选好Service Principle服务主导APP

2.准备好linux ssh登录的Key

2.准备好linux ssh登录的Key

设置好群集后通过 Azure CLI 2.0命令:az aks install-cli
那样大家就能够活动在你的linux上装上Kubernetes的kubectl命令行工具了.

安装好群集后透过 Azure CLI 2.0命令:az aks install-cli
那样大家就足以自动在你的linux上装上Kubernetes的kubectl命令行工具了.

要管理Kubernetes的话,要求周转下面包车型大巴授命,在位置生成K8S的田管配置消息

要保管Kubernetes的话,须求周转上边包车型大巴命令,在本土生成K8S的管制配置音讯

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

获取到的配备内容会放在/home/<youraccount>/.kube/config文件之中,那文件之中的内容格外首要,等一下VSTS需求以此消息来跟K8S群集举行链接的。

收获到的安顿内容会放在/home/<youraccount>/.kube/config文件之中,那文件之中的剧情12分关键,等一下VSTS须求这几个新闻来跟K8S群集举行链接的。

咱俩得以由此kubectl get nodes命令看看群集的境况

大家得以透过kubectl get nodes命令看看群集的光景

www.6799.com 5

www.6799.com 6

始发配备VSTS的自动化创设和自动化发表

开首布局VSTS的自动化塑造和自动化公布

大家再VSTS的类型站点里找到Build and Release的菜单项,点击New的按钮

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

www.6799.com 7

www.6799.com 8

选择NodeJS with Gulp的模板

选择NodeJS with Gulp的模板

www.6799.com 9

www.6799.com 10

成立好后,大家先裁剪掉一时半刻不需求的Task,然后添加上Docker build
Image和push Image的Task

创立好后,大家先裁剪掉临时不须要的Task,然后添加上Docker build
Image和push Image的Task

www.6799.com 11—>www.6799.com 12

www.6799.com 13—>www.6799.com 14

配置Build an image Task:

配置Build an image Task:

在此处大家得以将一起初准备好的Azure Container Registry环境用上了

在此地我们能够将一上马准备好的Azure Container Registry环境用上了

www.6799.com 15

www.6799.com 16

安顿Push an image Task,Image
Name使用BuildId作为镜像的Tag,那样前面铺排到Kubernetes的时候就能够钦命那一个Tag对Image举行翻新了。

布局Push an image Task,Image
Name使用BuildId作为镜像的Tag,这样前边布署到Kubernetes的时候就足以钦点那一个Tag对Image进行翻新了。

www.6799.com 17

www.6799.com 18

Build的概念不算太复杂,定义完事后咱们就能够直接接触3回Build来视察一下配置是或不是中标了。

Build的概念不算太复杂,定义完之后我们就能够直接接触贰次Build来查看一下配置是不是中标了。

下图正是Build成功之后的日记,小编图中大家得以看看Docker push命令将image
push到了笔者们事先建立的Azure注册Repository里面了

下图正是Build成功以往的日志,我图中我们得以看到Docker push命令将image
push到了我们事先建立的Azure注册Repository里面了

www.6799.com 19

www.6799.com 20

自动化营造成功之后,咱们得以做自动化的安顿了,

自动化营造成功以往,大家能够做自动化的安排了,

创立多少个新的宣布定义

创建二个新的昭示定义

www.6799.com 21

www.6799.com 22

在Environment里点击一下浅绿灰字体部分,编辑安顿职务

在Environment里点击一下暗绿字体部分,编辑陈设任务

www.6799.com 23

www.6799.com 24

在配置安顿职责时,选用Deploy to
Kubernetes的职分项目,并且在Manage这几个煤黑链接那里配置Kubernetes的链接信息。

在布局地署职务时,采取Deploy to
Kubernetes的任务项目,并且在Manage那一个豆沙色链接那里配置Kubernetes的链接消息。

在Kubernetes的授命里应用set命令,通过设置image的换代地址来公告Kubernetes更新配备版本。

在Kubernetes的指令里选择set命令,通过安装image的更新鸿营地产址来公告Kubernetes更新配备版本。

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

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

在VSTS里面,只须要argument里面把前面包车型大巴局地填上就好

在VSTS里面,只必要argument里面把前边的一对填上就好

www.6799.com 25

www.6799.com 26

配置Kubernetes的 Service Endpoints信息:

配置Kubernetes的 Service Endpoints信息:

www.6799.com 27

www.6799.com 28

安顿好布置职责后,我们能够尝试一入手动将前方成功的Build计划到Kubernetes环境中

配置好布局任务后,大家能够尝试一动手动将眼前成功的Build陈设到Kubernetes环境中

www.6799.com 29www.6799.com 30

www.6799.com 31www.6799.com 32

现今大家早已足以成功将一份代码计划到了Kubernetes里面去了

时于今天我们曾经足以成功将一份代码陈设到了Kubernetes里面去了

www.6799.com 33

www.6799.com 34

配置成功后,能够透过kubectl get pods
-w命令监察和控制一下Kubernetes对容器进行革新替换的进度,从下图中能够看来Kubernetes创立了2个新的pod,然后将旧版本的pod举行了Terminate.

陈设成功后,能够经过kubectl get pods
-w命令监察和控制一下Kubernetes对容器进行更新替换的经过,从下图中得以看来Kubernetes创设了三个新的pod,然后将旧版本的pod进行了Terminate.

www.6799.com 35

www.6799.com 36

万一大家要求将Release跟Build自动链接起来,能够经过编写制定Release定义,选用图上的雷暴按钮,将Continuous
deployment trigger的按钮设置为Enabled即可。

若是我们供给将Release跟Build自动链接起来,能够透过编写制定Release定义,采纳图上的雷暴按钮,将Continuous
deployment trigger的按钮设置为Enabled即可。

www.6799.com 37www.6799.com 38

www.6799.com 39www.6799.com 40