Page 1 of 1

而不是将其保存在文件系统上

Posted: Sat Dec 28, 2024 9:52 am
by hasnasadna
配置
一旦管理依赖关系的问题得到解决,另一个问题仍然悬而未决:每个环境可能需要特定的配置,例如访问服务的凭据、数据库连接、日志服务或持久存储。在传统应用程序中,这些信息存储在代码中的常量中(硬编码)或静态配置文件中,这向我们展示了与系统范围依赖项遇到的相同情况:如何使我们的应用程序在不修改的情况下可移植和可配置。代码库?

12 因素方法论以及现代应用程序 的关键原则之一 是将配置与应用程序部分解耦。有几种非常简单的技术,例如使用 环境变量(Docker 本身支持) , 即应用程序可用的配置,但由运行它的环境在运行时注入,以便在 代码和服务配置,它们将不再是代码库的一部分。


无国籍
在云原生架构中,每个进程都是无状态的,也就是说,它不假设 瑞士电报数据 其行为可以依赖于先前的执行,也不假设内存和文件系统等组件在连续执行之间是共享和持久的。

那么,我们如何在Kubernetes这样的云原生架构上运行 CMS 这样的传统工作负载(通常基于持久文件系统和数据库概念) ?

嗯,答案很简单,就是利用现代化技术让传统工作负载适合在现代无状态云环境中运行,而不必面对代码库的完全重写。

例如,我们以 Drupal 等传统应用程序为例,因此它是一个基于 PHP + Nginx/Apache + Mysql 的堆栈。在这种情况下,现代化进程应重点关注以下几个方面:

使用对象存储(例如 S3)来存储动态 CMS 资产
服务日志流式传输,(例如 Stackdriver)
使用关系数据库的本机云供应商服务(例如 CloudSQL、RDS)
每个传统工作负载都可以实现现代化并迁移到云端,而无需面临完整的重构。通过正确的更改,可以使应用程序更容易水平扩展,对错误更有弹性,性能更高,能够本机利用云供应商提供的每项服务。