混合环境应用交付实践| 学习笔记

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 快速学习混合环境应用交付实践。

开发者学堂课程【4天定制混合云应用交付流水线-1024程序员节创造营公益课混合环境应用交付实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/893/detail/14269


混合环境应用交付实践

内容简介:

一、KubeVela 混合环境应用交付

二、示例

 

一、KubeVela 混合环境应用交付

1.什么是混合环境的应用交付

应用迭代开发流程

01.代码开发

需求文档

功能设计

迭代开发

格式规范

02.集成测试

单元测试

E2E测试

代码覆盖率

性能测试

03.部署预发环境

模拟生产环境

验证稳定性

验证功能正确性

04.上线生产环境

切换流量

分批分布

版本回滚

注意:

很多的开发者都会专注在代码的开发上那这也是我们一般所说的 developer 的一个职责。

我们会可能会根据一些用户的需求,有一些需求文档。然后再根据这些文档的要求,做一些功能上的设计。

之后在设计完这些功能以后,会做一些代码上的迭代开发。在开发之后,又会有一些格式上的代码规范的一个检查。

总之在这些工作里面,它主要是由我们开发者这一侧或者说代码的开发者这一侧去完成的,它是一最常见的一个开发流程。

开发流程结束之后,在应用发布流程,可能会有一个集成测试也就是说我们所说的 integration test集成测试可能会包含有各种各样的一个测试比如说像比较简单的单元测试或者 E2E 测试,或者有一些针对于代码的覆盖率的一个检查。

还有一些对性能要求比较高的功能,可能会有一些专门的性能测试来检验代码在各种环境下的一个表现。

这些测试的目的其实也都很明确,就是需要为这个应用或者说这个功能的上限来做一些准备我们不希望这个应用能在上线以后出现一些问题,或者它的这个功能不符合我们的预期所以也会有一系列的测试,去帮助排查各种各样的问题。

在预发环境和生产环境下,它们可能有一定的相似程度,但也有一定的不同程度。

但是对于应用的发布而言,比如把这个应用部署到预发环境里面,或者升级到预发环境里面,或者升级到生产环境里面这一个操作上可能带来的差异性是有限的。

但是在实际的操作过程中,可能会因它是两个不同的环境,所以我们需要分别在两个环境上做一些操作这种其实会对整个的发布流程带来一定的复杂性。

KubeVela应用模型可以把应用的功能在不同环境中的发布的共性抽取出来然后同时对它的差异性的部分做专门的配置

这样一个应用的一个发布的流程可以覆盖到多种不同的环境而且还可以通过在一个应用发布的过程内部定义一些节点,或者定义一个工作流来控制它整个的发布的一个节奏,或者说一个时间节点。

混合环境:包括开发环境、测试环境、预发环境。

2. 添加多集群

01.创建 ACK 集群并安装 KubeVela

第一,准备三个 ACK 集群,一个用在管控,一个用作开发,一个用作生产环境。

第二,在管控集群中安装 KubeVela,并启用多集群功能。

第三,确认 KubeVela 及多集群安装成功。

02.将集群添加入 KubeVela 管控中

第一,使用 vela cluster rename 命令可以重命名已经加入的集群。

第二,使用 vela cluster detach 命令可以将子集群从 KubeVela 中移除。

 

二、示例

1.WordPress 基础应用发布实例

01.编写 KubeVela 多集群应用

编写基础应用模板

第一,MySQL 组件

components:

name:mysql

type:webservice

properties:

image:mysql:5.6

port:3306

volumeMounts:

name:mysql-storage

mountPath: /var/lib/mysql

traits:

type:env

properties:

env:

MYSQL_ROOT_PASSWORD:mypassword

一type:volumes

properties:

vo lumes:

- name:mysql-storage

type:emptyDir

—type:expose

properties:

port:

一3306

type:ClusterIP

第二,WordPress 组件

components:

- name:wordpress-server

type:webservice

properties:

image:wordpress:4.8-apache

port:80

vo lumeMounts:

- name:wordpress-storage

mountpath:/var/www/html

traits:

- type:scaler

properties:

replicas:1

- type:env

properties:

env:

WORDPRESS DB HOST:mysql

WORDPRESS_DB_PASSWORD:mypassword

- type:volumes

properties:

vo lumes:

- name:wordpress-storage

type:emptyDir

- type:expose

properties:

port:

一80

type:LoadBalancer

第三,开发环境配置

第四,生产环境配置

policies:

一name:multi-env-policy

type:env-binding

properties:

envs:

name:dev

placement:

clusterSelector:

name:cluster-dev

—name:production

placement:

clusterSelector:

name:cluster-production patch:

components:

name:wordpress-server type:webservice

traits:

type:scaler

properties:

Replicas:3 

注意:

两个环境,一个叫 dev 环境,也就是我们所说的开发环境。另外一个环境叫production,就是生产环境。那可以看到 dev 环境下,它目标是要把这个应用放到 cluster 里面。

第一位就是一开始加入的开发集群的位置上另外生产的组件,它的目标是放在生产集群上。 

第五,部署工作流配置

workflow:

steps:

name: deploy-dev

type:deploy2env

properties:

policy:multi-env-policy env:dev

name:manual-approval

type:suspend

name: deploy-productiontype:deploy2env

properties:

policy:mutti-env-policy env:production

2.从开发到生产多环境发布实践

appliedResources:

一apiVersion:core.oam.dev/v1alpha1creator:policy

kind:EnvBinding

name:multi-env-policy

namespace:default

- apiVersion:apps/v1

cluster:cluster-production

creator:workflow

kind:Deployment

name:mysql

namespace:default

一apiVersion:v1

cluster:cluster-production

creator:workflow

kind:Service

name:mysql

namespace:default

一apiVersion:apps/v1

cluster:cluster-production

creator:workflow

kind:Deployment

name:wordpress-server

namespace:default

一apiVersion:v1

cluster:cluster-production

creator:Worktlow

workflow:

appRevision:wordpress-v1:ee9baafaba9ea686contextBackend:

apiVersion:v1

kind:ConfigMap

name:workflow-wordpress-context

uid:656e47f5-0cf1-4c5a-ad19-ea2994c91521

mode:StepByStep

steps:

一id:odgjlxfx9b

name:deploy-dev

phase:succeeded

type:deploy2env

一id:jobz2d4rkw

name:manual-approval

phase:succeeded

type:suspend

一id:3whew2yf57

name:deploy-production

phase:succeeded

type:deploy2env

suspend:false

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Kubernetes Cloud Native 容灾
OpenKruise v1.6 版本解读:增强多域管理能力
OpenKruise 在 2024.3 发布了最新的 v1.6 版本(ChangeLog),本文对新版本的核心特性做整体介绍。
164873 7
|
2月前
|
存储 运维 监控
构建高效稳定的云基础设施:自动化运维策略与实践
【5月更文挑战第28天】 在当今快速演进的云计算环境中,自动化运维成为确保服务连续性和效率的关键。本文深入探讨了自动化运维的核心原则、工具选择以及实施策略,旨在为读者提供一个清晰的视角来理解和应对现代IT基础设施的挑战。通过分析案例研究和最佳实践,文章揭示了如何有效地整合自动化工具以优化资源管理、故障响应和系统升级过程。
|
2月前
|
运维 监控 安全
构建高效稳定的云基础设施:自动化运维策略与最佳实践
【5月更文挑战第22天】 随着云计算的日益普及,企业对云基础设施的依赖程度不断提高。有效的自动化运维策略成为确保系统稳定性、提升响应速度和降低人为错误的关键。本文将探讨一系列高效的自动化工具和流程,以及它们在云环境中的最佳实践,旨在为读者提供一套可行的方法论,用于构建和维护一个可靠且灵活的云基础设施。我们将重点讨论自动化部署、监控、故障恢复及安全性管理,并提出相应的建议和解决方案。
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效自动化运维系统的五大关键步骤
【5月更文挑战第18天】在数字化转型的浪潮中,高效的自动化运维系统成为企业保障IT服务管理效率和稳定性的核心。本文将探讨构建自动化运维系统的五个关键步骤,包括需求分析、设计蓝图、选择合适的工具、实施与集成以及持续优化。通过这些步骤的实施,企业能够实现故障快速响应、资源优化配置和成本有效控制,从而提升整体的IT服务质量和用户满意度。
|
2月前
|
运维 监控 持续交付
构建高效稳定的云基础设施:最佳实践与案例分析
【5月更文挑战第31天】本文旨在探讨如何通过采纳现代云基础设施的最佳实践,构建一个高效且稳定的运维环境。文章将详细讨论云计算资源管理、自动化工具的应用、持续集成/持续部署(CI/CD)流程的优化以及监控和日志分析的重要性。通过对具体案例的分析,我们展示了这些策略如何在实际环境中提升系统的可靠性和性能,同时减少潜在的风险和成本。
|
2月前
|
运维 Prometheus 监控
构建高效自动化运维系统的策略与实践
【5月更文挑战第29天】 在当今快速迭代的技术环境下,自动化运维已经成为确保服务可靠性和效率的关键。本文将深入探讨构建一个高效自动化运维系统的必备策略及其具体实践步骤。通过分析当前自动化工具的选择、配置管理的最佳实践以及持续集成和持续部署(CI/CD)流程的整合,我们旨在为读者提供一个清晰可行的蓝图,以实现运维工作的优化。
|
2月前
|
机器学习/深度学习 运维 监控
构建高效自动化运维体系:从理论到实践
【4月更文挑战第30天】 在信息技术日益发展的今天,自动化运维已经成为提高系统稳定性、优化资源配置和降低人力成本的关键。本文旨在探讨如何构建一个高效的自动化运维体系,涵盖从初步规划到具体实施的全过程。文章首先分析了自动化运维的必要性,接着提出一套完整的构建方案,并详细阐述了关键技术与工具的选择和应用。通过案例分析,验证了所提方案的有效性,并对自动化运维的未来趋势进行了展望。
|
2月前
|
运维 Kubernetes 监控
构建高效稳定的容器化运维环境
在现代IT基础设施中,容器技术以其轻量级、快速部署和易于管理的特性成为企业数字化转型的重要支撑。本文将深入探讨如何构建一个高效且稳定的容器化运维环境,涵盖从容器选择、集群管理到持续集成与持续部署(CI/CD)的最佳实践。文章旨在为运维工程师提供一套系统的解决方案,以应对日益复杂的业务需求和技术挑战。
|
2月前
|
前端开发 Nacos 微服务
平台设计-部署模式
平台有多做部署模式
|
2月前
|
存储 人工智能 安全
构建安全可靠的软件定制开发环境:关键步骤与最佳实践
随着信息技术的飞速发展,软件开发已经成为各行各业不可或缺的一部分。然而,随着软件应用的普及,安全问题也日益凸显。从个人隐私泄露到企业数据泄露,从网络攻击到恶意软件感染,这些安全问题不仅给用户带来损失,也给企业带来巨大的风险。因此,构建安全可靠的开发软件成为了保障用户数据安全