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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 最佳实践目前已覆盖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搭建和管理企业级网站应用
相关文章
|
17天前
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
16天前
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
27 1
|
15天前
|
运维 Devops jenkins
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第27天】DevOps文化强调开发和运维的紧密合作,以实现快速、高质量的软件交付。核心在于持续交付和持续反馈。本文探讨了如何通过改变组织结构、构建跨功能团队、使用自动化工具(如Jenkins)和积极收集用户反馈,来构建和实践DevOps文化。
27 0
|
27天前
|
安全 Devops 网络安全
【DevOps】Docker 最佳实践指南(绝对干货)
Docker 是一种领先的容器化平台,可简化应用开发、部署和管理。本文档介绍 Docker 的最佳实践,涵盖安全性、网络、镜像、主机安全及资源限制等方面,帮助用户高效利用 Docker,确保应用的安全性和性能。
117 0
|
2月前
|
Devops jenkins 持续交付
DevOps实践:构建和部署一个Docker化的应用
【9月更文挑战第14天】在当今快节奏的软件开发领域,DevOps已经成为提升效率、加速交付的关键。本文将引导你理解DevOps的核心概念,并通过一个实际的示例—构建和部署一个Docker化的应用—来深入探讨其实践方法。我们将从简单的应用出发,逐步实现Docker容器化,并最终通过CI/CD流水线自动化部署过程。这不仅是对DevOps流程的一次实操演练,也是对现代软件开发理念的一次深刻体验。
|
2月前
|
运维 监控 Devops
拥抱 DevOps 文化:实现持续交付与部署的最佳实践
在软件开发领域,DevOps 强调开发与运维团队的协作,通过自动化、持续集成与部署等实践缩短系统开发生命周期,提升软件质量。其核心原则包括自动化、协作、度量与共享责任。实施 DevOps 需要建立跨功能团队、采用版本控制、持续集成与部署、自动化测试及监控反馈。常用工具有 Jenkins、GitLab CI/CD、Ansible、Prometheus 和 ELK Stack 等。DevOps 通过文化与技术变革,加速软件交付并提高客户满意度。
|
2月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
194 3
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
82 1
|
2月前
|
运维 监控 Devops
DevOps实践:构建高效运维流程
【9月更文挑战第3天】在当今快节奏的技术环境中,高效的运维流程是企业成功的关键。本文旨在揭示如何通过DevOps实践,构建一个既灵活又高效的运维体系。我们将深入探讨自动化工具、持续集成与持续部署(CI/CD)策略以及监控和日志管理的最佳实践,以实现运维工作的优化。文章将用简洁明了的语言,结合生动的比喻,带领读者走进DevOps的世界,学习如何将理论应用到实际工作中去。
|
3月前
|
前端开发 Java UED
JSF遇上Material Design:一场视觉革命,如何让传统Java Web应用焕发新生?
【8月更文挑战第31天】在当前的Web开发领域,用户体验和界面美观性至关重要。Google推出的Material Design凭借其独特的动画、鲜艳的颜色和简洁的布局广受好评。将其应用于JavaServer Faces(JSF)项目,能显著提升应用的现代感和用户交互体验。本文介绍如何通过PrimeFaces等组件库在JSF应用中实现Material Design风格,包括添加依赖、使用组件及响应式布局等步骤,为用户提供美观且功能丰富的界面。
45 0

相关产品

  • 容器服务Kubernetes版