云原生应用配置管理的5个最佳实践

news2024/11/16 5:43:06

引言

在复杂的云原生应用程序中管理配置信息是非常困难的,似乎到处都有配置。在使用基于微服务架构的云原生应用程序中,配置问题成倍增加。 配置无处不在。有针对网络的配置,比如路由规则、端口控制、负载均衡,有针对数据库的配置,服务器的配置,还有众多微服务中间件的配置,以及各种相关的安全配置。

一些配置项是已知的并且很好的在一些版本控制系统中管理着,但是也有很多的配置,是零散存储,并且缺乏管理的。

如何控制并降低与云原生环境中大量配置信息相关的复杂性? 这里有五种最佳实践,可帮助您处理混乱的配置。

1. 为所有配置保留单一可信来源

配置有些时候会被复制到各处。将一台服务器中使用的配置复制到另一台服务器,然后再复制到另一台服务器。 最终,可能会有数百个相同或几乎相同的配置副本。 对一个副本的更改不会影响到其他副本的风险很高。 随着时间的推移,配置会发生漂移,导致配置错误、应用程序故障甚至安全漏洞。

6546ae4701c64708e854c48e6b56d1bc.jpeg

相反,对于每种类型的配置信息(例如特定类型的配置文件),保留一份配置的主副本。 这个单一的主副本是对配置进行所有更改的地方。然后,如果不同位置需要此配置,通过自动化工具将配置推送到目标位置。

此最佳实践使所有相同的配置保持一致,并确保对一个配置所做的必要更改适用于所有副本。

2. 使用自动化的方式来执行变更

在之前的最佳实践中,对于某些配置文件,它们的配置在所有设备上几乎相同。 有时,每个配置副本都需要进行小的更改。

与其为每个组件保留一个单独的、唯一的配置副本,不如使用一个副本并使用宏和变量自动对每个组件进行更改。

例如,考虑一个特定的云安全策略,该策略需要规则中的服务器 IP 地址副本。 配置在多个用例中几乎相同。 但是该规则包含一个 IP 地址,该地址会随着用例的不同而变化。 不要创建许多配置,而是使用包含 IP 地址的变量创建一个配置。 部署安全策略时,在每个用例中将变量替换为正确的 IP 地址。

这种自动化将确保以完全相同的方式维护类似的配置文件,并且不会在每次使用配置时发生变化漂移。

2bb64decdbd5eb4288be04d8f797b954.jpeg

3.使用版本控制

几乎所有配置最终都可以作为简单的文本文件进行管理。 将这些文本文件放入您的版本控制系统(例如 Git)。 然后,当您需要部署配置更改时,从版本控制系统中获取适当的版本。

37bdc3b5bb8b84d65cf8192a58f9a005.jpeg

这种做法将保留对配置的所有更改的历史记录; 进行更改时,可以记录更改人和更改原因。

这在出现问题时会很有帮助。 如果系统突然开始出现异常行为,对版本控制系统进行简单检查就可以了解配置最近发生了哪些变化。 这些更改,如果发生错误,可以回滚或分析以查看它们导致问题的原因并更快地修复。

4.集中配置管理

作为先前最佳实践的必然结果,将所有配置集中在一个众所周知的位置。 使用版本控制系统来管理您的配置使这更容易做到。 通过集中配置,您永远不必猜测指定组件的“主”配置存在于何处。 它们在出现问题的情况下很容易审查,如果配置文件的位置是可管理的,使用和扩展会更容易。 当需要增加新的配置文件时,如果其他配置都在同一位置,则遵循上述最佳实践会更容易。 这减少了出于方便而使用未跟踪配置的可能性,并确保每个人都遵循最佳实践并保持问责制。

5.使用自动化系统分发配置信息

您的配置应该使用自动化系统进行部署,就像您的软件部署方式一样。 使用 CI/CD 管道是现代云原生应用程序的标准策略,部署管道应部署所有配置以及所有代码。 如上所述,这可以实现变量的一致应用和对宏的更改,并确保所有更改都部署在需要配置的所有组件中。 自动化可确保管理大量配置的一致性和责任制。

4f77e30afdbcca06d7e5550fe1e0bb10.jpeg

总结

配置即资产。配置与代码一样有价值,不正确的更改可能对您的应用程序同样危险。 您应该按照对源代码应用的相同级别来对待您的配置。

通过使用由版本控制跟踪并自动部署的共享、集中、模板化配置,您将降低现代云原生应用程序固有的配置复杂性。

关于HummerRisk

HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题,核心能力包括混合云的安全治理和K8S容器云安全检测。

Github 地址:https://github.com/HummerRisk/HummerRisk

Gitee 地址:https://gitee.com/hummercloud/HummerRisk

80bbf5e961773890fefad715cd2b7728.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/390846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript Boolean 布尔对象

文章目录JavaScript Boolean 布尔对象Boolean 对象Boolean 对象属性Boolean 对象方法检查布尔对象是 true 还是 false创建 Boolean 对象JavaScript Boolean 布尔对象 Boolean(布尔)对象用于将非布尔值转换为布尔值(true 或者 false&#xff0…

CSS常用选择器

目录 1.CSS是什么 2.CSS的三种写法 2.1内部样式 2.2内联样式 2.3外部样式 3.CSS选择器 3.1标签选择器 3.2类选择器(更好的选择) 3.3ID选择器 3.4后代选择器 3.5子选择器 3.6并集选择器 3.7伪类选择器(复合选择器的特殊用法) 1.CSS是什么 CSS全称Cascding Style Sh…

「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…

汽车诊断UDS通信协议总结

UDS通信过程 UDS(Unified Diagnostic Services)是一种用于汽车诊断的通信协议,它是基于CAN(Controller Area Network)总线的一种高层协议。 下面是UDS通信的基本流程: 建立诊断会话:通过CAN总…

【VC 7/8】vCenter Server 基于文件的备份和还原Ⅲ—— 使用 SMB 协议备份 VC(VAMI 中文)

目录2.2 使用 SMB 协议备份 VC(VAMI 中文)(1)登录 vCenter Server 管理界面(2)进入备份页面(3)配置 Backup Schedule(4)开始备份(5)备…

ios 通过搜索设备MAC地址绑定

最近做了一个物联网项目,涉及到了设备绑定配网这块,需要了解一下iOS BLE与设备绑定的相关知识点,第一次接触蓝牙相关的项目,所以开始熟悉蓝牙的相关信息。没有去深入研究BabyTooth库,只是感觉CoreBluetooth已经让我更好的理解整个流程这个物联网项目的设备绑定流程是…

sheng的学习笔记-Actuator健康监控

前言在微服务系统里,对微服务程序的运行状况的跟踪和监控是必不可少的;例如GPE,TelegrafinfluxDB都提供了微服务体系监控的方案, ZIPKIN, Skywalking都提供了微服务云体系的APM的方案; 这些解决方案功能全面…

Thumbnailator快速入门

简介 Thumbnailator 是一个开源的 Java 项目,它提供了非常简单的 API 来对图片进行缩放、旋转以及加水印的处理。 有多简单呢?简单到一行代码就可以完成图片处理。形式如下: Thumbnails.of(new File("path/to/directory").listF…

IDEA搭建vue-cli | vue-router | 排错思路、Webpack、Axios、周期、路由、异步、重定向

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Vue.js概述 Vue 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层…

IDEA集成Git就是这么简单

IDEA集成Git 文章目录IDEA集成Git配置Git环境配置Git的忽略文件①为什么需要配置忽略文件?②配置忽略文件③引用配置文件配置IDEA初始化项目添加到暂存区方式一:方式二:移除暂存区提交到本地库分支创建分支切换分支版本穿梭配置Git环境 配置…

应届大学生学什么技术好?哪些技术适合年轻人?

到了毕业季,应届大学生面临的就是就业问题,很多专业的大学生难以找到对口的工作,或是不得已随便就业,或者是学个技术高薪就业,那么,问题来了,应届大学生学什么技术好?哪些技术适合年…

XC7K160T-1FBG484I、XC7A100T-2CSG324I FPGA可编程门阵列 PDF规格书

1、XC7K160T-1FBG484I说明:Kintex-7 FPGA有-3、-2、-1、-1L和-2L速度等级,其中-3具有最高的性能。-2L器件被筛选为较低的最大静态功率,并且可以在较低的核心电压下运行,以获得比-2器件更低的动态功率。-2L工业(I)温度器件仅在VCCI…

C#教程03-- 数据类型

文章目录 C#数据类型值类型(Value types)引用类型对象(Object)类型动态(Dynamic)类型字符串(String)类型C#数据类型 在 C# 中,变量分为以下几种类型: 值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types) 值类型(Value types) 值类型…

Bean的装配方式(xml和注解)

方式一:基于xml 掌握Bean基于XML的装配,能够使用XML装配方式对Bean进行装配 在基于XML的装配就是读取XML配置文件中的信息完成依赖注入,Spring容器提供了两种基于XML的装配方式,属性setter方法注入和构造方法注入。下面分另对这…

RocketMQ-02

1. 案例介绍 1.1 业务分析 模拟电商网站购物场景中的【下单】和【支付】业务 ###1)下单 用户请求订单系统下单订单系统通过RPC调用订单服务下单订单服务调用优惠券服务,扣减优惠券订单服务调用调用库存服务,校验并扣减库存订单服务调用用户…

Vue2.0开发之——购物车案例-Footer组件封装(50)

一 概述 导入Footer子组件定义fullState计算属性把全选状态传递给Footer子组件实现全选功能 二 导入Footer子组件 2.1 App.vue中导入Footer组件 import Footer from "/components/Footer/Footer.vue";2.2 App.vue中注册Footer子组件 components: {Header,Goods,F…

云原生之使用Docker部署Gitblit服务器

云原生之使用Docker部署Gitblit服务器一、Gitblit介绍二、检查本地docker环境1.检查docker版本2.检查docker状态三、下载Gitblit镜像四、部署Gitblit应用1.创建部署目录2.创建Gitblit容器3.检查Gitblit容器状态4.检查Gitblit容器运行日志五、访问Gitblit首页1.访问Gitblit首页2…

LPDDR4x 的 学习总结(3) - SDRAM基本功能

上一节,我们重点介绍了array的存储结构。 本节介绍array周边的电路,对DDR的基本读写操作的相关功能模块的理解。 即通过哪些模块可以实现对ddr的基本读写。最简化的方式是把存储操作理解为行列选择,拆分为横竖两个纬度,最终实现对arrary进行读写。横向…

Kerberos 域委派攻击之约束性委派

CSDN自动博客文章迁移由于非约束性委派的不安全性,微软在 Windows Server 2003 中引入了约束委派。区别在于不会直接把 TGT 给服务,所发送的认证信息中包含了允许访问的服务,即不允许服务代表用户去访问其他服务。同时为了在 Kerberos 协议层…

1.数据结构前言

数据结构很重要! 数据结构很重要!!! 数据结构很重要!!!! 前言.思考 1.什么是数据结构 ?(What) 2.为什么要学数据结构 ?? (…