云效+ACK 构建容器云 DevOps 平台 最佳实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 最佳实践目前已覆盖23类常用场景,已发布200多篇最佳实践,这其中涉及100款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。本篇主要讲述容器应用DevOpsforACK集群最佳实践。DevOps的目的是构建一种文化和环境,使构建,测试,发布软件更加快捷,频繁和可靠。而到了容器时代,需要部署的机器不但量更大,变化更剧烈,有的甚至需要根据条件自动升缩,为了满足企业敏捷的需求,持续部署也成了必须,本方案使用云效完成容器应用(小程序后端服务)的自动化构建和持续部署。
直达最佳实践:【 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
  • 线上应用的蓝绿部署升级
  • 自动化测试和部署

image.png

2. 本方案的系统架构

方案使用的是小程序应用的后端服务,开发人员开发新的feature或者修复bug后提交代码到代码仓库,会自动触发云效进行代码编译,镜像构建并推送到容器镜像服务然后部署到测试环境。这时测试人员就可以在测试环境对应用进行测试,如果通过后流程进入下一个环境的部署,比如预发环境,部署测试及发布,然后通过后再发布到线上进行测试回归。整个过程全自动化完成,部署应用可以进行分批发布测试,蓝绿灰度测试部署等多种方式平滑上线,出现问题也可以快速回滚。这里的应用是容器化的应用,部署到阿里云的容器服务。后端数据库使用云数据库RDS MySql版,蓝绿发布使用了托管版的服务网格ASM。在这个方案中我们也可以看到阿里云多产品之间完美衔接,降低运维成本。
image.png

3. 架构的优势

  • 代码提交自动触发构建和发布,减少人工失误,降低迭代成本,提升迭代频率和效率。
  • 自动化部署,提高部署效率。平均部署一次只需要几分钟到几十分钟。
  • 应用的容器化保障了应用高可用和高弹性,并且保障应用在开发、测试和正式环境中的一致性。
  • 线上应用支持蓝绿灰度发布,更加安全,保障业务的连续性。不同版本也可以做灰度对比测试。也可以支持用户体验测试等等。
  • 资源的高利用率、支持动态弹性扩容,按需分配降低了硬件成本,自动化降低了人力成本。
  • 容器平台的多租户特点可以满足多项目组同时开发,支持构建不同集群和命名空间级别的隔离。

image.png

二、云效流水线Flow

1. 什么是云效流水线

云效企业一站式DevOps解决方案源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎。云效提供从需求-开发-测试-发布-运维-运营,端到端的协同服务和研发工具,通过人工智能、自动化技术的应用,助力开发者提升研发效能,持续快速交付有效价值。
image.png
云效流水线是云效产品矩阵中一款企业级、自动化的研发交付流水线,提供灵活易用的持续集成、持续验证、持续发布功能,帮助企业高质量、高效率的交付业务。通过云效流水线可以帮助企业快速搭建自己的研发、测试、验证、发布流程。开发者提供代码或合并其开发分支到集成分支触发发布流水线的运行,软件自动完成代码扫描、软件构建、部署到测试环境,完成集成测试。如果成功完成验证,自动合并到待发布分支,软件到达可发布状态后通知发布负责人,发布到生产环境,同时准备回滚预案。最终可发部版本的发布部署,由发布窗口及人工审核来决定。在整个持续集成和持续发布流程中,均有钉钉及邮件反馈集成和发布的结果。
image.png

2. 云效流水线的特性

优质的使用体验:(提供)数十种通用的模板来帮助企业快速创建流水线,提供可视化编排和结果展现,所见即所得,更支持定制企业自有模板来管理企业持续集成和持续交付流程。
支持多种交付模式,支持业内通用代码仓库、主流语言框架,供企业灵活选择;提供各种分支管理能力、持续交付模式,让研发过程顺畅自然。
提供自动化测试能力确保交付质量。内置代码扫描、安全扫描和各种自动化测试能力,支持人工测试卡点、自动化验证卡点等多种质量红线,确保业务交付质量。
强大的发布支持保障稳定交付。和阿里云产品深度集成,支持不同国家不同云厂商以及专有云环境发布。通过灰度发布、分批发布的策略,最大限度的避免了不稳定发布对用户的影响,保障业务交付的稳定,以上就是对云效这款产品的介绍。
image.png

三、最佳实践系统搭建

关于本实践的完整系统搭建,大家可以通过https://bp.aliyun.com/detail/52这个链接来访问。里面不仅包含最佳实践场景和完整的搭建过程,还有相关的客户案例,如有态度、卓动信息和晟运科技等等都是参考这个最佳实践,实现容器应用的DevOps及全生命周期的应用管理和发布。下面简单介绍下工具准备和开通资源。

  • 工具准备
    本方案使用了 Docker 客户端工具,需提前准备(本地电脑如果不安装客户端,也可以登录容器集群上的 ECS,容器集群的 ECS 默认安装了 Docker 工具)。客户端 Docker 工具下载和安装(以 Mac 为例)
  1. 进入 docker hub 官网。(https://hub.docker.com/welcome
  2. 选择对应的客户端,单击下载。
    image.png
  3. 下载完成之后进行安装,安装完成后启动 docker,docker 状态为运行中表示可用。
    image.png
  4. 使用本机的命令行工具,输入 docker 进行测试。提示如下信息表示 docker 工具已经可用,客户端 docker 环境部署完成,准备待用。
    image.png
  • 开通资源

1. RAM授权

说明:第一次开通需先授权,已经授权请跳过。

  1. 前往阿里云容器服务控制台(https://cs.console.aliyun.com/),初次使用单击前往 RAM进行授权。
    image.png
  2. 单击同意授权。
    image.png
  3. 授权成功后,进入容器服务控制台。

2. CADT进行架构部署

  1. 在 CADT 控制台(https://bpstudio.console.aliyun.com/),使用官方模板找到“容器应用 Devops_for_ACK”模板,单击基于方案新建。
    image.png
    image.png
  2. 设置 ACK 集群 worker 节点密码、集群名称、Kubernetes 版本等,RDS 暂时关闭部署(此次应用演示使用不到 RDS),最后单击保存应用。
    image.png
    image.png
    image.png
  3. 部署应用,按页面提示,依次进行对应操作即可。
    image.png
    image.png
    image.png

3. 创建命名空间

说明:创建不同的命名空间目的是让不同环境的应用运行在不同的命名空间上,做到资源隔离。

  1. 在容器服务控制台,打开命名空间页面,单击右上角的创建。输入命名空间为 dev,作为日常环境使用,并确定创建。
    image.png
  2. 继续创建预发环境使用的命名空间。
    image.png
  3. 继续创建正式环境的命名空间。
    image.png
  4. 为了不让日常环境和预发环境占用过多资源,对日常环境和预发环境进行资源配额限制。设置 dev 环境的 CPU 限制 2 核,内存限制 4Gi。
    image.png
  5. 预发环境的限制同样设置为 2 核,4Gi。
    image.png
    注:本实践 demo 为节省资源模拟不同环境使用不同命名空间,在生产时建议不同环境使用不同的 ACK 集群,不同业务可以使用不同命名空间进行隔离。

4.开通服务网格 ASM

  1. 在服务网格控制台(https://servicemesh.console.aliyun.com/),单击创建新网格。如果是第一次使用 ASM,会创建 ASM 相关 RAM 角色。
    image.png
  2. 待新建的网格处于运行中以后,进入网格管理。
    image.png
  3. 添加创建的 ACK 集群。
    image.png
  4. 部署入口网关,这里采用默认的 Ingress 入口网关。一般我们选择外部流量策略为 Local
    image.png
    此时在命名空间可以看到 istio-system 命名空间已经处于激活状态:
    image.png
  5. 在 ACK 控制台继续编辑生产环境的命名空间,设置变量名称为 istio-injection,变量值为 enabled,添加标签后确认。设置完成后生产环境就支持蓝绿部署了。
    image.png
    image.png
相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
23天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
15天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
29天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
本文介绍了Docker和Kubernetes在构建高效微服务架构中的应用,涵盖基本概念、在微服务架构中的作用及其实现方法。通过具体实例,如用户服务、商品服务和订单服务,展示了如何利用Docker和Kubernetes实现服务的打包、部署、扩展及管理,确保微服务架构的稳定性和可靠性。
82 7
|
28天前
|
Kubernetes 负载均衡 Docker
构建高效微服务架构:Docker与Kubernetes的完美搭档
【10月更文挑战第22天】随着云计算和容器技术的快速发展,微服务架构逐渐成为现代企业级应用的首选架构。微服务架构将一个大型应用程序拆分为多个小型、独立的服务,每个服务负责完成一个特定的功能。这种架构具有灵活性、可扩展性和易于维护的特点。在构建微服务架构时,Docker和Kubernetes是两个不可或缺的工具,它们可以完美搭档,为微服务架构提供高效的支持。本文将从三个方面探讨Docker和Kubernetes在构建高效微服务架构中的应用:一是Docker和Kubernetes的基本概念;二是它们在微服务架构中的作用;三是通过实例讲解如何使用Docker和Kubernetes构建微服务架构。
59 6
|
29天前
|
Kubernetes 监控 数据中心
容器化与微服务:构建高效开发环境的双剑合璧
【10月更文挑战第20天】本文探讨了容器化技术(如Docker和Kubernetes)与微服务架构的结合,如何共同构建高效、灵活的开发环境。容器化解决了环境一致性、快速部署和资源隔离的问题,而微服务架构则提升了系统的可维护性和可扩展性。通过容器编排工具、CI/CD流程和服务网格,两者的结合进一步优化了开发和运维效率。文章还分享了实施这两项技术的最佳实践和职业心得。
|
24天前
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
30 1
|
23天前
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
35 0
|
1月前
|
运维 Kubernetes 开发者
构建高效后端服务:微服务架构与容器化技术的结合
【10月更文挑战第18天】 在数字化转型的浪潮中,企业对后端服务的要求日益提高,追求更高的效率、更强的可伸缩性和更易于维护的系统。本文将探讨微服务架构与容器化技术如何结合,以构建一个既灵活又高效的后端服务体系。通过分析当前后端服务面临的挑战,介绍微服务和容器化的基本概念,以及它们如何相互配合来优化后端服务的性能和管理。本文旨在为开发者提供一种实现后端服务现代化的方法,从而帮助企业在竞争激烈的市场中脱颖而出。
26 0
|
1月前
|
安全 Devops 网络安全
【DevOps】Docker 最佳实践指南(绝对干货)
Docker 是一种领先的容器化平台,可简化应用开发、部署和管理。本文档介绍 Docker 的最佳实践,涵盖安全性、网络、镜像、主机安全及资源限制等方面,帮助用户高效利用 Docker,确保应用的安全性和性能。
129 0
|
1月前
|
运维 Kubernetes 监控
掌握Docker容器化技术:构建、部署与管理的高效实践
【10月更文挑战第14天】掌握Docker容器化技术:构建、部署与管理的高效实践
46 0

热门文章

最新文章

相关产品

  • 容器服务Kubernetes版
  • 下一篇
    无影云桌面