共计 3597 个字符,预计需要花费 9 分钟才能阅读完成。
在软件开发中,我的项目部署是很重要的一环。特地是在麻利开发中,如何疾速、高效且顺利的将批改的代码转化成实际效果,始终是一个津津有味的话题。常见继续集成和继续部署(下文简称 CI/CD)的实现计划是 Jenkins,通过 Jenkins+ 宿主机服务器,疾速实现我的项目迭代,这样做的确是会给咱们带来极大的便当,也是始终比拟风行的计划。然而事实中却没这么简略,咱们当初更多的是基于容器化实现 K8s 集群开发,Jenkins 总是会显得有些有力,更别说在 K8s 中实现一整套的基于多环境的 CI/CD 操作了。那么咱们如何能力完满的实现基于 K8s 的 CI/CD 呢?
通过本次试验,咱们以微软 Azure Kubernetes Service 为例(下文简称 AKS),应用 ASP.NET Core 我的项目,来剖析 CI/CD 操作。
CI 篇
后期筹备账号
首先,须要注册一个 Azure 账号。
其次,须要一个源代码治理仓库,能够新建并应用 Azure DevOps 代码库,有很好的看板和操作提醒,举荐应用。
也能够应用本人的 GitHub 账户,自从微软收买 Github 以来,对 Azure 的兼容性特地敌对!如果在 GitHub 上曾经有我的项目了,能够间接建一个 CI 的 Pipeline 即可,建完后成果如图,具体的操作部署下文会显示阐明。
应用 Azure 来创立 Pipeline 的目标次要有两个:
1、保障代码的准确性,比方长期批改一个代码,又没有编译器,个别就间接批改,而后提交,让 CI 来初步查看代码的准确性;
2、能够构建镜像并推送到仓库,甚至还能够下一篇文章说到的间接部署。
真正意义上实现 批改代码 == 预览成果 的目标。
Github 的 Action 也有这样的性能,实现思路大抵一样,只不过在 CD(继续部署上),不太好操作,具体能够参考我 Blog.Core 我的项目的代码,这里不细说。
连贯 Dockers Registry 服务
新建 CI 的管道,举荐配置一个 Docker Registry 服务,这样能够将 Build 实现后的镜像推送到镜像仓库中,不便后续的 CD 操作。
步骤 1 – 我的项目设置
点击我的项目下方的 Project settings 操作链接:
在弹出的新页面中,抉择左侧导航条的 Service connections 操作:
点击新建服务连贯按钮:
步骤 2 – 配置 Docker Registry 选项
搜寻 docker 关键词,选中 Docker Registry 选项:
抉择 Registry 类型,输出 DockerID 和明码,给这个连贯取一个名字,点击 Save 按钮。
一个服务连贯就创立实现了,在当前的 CI 操作中,会用到这个连贯。
用户名和明码要正确,否则会提醒谬误,能够点击 Verify 进行校验:
新建一个 Pipeline 管道
步骤 1 – 配置 Code 源仓库
抉择新建 Pipeline,勾选 Github,如果源代码治理是在 Azure DevOps 中的,能够间接第一个选项。因为我应用的是 Github,所以间接勾选 GitHub,根本都是采纳的是 YAML 的形式。
抉择一个本人的我的项目(PS:这个时候可能须要 Github 二次明码确认):
步骤 2 – 配置你的 Pipeline
采纳容器化部署,点击 Docker 选项,留神和第二个的区别:
配置 YAML 文件,零碎会默认创立一个,只有 build 操作,能够去掉默认的 task,在后侧抉择一个 docker 的 Assistant 模板:
也能够间接点击左侧代码中 settings 链接,主动唤起编辑窗口:
其余都是默认,只须要勾选刚刚的服务连贯就行,而后输出本人的容器仓库名,请留神,须要在镜像名中减少前缀,也就是各自的 Docker ID,点击 Add 按钮,左侧就同步变动了。
步骤 3 – 点击运行 Pipeline
而后点击右上角的 Save and run 按钮,一个残缺的 CI 操作就实现了。
同时会把刚刚为创立 Pipeline 而产生的 YAML 文件代码给同步到 GitHub 上:
Build 实现后,咱们能够在 Docker hub 中看到推送的镜像:
以上,咱们曾经实现了继续集成(下文简称 CI)的局部,胜利将 ASP.NET Core 我的项目进行打包编译,并推送到了指定的 Docker 镜像仓库中。
当初咱们持续实现成品的继续部署(下文简称 CD)流程。
CD 篇
增加 Release 管道
步骤 1 – 新建 Pipeline
在左侧导航条中,点击 Pipelines(管道)下的 Release(公布)选项,新建一个 Pipeline,如果之前未创立过 Release 的 Pipeline,页面默认展现成果如下所示:
在右侧的模板中,抉择一个空模板:
步骤 2 – 配置 Artifact
将鼠标挪动到左侧的 Artifacts(制品)模块上,单击增加一个 Artifact,此时右侧会唤起编辑窗口,单击 build(编译)选项:
抉择之前 build 的管道,应用 Latest 最新版本,此刻咱们的 CD 管道便正式和 CI 管道关联起来。
步骤 3 – 主动构建
单击制品右上角的构建图标,开启主动构建,这样只有提交代码的时候,便会触发 CI 的 Build 操作,接着便立刻触发 CD 的 Release 操作,整个流程零打碎敲。
配置好了 Artifact,而后就能够配置 task 工作了。
配置 Agent 代理
将鼠标放到右侧的 Stage(阶段)选项上,能够看到有三块性能抉择,别离是:
①、对 Stage 进行重命名;
②、增加一个新的 Stage;
③、编辑 task(工作);
点击工作链接,配置 Agent Job(代理工作),这里有两点须要留神:
1、代理池,指部署的中央,目前默认即可,当前能够用本人的服务器;
2、agent specification(代理规格),就是服务器规格配置;
请留神!这里默认的是 vs2019 规格,是 windows 环境的,如果不改的话,会呈现 Docker 不能运行的平台问题。所以间接选 Linux 即可。
配置 Task 工作
步骤 1 – 删除旧容器
点击 AgentJob 右侧的加号,筛选 docker 的 task 模板
在新唤起的编辑页中编辑命令,删除旧的容器,间接用 run 命令,所以 Task 的版本用 0.*:
抉择容器 Registry 地址,配置一个 action(行为),减少一个删除镜像的命令
rm -f xxxx
步骤 2 – 运行新容器
与第一步删除旧容器的阶段步骤类似,再建一个运行容器的 Stage,整体流程统一,配置图如下所示:
Task 版本为 1.* 的 Docker 容器配置,应用自定义的 DockerRegistry,配置镜像名,反对自定义,比方我加了前缀,最初指定端口。
点击 Save(保留),一套简略的继续集成管道就建好了
能够手动触发,create release,就能够看到具体的过程:
等一段时间后,新容器曾经被胜利运行了,只不过目前还没有配置本人的代理池,因而无奈查看具体的展现成果。
如何查看成果
目前 Azure 部署我的项目有两种常见的形式:
1、配置自定义代理池,用本人的服务器提供代理池,生成镜像和运行容器都会在本人的代理池服务器中运行。
2、间接应用 Azure 的 k8s 服务,新建一个 Deploy 的 Task,指定对应的服务连贯和 Yml 文件,这样就会把镜像推送到 Azure 的镜像仓库,并将镜像运行构建 Pod 实例。
编者两者都用过,用第二种举例,大抵是这样的:
先构建并推送镜像到镜像仓库
接着对镜像部署
总结
本文先以 ASP.NET Core 为例解说了如何在 Azure 中实现继续集成操作,整体流程简略不便,文档特地清晰,再一次为微软 Docs 文档而欢呼。
后以 ASP.NET Core 为例解说了如何在 Azure 中实现继续部署操作,整体流程以继续集成为前提,一步步将咱们的 Code 运行起来,真正意义上实现了自动化操作。
Source Link:
https://docs.microsoft.com/zh…
https://devblogs.microsoft.co…
Github:
https://github.com/anjoy8/Blo…
Source Link:
https://docs.microsoft.com/zh…
https://devblogs.microsoft.co…
Github:
https://github.com/anjoy8/Blo…
微软最有价值专家
微软最有价值专家是微软公司授予第三方技术专业人士的一个寰球奖项。28 年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和教训而取得此奖项。
MVP 是通过严格筛选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的激情并乐于助人的专家。MVP 致力于通过演讲、论坛问答、创立网站、撰写博客、分享视频、开源我的项目、组织会议等形式来帮忙别人,并最大水平地帮忙微软技术社区用户应用 Microsoft 技术。
更多详情请登录官方网站:
https://mvp.microsoft.com/zh-cn
这里有更多微软官网学习材料和技术文档,扫码获取免费版!
内容将会不定期更新哦!