这里写自定义目录标题
云原生容器化部署
腾讯云提供了容器服务(集群),所以可以基于k8s快速部署我们的服务。对于测试和部署服务的自动化(CI/CD),这里提供2种方案,一种轻量型的是github actions,一种是偏重量型的coding.net devops,两种都会简单介绍到。
先说原理
github actions
它会根据仓库下面.github/workflows/*.yml文件来实现ci/cd功能。
jobs 下面可以有多个job,每个job可以有多个step(带名称的), 如果你用过jenkins,可以类比:job相当于stage,step和step对应,runs-on是运行环境,例如 ubuntu-latest,可以拉起一个最新的ubuntu镜像运行jobs。
on 可以用于定义一个触发条件,以下定义了一个master 分支的push事件的触发器。
on:
push:
branches:
- master
当repo收到请求的时候,会拉起一个ci/cd的部署机,然后拉取runs-on里面定义的镜像,在镜像里执行相关任务。由于测试和部署的相关脚本都写在jobs中,所以相当于自动去执行了这些任务,至此cicd完成。
由于github actions集成在自己的服务中,所以它可以直接通过on的方式定义触发条件,非常方便,无需webhook介入。
webhook
说devops前先说一下devops触发器的关键:webhook。webhook 是定义在repo下面的,基本仓库中心如github, gitlab, 工蜂等都是支持webhook的。webhook原理很简单,如果你hook了push请求,那么每次repo得到push请求都会向你hook的地址发起一个http请求(一般为post请求),这样你就知道 “什么时间什么人向哪个仓库push了什么”。 所以你可以根据这个做一些非常有用的功能:比如微服务一堆repo的情况下,需要把所有的代码集中起来,有人向serviceA仓库提交了更新,自动将代码合并到一个主repo中。
devops
讲完webhook,可以讲devops了。devops原理就是一堆脚本,通过webhook的触发条件,触发对应的脚本,当然这里可以有一些逻辑,比如 stage1成功了,则触发stage2,不成功则触发stage3。不同stage间可以用传递变量,可以互相影响,可以说devops相当于在脚本上封装了一层,添加了触发器等。
不同平台的devops语言不相同,coding.net devops使用的是jenkins来描述,也有使用别的语言描述的,大体上类似。coding.net引入github库的时候,当你授权了访问repo的时候,它会自动去repo下面的webhook增加一条自己的规则,以实现触发功能。
devops调起的机器是在devops里面自己设定的,所以它并没有权限访问到加密资源(例如docker镜像,github private repo的代码,github secret等等),所以要求在devops内部需要以一定的方式进行权限的赋予,比如docker login来登陆,设置全局变量中的密码等等,这是区别于actions的地方
secret
明确运行cicd的机器在哪,哪些资源可以访问到,哪些资源访问不到,需要另外给予权限,这点很重要。
配置腾讯云
首先做个推广(没钱负担服务器费用了 腾讯云的推广链接)
-
省钱方案:打折的时候购买普通服务器一年,然后在容器服务里选他们作为计算节点。(集群 - 新建 的第二部可以选)
-
不差钱的:直接点开 容器服务 - 集群 - 新建 - 开多少随意
-
弹性:可以开弹性集群,用多少给多少钱
配置kubectl 连接集群
- 点击集群