直达最佳实践:【https://bp.aliyun.com/detail/52】
观看视频:【https://yqh.aliyun.com/live/detail/22965】
阿里云最佳实践目前已覆盖23类常用场景,有200多篇最佳实践,这其中涉及110款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。
本方案将从3个部分为读者介绍容器应用DevOpsforACK集群最佳实践,希望可以让大家对其有更深入的了解,并可以将其应用到项目中,达到降本提效的目的。
本方案内容分为以下三个方面:
- 最佳实践原理讲解
- 核心产品云效讲解
- 最佳实践系统搭建
一、最佳实践原理讲解
1. 最佳实践的场景描述和适用的场景
本最佳实践的核心场景是容器化的应用怎么做Devops.Devops是Development和Operations的组合,它代表一种文化、运动或实践。目的在促进软件交付和基础设施,变更软件开发人员和IT运维人员之间的合作和沟通,使构建,测试,发布软件更加快捷,频繁和可靠。
而到了容器化时代,需要部署的机器不但量更大,变化更剧烈,有的甚至需要根据条件自动的弹性升缩。为了满足企业敏捷开发和部署的需求,持续部署也成了必须。本方案以小程序的后端服务为例,使用云效完成容器化应用(小程序后端服务)的自动化构建和持续部署,完整模拟容器CI/CD的全流程,比如分批发布、蓝绿发布等等。
以下几个场景非常适合使用本方案:
- 微服务CI/CD
- 线上应用的蓝绿部署升级
- 自动化测试和部署
2. 本方案的系统架构
方案使用的是小程序应用的后端服务,开发人员开发新的feature或者修复bug后提交代码到代码仓库,会自动触发云效进行代码编译,镜像构建并推送到容器镜像服务然后部署到测试环境。这时测试人员就可以在测试环境对应用进行测试,如果通过后流程进入下一个环境的部署,比如预发环境,部署测试及发布,然后通过后再发布到线上进行测试回归。整个过程全自动化完成,部署应用可以进行分批发布测试,蓝绿灰度测试部署等多种方式平滑上线,出现问题也可以快速回滚。这里的应用是容器化的应用,部署到阿里云的容器服务。后端数据库使用云数据库RDS MySql版,蓝绿发布使用了托管版的服务网格ASM。在这个方案中我们也可以看到阿里云多产品之间完美衔接,降低运维成本。
3. 架构的优势
- 代码提交自动触发构建和发布,减少人工失误,降低迭代成本,提升迭代频率和效率。
- 自动化部署,提高部署效率。平均部署一次只需要几分钟到几十分钟。
- 应用的容器化保障了应用高可用和高弹性,并且保障应用在开发、测试和正式环境中的一致性。
- 线上应用支持蓝绿灰度发布,更加安全,保障业务的连续性。不同版本也可以做灰度对比测试。也可以支持用户体验测试等等。
- 资源的高利用率、支持动态弹性扩容,按需分配降低了硬件成本,自动化降低了人力成本。
- 容器平台的多租户特点可以满足多项目组同时开发,支持构建不同集群和命名空间级别的隔离。
二、云效流水线Flow
1. 什么是云效流水线
云效企业一站式DevOps解决方案源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎。云效提供从需求-开发-测试-发布-运维-运营,端到端的协同服务和研发工具,通过人工智能、自动化技术的应用,助力开发者提升研发效能,持续快速交付有效价值。
云效流水线是云效产品矩阵中一款企业级、自动化的研发交付流水线,提供灵活易用的持续集成、持续验证、持续发布功能,帮助企业高质量、高效率的交付业务。通过云效流水线可以帮助企业快速搭建自己的研发、测试、验证、发布流程。开发者提供代码或合并其开发分支到集成分支触发发布流水线的运行,软件自动完成代码扫描、软件构建、部署到测试环境,完成集成测试。如果成功完成验证,自动合并到待发布分支,软件到达可发布状态后通知发布负责人,发布到生产环境,同时准备回滚预案。最终可发部版本的发布部署,由发布窗口及人工审核来决定。在整个持续集成和持续发布流程中,均有钉钉及邮件反馈集成和发布的结果。
2. 云效流水线的特性
优质的使用体验:(提供)数十种通用的模板来帮助企业快速创建流水线,提供可视化编排和结果展现,所见即所得,更支持定制企业自有模板来管理企业持续集成和持续交付流程。
支持多种交付模式,支持业内通用代码仓库、主流语言框架,供企业灵活选择;提供各种分支管理能力、持续交付模式,让研发过程顺畅自然。
提供自动化测试能力确保交付质量。内置代码扫描、安全扫描和各种自动化测试能力,支持人工测试卡点、自动化验证卡点等多种质量红线,确保业务交付质量。
强大的发布支持保障稳定交付。和阿里云产品深度集成,支持不同国家不同云厂商以及专有云环境发布。通过灰度发布、分批发布的策略,最大限度的避免了不稳定发布对用户的影响,保障业务交付的稳定,以上就是对云效这款产品的介绍。
三、最佳实践系统搭建
关于本实践的完整系统搭建,大家可以通过https://bp.aliyun.com/detail/52这个链接来访问。里面不仅包含最佳实践场景和完整的搭建过程,还有相关的客户案例,如有态度、卓动信息和晟运科技等等都是参考这个最佳实践,实现容器应用的DevOps及全生命周期的应用管理和发布。下面简单介绍下工具准备和开通资源。
- 工具准备
本方案使用了 Docker 客户端工具,需提前准备(本地电脑如果不安装客户端,也可以登录容器集群上的 ECS,容器集群的 ECS 默认安装了 Docker 工具)。客户端 Docker 工具下载和安装(以 Mac 为例)
- 进入 docker hub 官网。(https://hub.docker.com/welcome)
- 选择对应的客户端,单击下载。
- 下载完成之后进行安装,安装完成后启动 docker,docker 状态为运行中表示可用。
- 使用本机的命令行工具,输入 docker 进行测试。提示如下信息表示 docker 工具已经可用,客户端 docker 环境部署完成,准备待用。
- 开通资源
1. RAM授权
说明:第一次开通需先授权,已经授权请跳过。
- 前往阿里云容器服务控制台(https://cs.console.aliyun.com/),初次使用单击前往 RAM进行授权。
- 单击同意授权。
- 授权成功后,进入容器服务控制台。
2. CADT进行架构部署
- 在 CADT 控制台(https://bpstudio.console.aliyun.com/),使用官方模板找到“容器应用 Devops_for_ACK”模板,单击基于方案新建。
- 设置 ACK 集群 worker 节点密码、集群名称、Kubernetes 版本等,RDS 暂时关闭部署(此次应用演示使用不到 RDS),最后单击保存应用。
- 部署应用,按页面提示,依次进行对应操作即可。
3. 创建命名空间
说明:创建不同的命名空间目的是让不同环境的应用运行在不同的命名空间上,做到资源隔离。
- 在容器服务控制台,打开命名空间页面,单击右上角的创建。输入命名空间为 dev,作为日常环境使用,并确定创建。
- 继续创建预发环境使用的命名空间。
- 继续创建正式环境的命名空间。
- 为了不让日常环境和预发环境占用过多资源,对日常环境和预发环境进行资源配额限制。设置 dev 环境的 CPU 限制 2 核,内存限制 4Gi。
- 预发环境的限制同样设置为 2 核,4Gi。
注:本实践 demo 为节省资源模拟不同环境使用不同命名空间,在生产时建议不同环境使用不同的 ACK 集群,不同业务可以使用不同命名空间进行隔离。
4.开通服务网格 ASM
- 在服务网格控制台(https://servicemesh.console.aliyun.com/),单击创建新网格。如果是第一次使用 ASM,会创建 ASM 相关 RAM 角色。
- 待新建的网格处于运行中以后,进入网格管理。
- 添加创建的 ACK 集群。
- 部署入口网关,这里采用默认的 Ingress 入口网关。一般我们选择外部流量策略为 Local
此时在命名空间可以看到 istio-system 命名空间已经处于激活状态:
- 在 ACK 控制台继续编辑生产环境的命名空间,设置变量名称为 istio-injection,变量值为 enabled,添加标签后确认。设置完成后生产环境就支持蓝绿部署了。