声明式环境管理最佳实践 | 学习笔记

简介: 快速学习声明式环境管理最佳实践

开发者学堂课程【ALPD 云架构师系列:云原生 DevOps 36计-阿里云云效出品声明式环境管理最佳实践】学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/772/detail/13503


声明式环境管理最佳实践


内容介绍:

一. 通过 sidecar 分离关注点

二. 新的挑战

三. OAM


一. 通过 sidecar 分离关注点

问题:环境相关的配置太多了,我该怎么管理比较好?

答案:通过 laC 来定义环境

在云原生时代,我们讲 laC 的时候,它的技术使整个环境通过基础设施来描述出来整个环境包括它的中间件资源都属于技术设施么这个层面就比原来单纯的上架要广得多

从配置的角度来说有应用配置应用运维配置和基础设施 运维配置甚至我们整个软件生产的过程也是用配置合并 怎么发布,去构建。这里我们也要去做一些定义,定义作为一个软件需要符合什么样的质量才可以在系统里以什么样的方式去运行。我们所有东西都是以代码的方式来去保管配置的, 他们的本质是代码

image.png

这里我们举一个简单的代码库的例子。

里我们把应用代码和 lac 代码放在两个库里有的人也会放到一个库里面,这两种方式各有利弊

我们看到 laC Repo 里面放了一些东西比如动态配置,就是运行时的配置

BaaS 配置,就是技术设施资源以及数据库中间件一些资源比如存储消息中间线资源监控配置,配置监控的力度以及监控的采样频率发布配置,比如发布方式每次每个批次发布间隔多少时间,还有一些策略滚动方式,这些东西都会在里面定义好


二. 新的挑战

1. 灵活的代价

开启这个插件还要在 ConfigMap 里定义一个变量

Ingress 和 Rollout 原来要一起用才行

HPA 和 CronHPA 原来是冲突的

这些 yaml 文件仿佛原始人的火种,即使小心伺候也有熄灭的可能

2. 知识的成本

网络配置怎么有这么多种实现

部署 MySQL 集群的正确姿势是什么

怎么能让 Pod 用本地 SSD 磁盘

image.png 

灵活的代价我们会尝试用一些范式来去定义出来,这样管理起来相对来说会更半功倍

3. 主要矛盾在哪里

运行一个系统需要的技能是多方面的但我们都把它想成配置文件这种,但是不是每个人都能用到那么多能力。而且本身的关注点分离成好多个但是我们用配置文件直接堆在那里,就没有把它分离出来

现在工业里一般遇到这样的问题会有怎么样的一些手段去处理他呢?


三. OAM 模型

image.png

首先,Open Application Model 微软阿里云联合推出的框架 也叫 OAM 框架 OAM 模型。其基本理论就是凯撒的归凯撒上帝的归上帝。

这是什么意思呢?我们先看右边在模型里面任务管理整个环境配置有三种角色

一种叫 Developer开发应用关注的是应用开发

第二Application Operator,是做运营上应用上的一些运维配置

第三种叫 Infrastructure Operator,是做基础设施的运维,负责基础设施组建些能力的维护和开发。比如我们要做滚动发布策略,然后有的一些资源的限制策略,这些就是在 Infrastructure Operator 里去处理的

显然三种人的工作背景技能是完全不一样的那么他们之间就必然会产生协作如果他们之间的协作不好就会产生我们前面遇到的问题,这些东西都混在一起

所有在这个架构上,它抽象成了左边这个模型

首先我们有 Application 这个应用它是包含很多个Component 的,就是左下角内容每个 Component 里面有很多容器 Component 里,就描述我的协议是什么,我的容器是什么,我的端口是什么,包括一些参数在里面

同时右边有一个 Configuration,它会描述一些应用怎么运行起来,和应用的一些相关的配置,以及应用的用到的运维上的一些能力

这样就把就开发者关心的东西跟应用运维关心的这些东西分成了 ComponentConfigurationTriat 个部分。这样他们就可以去关心自己的那块就行了

同时在框架里面或者模型里面,会对中间或遇出现的冲突一些东西预先的检测,这就保证些东西不会在我发到一半的时候才出现问题

而是可以预先把问题发现出来就可以直接告诉你失败 不会影响线上的服务

是说在最早把应用给声明出来的时候就会把相应的 OAM 模型相应的配置给定义清楚,并且有一些配置之间需要包含东西哪怕加了新的配置,这些东西我们可以提前做出一些相应预警另外很重要一点就是分离一点

相关文章
|
8月前
|
C++
C++ 编程必备:对象生命周期管理的最佳实践
在C++中,对象的生命周期是指对象存在的时间段,从对象创建到对象销毁的整个过程。正确地管理对象的生命周期是编写高效、可靠C++代码的关键之一
136 1
|
5月前
|
存储 JavaScript 前端开发
基础与最佳实践
【8月更文挑战第30天】
54 5
|
6月前
|
设计模式 安全 关系型数据库
PHP开发涉及一系列步骤和技术
【7月更文挑战第2天】PHP开发涉及一系列步骤和技术
144 57
|
5月前
|
存储 Kubernetes 监控
软件环境管理问题之不可变环境的定义如何解决
软件环境管理问题之不可变环境的定义如何解决
|
6月前
|
C++ 运维
开发与运维函数问题之C++类的简单示例如何解决
开发与运维函数问题之C++类的简单示例如何解决
71 10
|
存储 数据可视化 Ubuntu
bcftools学习笔记丨软件简介、安装方式、使用方法、核心功能、参数解释等一文速览
bcftools学习笔记丨软件简介、安装方式、使用方法、核心功能、参数解释等一文速览
|
XML 存储 SQL
【C#编程最佳实践 五】项目与代码流程实践
【C#编程最佳实践 五】项目与代码流程实践
180 0
【C#编程最佳实践 五】项目与代码流程实践
|
数据采集 存储 监控
谈谈企业中参考数据的管理
对于业务和技术人员不来说,参考数据会影响日常业务的运营。为了优化数据的使用和可用性,我们需要知道什么是参考数据,什么不是(即主数据),为什么它很重要,以及如何用技术手段有效地管理它。
谈谈企业中参考数据的管理
|
运维 监控 Cloud Native
声明式环境管理最佳实践|学习笔记
快速学习声明式环境管理最佳实践
157 0
声明式环境管理最佳实践|学习笔记
|
存储 运维 Kubernetes
环境管理3阶段:从说明书到命令到声明式 | 学习笔记
快速学习环境管理3阶段:从说明书到命令到声明式
环境管理3阶段:从说明书到命令到声明式 | 学习笔记