Nacos 在云原生架构下的演进

💡 原文中文,约5200字,阅读约需13分钟。
📝

内容提要

Nacos提供动态服务发现与配置管理能力,NacosController项目实现了配置同步,将配置从Kubernetes同步到Nacos,也可将配置从Nacos同步到Kubernetes。阿里云的EDAS集成了DynamicConfiguration概念,简化了配置访问,通过CloudApp概念降低了微服务应用的技术门槛,提升了运维效率。下一步计划是将Nacos的服务动态发现能力与Kubernetes融合。

🔎

延伸解读

配置管理割裂的根源与统一接口的价值

文章指出,云原生应用由不可变基础设施和配置组成,但Nacos的配置管理能力无法融入Kubernetes标准接口,导致应用交付需分两步:发布Nacos配置和发布应用。配置发布依赖OpenAPI编程或控制台操作,运维接口不统一、不标准,造成应用生命周期管理割裂,进而降低运维效率、抬高技术门槛。NacosController通过DynamicConfiguration概念,用Kubernetes标准接口管理Nacos配置,正是针对这一痛点的解法。

DynamicConfiguration的双向同步机制与扩展性

DynamicConfiguration定义了Nacos配置与K8s配置的同步策略,支持两个方向:将Kubernetes中的配置同步到NacosServer,或将Nacos中的配置同步到Kubernetes。同步行为由dataIds、nacosServer、strategy和objectRef等字段描述,其中objectRef指定数据载体,不限于ConfigMap,也可用其他Kubernetes资源。这种设计让配置维护动作可统一到Kubernetes侧或Nacos侧,并借助Git、Helm等工具实现版本控制、自动化

EDAS CloudApp降低微服务治理门槛

阿里云EDAS将服务治理、可观测、弹性等能力集成到CloudApp概念中,并集成了DynamicConfiguration,简化了nacosServer访问配置。在EDAS环境中,只需为Kubernetes原生Workload增加一个label,即可自动启用服务治理、可观测等能力。文章展示的Helm demo中,用户无需引入繁琐概念,只需关注应用本身。CloudApp提供白屏变更和两种黑屏变更途径,分别对应云产品权限控制、Kubernetes RBAC权限控制以及仅关注应用本身的轻量方式,适应不同运维偏好。

下一步:服务动态发现与Kubernetes融合的意图

文章明确,NacosController已初步解决Nacos配置管理与Kubernetes的融合问题。下一步规划围绕Nacos的另一核心能力——服务动态发现,将其与Kubernetes融合。目标是解除应用程序对Nacos SDK的依赖,并降低Nacos体系微服务应用与非Nacos体系应用间的调用门槛。这一方向若实现,有望进一步统一服务发现层,但文章未给出具体时间表或技术细节,读者需关注后续进展。

❓

Q&A

Nacos 在云原生架构下遇到了什么问题?

Nacos 提供的配置管理能力无法融入 Kubernetes 标准接口,导致应用交付需要分两步走:先发布 Nacos 配置,再发布应用。而 Nacos 配置发布依赖编程对接 OpenAPI 或人工登录控制台,运维接口不统一、不标准,造成应用生命周期管理割裂,运维效率降低、技术门槛提高。

NacosController 项目的作用是什么?

NacosController 是连接 Nacos 和 Kubernetes 的桥梁,通过 Kubernetes 运维接口管理 Nacos 能力。它实现了 DynamicConfiguration 概念,可以定义 Nacos 配置与 K8s 配置的同步策略,从而使用 Kubernetes 标准接口管理 Nacos 配置。

DynamicConfiguration 是什么?它包含哪些关键部分?

DynamicConfiguration 是 NacosController 中定义 Nacos 配置与 K8s 配置同步策略的概念。一份 DC 资源包含:dataIds(关心的 DataId 列表)、nacosServer(目标 Nacos 服务器信息,如 endpoint、namespace、group 和认证信息)、strategy(同步策略,如 syncPolicy、syncDirection、syncDeletion)、objectRef(配置的数据载体,如 ConfigMap)。

如何将 Kubernetes 中的配置同步到 Nacos?

通过创建 DynamicConfiguration 资源,设置 spec.strategy.syncDirection 为 cluster2server,并指定 dataIds、nacosServer 信息以及 objectRef(如 ConfigMap)作为数据载体。这样即可将 Kubernetes 中的配置同步到 Nacos Server 的指定命名空间和分组。

如何将 Nacos 中的配置同步到 Kubernetes?

创建 DynamicConfiguration 资源,设置 spec.strategy.syncDirection 为 server2cluster,并指定 dataIds 和 nacosServer 信息。可以不指定 objectRef,此时会默认使用同名的 ConfigMap 作为数据载体,从而将 Nacos 中的配置同步到 Kubernetes 中。

阿里云 EDAS 中的 CloudApp 概念有什么优势?

CloudApp 集成了服务治理、可观测、弹性等能力,并集成了 DynamicConfiguration 概念,简化了 Nacos 服务器访问配置。用户只需为 Kubernetes 原生 Workload 增加一个 label,即可自动启用服务治理、可观测等能力,无需引入复杂概念,专注于应用本身,从而降低微服务应用最佳实践的技术门槛,提升运维效率。

Nacos 与 Kubernetes 融合的下一步计划是什么?

下一步计划是将 Nacos 的另一个核心能力——服务动态发现,与 Kubernetes 进行融合,从而解除应用程序对 Nacos SDK 的依赖,并降低 Nacos 体系微服务应用与非 Nacos 体系应用间的调用门槛。

🏷️

标签

➡️

继续阅读