概述
DevOps 理念被越来越多的企业驳回,DevOps 是 Development 和 Operations 的组合词,代表着器重「软件开发人员 (Dev)」和「IT 运维技术人员 (Ops)」之间沟通单干的文化;旨在透过自动化「软件交付」和「架构变更」的流程,使得构建、测试、公布软件的过程可能更加地快捷、频繁和牢靠。在云原生时代,咱们更须要 Devops 思维来实现麻利开发,本文将介绍和实际专为云原生打造的 TKE 容器 DevOps 服务,实现从代码提交时触发镜像的主动构建,再到镜像构建胜利时触发主动部署流程将利用部署、更新到 TKE 集群中的一整套无缝连接的 Devops 流水线。
TKE 容器 DevOps 简介
TKE 容器 DevOps 是 容器服务 TKE、容器镜像服务 TCR 和 CODING DevOps 三个服务紧密结合,面向容器业务场景,具备自动化代码编译、容器镜像构建、镜像推送及利用部署等性能,为客户提供弱小的一站式云原生 DevOps 服务。容器 DevOps 疾速入门请参考 TKE 和 Coding 协同业务实现疾速迭代 最佳实际文档。
TKE 容器 DevOps 业务流程
TKE 容器 DevOps 服务贯通了整个利用开发和部署流程的全生命周期治理,实现了从更新代码到利用部署、更新的自动化,如下图所示:
如何应用 TKE 容器 DevOps
操作场景
TKE 容器 Devops 性能提供了弱小的云原生 Devops 服务,上面将依照上述 TKE 容器 Devops 业务流程图来实现从源码更新到业务公布的整套自动化流程。
前提条件
- 创立 TKE 测试集群
对于如何创立可参考文档 部署容器服务 TKE。
- 开明 容器镜像服务 TCR 服务
已创立可拜访的 TCR 测试实例和生成测试实例拜访凭证。TCR 须要开明企业标准版或高级版反对云原生交付工作流,详情请参考 容器镜像服务购买指南,目前 TCR 反对区域请参考 反对地区。
- 开明 CODING DevOps 服务
已创立和欠缺了 Coding Devops 团队。如应用子账号进行操作,请应用主账号在 CODING DevOps 控制台疾速创立领有权限的子用户或参考 子用户权限设置 提前为子账号授予对应实例的操作权限。
操作步骤
TKE 容器 Devops 拜访入口
在 TKE 控制台左侧性能菜单栏点击【Devops】性能链接即可进入【容器 Devops】介绍界面,如下图所示:
点击【立刻应用】即可跳转到所属团队的 Coding 主页面应用相干 DevOps 性能。
配置代码托管
在 Coding 团队主页面创立一个测试项目和测试代码仓库,对于 Coding 代码托管介绍请参考 代码托管介绍。创立步骤如下:
步骤 1: 在 Coding 团队主页面【我的项目】中创立测试项目,如下图所示:
步骤 2: 点击已创立的测试项目“test-jokey”进入我的项目主页面,在【代码仓库】菜单中新建测试代码仓库,如下图所示:
创立构建打算
在测试项目“test-jokey”主页面左侧菜单【继续集成】的子菜单【构建打算】中创立一个构建打算,构建打算是继续集成的根本单元,能够通过抉择构建打算模版疾速创立一个构建打算,详情请参考文档 疾速开始继续集成。
步骤 1: 抉择“构建镜像并推送到 TCR 企业版”模版疾速创立一个构件打算,创立示例如下:
步骤 2: 依据构建打算模版抉择要检出的代码源和配置 TCR 拜访凭证相干环境变量,左边能够看到模版生成的 Jenkinsfile 预览,如下图:
提醒:Coding devops 和 TCR 实例之间内网互通,镜像 push 默认应用内网传输,无需另外配置。
应用构建模版生成的构建我的项目,也能够通过点击构建我的项目的【设置】菜单再对构建详情进行自定义配置,构建打算配置页面的性能阐明如下:
【根底信息】:根底配置页面可抉择代码源和节点池等根底配置,节点池相干阐明请参考文档 构建节点。
【流程配置】:用来配置运行构建工作的环境,相干阐明请参考 构建环境。
【触发规定】:用来配置构建打算的触发规定,可反对通过多种形式来触发构建打算,相干阐明请参考 触发规定。
【变量与缓存】:环境变量与缓存配置,相干阐明请参考 环境变量 和 缓存目录。
【告诉揭示】:构建打算实现时可向指定的 Coding 团队成员发送告诉揭示。
另外还能够在【我的项目配置 -> 开发者选项 -> WebHook】中新建 WebHook 的形式将事件告诉推送到企业微信等即时通信平台,详情请参考 WebHook 和 绑定企业微信群机器人,配置示例如下图:
想理解更多对于 Coding 继续集成的具体介绍请参考 继续集成介绍。
创立继续部署
在测试项目“test-jokey”主页面左侧菜单【继续集成】的子菜单【Kubernetes】中依据步骤疏导创立继续部署流水线,如下图所示:
配置云账号
请参考 云账号 文档,增加配置部署云上资源的拜访云账号信息,能够抉择【腾讯云 TKE】或者【Kubernetes】类型的云账号,输出相干认证配置增加云账号,这里抉择了【Kubernetes】形式绑定。
配置利用和流程
对于 Coding 利用与我的项目相干阐明请参考文档 利用与我的项目和 流程配置,这里仅简略阐明下在配置利用和流程过程中的要害配置项。
在创立利用时,须要勾选【Kubernetes(TKE) 部署】形式:
在新建的利用中创立部署流程时,抉择【Kubernetes】流程模版,再依据理论须要抉择模版下的流程,这里抉择了下图中第二个流程,部署 Deployment 和 Service 到 Kubernets 集群的流程:
在【部署流程】中配置部署流程时,【启动所需制品】选项关联之前的继续集成环节生成的 TCR 仓库镜像制品:
应用【主动触发器】绑定 TCR 仓库镜像制品,这里是重点,作用是当有新版本镜像构建胜利时,将主动触发部署流程,配置形式如下:
接下来就是配置【部署 Deployment】和【部署 Service】部署阶段,两个阶段的配置形式相似,抉择之前增加的有部署权限的云账号和填写自定义的 Manifest,即自定义部署 YAML 模版。
自定义 Deployment YAML 示例如下:
提醒:对于继续部署更新策略
本示例仅应用了一个简略的 Deployment YAML 部署到 Kubernetes 集群,应用了默认的滚动部署(RollingUpdate)更新策略。实际上,能够借助 Nginx-ingress / Istio 等工具配置更高级的更新策略,如蓝绿公布、金丝雀、A/B 测试等,具体应用办法请参阅 蓝绿公布、Nginx-ingress 实现自动化灰度公布、继续部署 + TKE Mesh 灰度公布实际。
apiVersion: apps/v1
kind: Deployment
metadata:
name: devops-app
spec:
replicas: 2
selector:
matchLabels:
app: devops-app
template:
metadata:
labels:
app: devops-app
spec:
containers:
- image: xxx-test.tencentcloudcr.com/xxx-test/jokey-test # 示例镜像地址
name: devops-app
ports:
- containerPort: 5000
imagePullSecrets: # 公有仓库拜访凭证配置
- name: tcr-secret # 拜访凭证 secret
其中,对于 spec.template.spec.containers.*.image
的镜像地址字段 Coding 会有一个转换匹配规定,对于转换匹配规定的阐明请参考文档 在 manifest 中绑定制品。
对于 TKE 拉取 TCR 公有仓库镜像有两种形式:
- 在 TCR 反对区域内可配置 TKE 免密拉取 TCR 容器镜像,对于 TCR 反对区域请参考 反对地区,对于如何配置可参考文档 TKE 集群应用 TCR 插件内网免密拉取容器镜像。
- 手动配置 TKE 拉取 TCR 公有仓库镜像的拜访凭证,配置形式可参考 TKE 配置公有仓库拜访示例。
留神:下面的 Deployment YAML 示例应用了“手动配置 TKE 拉取 TCR 公有仓库镜像的拜访凭证”的形式。
自定义的 Service Manifest YAML 示例:
apiVersion: v1
kind: Service
metadata:
labels:
app: devops-svc
name: devops-svc
spec:
ports:
- port: 5000
protocol: TCP
selector:
app: devops-app
另外能够为部署流程的每个阶段配置自定义事件告诉(可选),以便方便快捷的获知部署流程执行状况,这里配置了企业微信告诉形式,获取企业微信 Webook 机器人链接的办法可参考 创立企业微信群机器人。
关联我的项目和利用
关联我的项目和利用配置请参考文档 我的项目和利用关联。
提单公布
提单公布应用和配置请参考文档 新建公布单。
想理解更多对于 Coding 继续部署的具体介绍请参考 继续部署介绍。
测试验证
在我的项目代码文件中批改增加如下所示的 v2 API 代码后提交 master 分支:
因为【继续集成】中的构建打算应用了“代码更新时主动执行”的事件触发配置,理解相干触发配置请参考 触发规定。当提交批改的代码时,会主动触发关联的构建打算执行:
如果为继续集成配置了企业微信 Webhook 告诉,企业微信也会收到相应的即时告诉音讯,如下图所示:
当构建打算生成 Docker 镜像制品时,又会主动触发关联的【继续部署】流程,将新的镜像利用更新到 TKE 集群中:
如果部署流程有配置企业微信告诉的话,当部署流程工作实现时,会收到对应的企业微信部署实现告诉,如下图所示:
此时,能够在 TKE 中看到曾经胜利更新了工作负载:
从测试验证后果能够看出,咱们在 TKE 中实现了从源码更新到业务公布的整套 DevOps 流程。
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!