Nacos 2.3.0 正式版发布,Nacos Controller 项目开源

这篇具有很好参考价值的文章主要介绍了Nacos 2.3.0 正式版发布,Nacos Controller 项目开源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

新版本发布

Nacos 2.3.0-BETA 版本经过 1 个多月的社区测试,修复了部分的问题并对部分新功能的使用进行了少量优化后,于 2023 年 12 月 7 日正式发布。

Nacos 2.3.0 版本基于 2.3.0-BETA 版本为基础,主要进行了如下更新:

  • 基于能力协商机制,支持通过 Grpc 的方式进行持久化服务实例的注册及删除。
  • Console UI 中显示更多内容,例如部署模式等。
  • 对参数校验功能的实现方式进行优化。
  • 对 TopN 指标的实现进行重构,优化准确性和内存消耗。

详细的更新日志请查看:

## Feature
[#11393] Support register or deregister persistent instance by grpc.

## Enhancement&Refactor
[#11275] Enhance console ui deploy, show more information like `mode`.
[#11298] Strip groupNamePrefix of instance serviceName at register or deregister.
[#11310] Simplify the validate method for serviceinfo.
[#11342] Simplify BatchDeregister instances conditions to ip and port.
[#11343] Simplified parameters checker control logic.
[#11352] Refactor topN logic to enhance memory usage and accuracy.

## BugFix
[#10353] Handling DataIntegrityViolationException and DuplicateKeyException together.
[#11299] Fix console ui auth pagination failure.
[#11382] Fix console ui listening query pagination failure.
[#11384] Fix console ui comparing configuration failure.
[#11390] Fix Config EncryptionPluginService order problem.
[#11442] Fix listen configuration check failed without namespace.

## Dependency
[#11216] Declare httpcore as direct dependency to fix avoid conflict.
[#11396] Upgrade jackson same with spring boot dependency.
[#11439] Upgrade some UI component to solve security problem.

Nacos Controller 项目开源

在云原生下,应用代码与运行环境可以通过 Helm 或 Kustomize 等软件进行交付、维护、CICD,但应用的 Nacos 配置依然需要手工地迁移、或使用控制台修改发布配置。借助于 Nacos Controller[1]项目,我们可以将 Nacos 配置管理下移到 Kubernetes 集群中,又或是可以将 Kubernetes 中 ConfigMap 配置上移到 Nacos 控制台中,从而实现统一管理能力。

Nacos 配置下移到 Kubernetes 集群中

工作机制

Nacos Controller 监听集群内的 DC 资源,当 DC 资源发生变化时,Nacos Controller 将其中的配置内容同步到 Nacos Server 中。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

简易 Demo

在 Nacos Controller 中,我们定义了一份 CRD:DynamicConfiguration(简称 DC),我们将 Nacos 配置保存在 ConfigMap 中,对配置的任何修改都通过 DC 将其中的配置同步到对应的 Nacos 服务端中。在后续的配置维护中,直接修改对应的 ConfigMap 即可。以下是一份简易的 Demo 示例:

apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
    name: dc-demo-cluster2server
spec:
  dataIds:
  - data-id1.properties
  - data-id2.yml
  nacosServer:
    endpoint: <your-nacos-server-endpoint>
    namespace: <your-nacos-namespace-id>
    group: <your-nacos-group>
    authRef:
      apiVersion: v1
      kind: Secret
      name: nacos-auth
  strategy:
    syncPolicy: Always
    syncDirection: cluster2server
    syncDeletion: true
  objectRef:
    apiVersion: v1
    kind: ConfigMap
    name: nacos-config-cm

---
apiVersion: v1
kind: ConfigMap
metadata:
    name: nacos-config-cm
    namespace: default
data:
    data-id1.properties: |
      key=value
      key2=value2
    data-id2.yml: |
      app:
        name: test

---
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    ak: <base64 ak>
    sk: <base64 sk>

Kubernetes 配置上移到 Nacos 控制台

工作机制

首先需要用户创建 DC 资源指定需要同步哪些 DataId,Nacos Controller 根据读取到的 DC 配置,选择性监听 Nacos Server 中的相关配置并将配置改动同步到 Kubernetes 集群中。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

简易 Demo

云原生下,应用除了需要加载 Nacos 配置外,还可能依赖一些环境变量,比如 JVM 参数通过环境变量注入。做得比较好的方式是通过 ConfigMap 等 Kubernetes 原生方式管理配置,通过引用的方式传递给应用 Pod。在 Nacos Controller 中,我们可以定义一份 DC,将 Nacos 服务端中的某些 DataId 同步到 Kubernetes 集群中的 ConfigMap 中,从而实现配置的统一管理。以下是一份示例 Demo:

apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
    name: dc-demo-server2cluster
spec:
  dataIds:
  - APP1_JVM_PARAMS
  - APP2_JVM_PARAMS
  nacosServer:
    endpoint: <your-nacos-server-endpoint>
    namespace: <your-nacos-namespace-id>
    group: <your-nacos-group>
    authRef:
      apiVersion: v1
      kind: Secret
      name: nacos-auth
  strategy:
    syncPolicy: Always
    syncDirection: server2cluster
    syncDeletion: true
---
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    ak: <base64 ak>
    sk: <base64 sk>

云原生下的配置管理最佳实践

在使用 Kubernetes 的场景下,一个微服务应用的配置被分割成两部份,一部分存放管理在 Kubernetes 集群中的 Secret 或 ConfigMap 中,另一部份存放管理与 Nacos 配置中心。对于运维人员,我们需要知道哪些配置是存放在何处且同时需要对两个平台的配置管理操作均有所了解,一来是增加了运维人员的知识门槛,二来是增加了应用配置运维的操作成本。通过 Nacos Controller 项目,我们将应用的所有配置集中于一处管理,降低应用配置运维的门槛与复杂性。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

面向 Kubernetes 运维偏好的用户

通过 Nacos Controller 项目,我们将应用与应用配置的交付和维护集中在 Kubernetes 集群中。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

以下通过一份 Helm 应用 Chart 包说明如何集中管理。

.
├── Chart.yaml
├── charts
├── conf
│   ├── application-dev.properties
│   ├── application.properties
│   ├── consumer-app.properties
│   └── provider-app.yaml
├── templates
│   ├── consumer.yaml
│   ├── dc.yaml
│   └── provider.yaml
└── values.yaml

以上是一份 Chart 包目录结构,其中 conf 目录存放的是 Nacos 配置,文件名即 DataId,文件内容即对应的 Content。在 templates/dc.yaml 中,我们定义一份 ConfigMap 来组装这些配置。templates 目录中的 consumer.yaml 与 provider.yaml 分别是应用定义。

apiVersion: v1
kind: ConfigMap
metadata:
  name: nacos-config
  namespace: {{ .Release.Namespace }}
data:
  {{- range $path, $_ := .Files.Glob "conf/**" }}
  {{ $path | base }}: |-
{{ $.Files.Get $path | indent 4}}
  {{- end }}

使用上述方式定义好应用与配置后,可以借助 git 实现应用、配置的版本管理。当需要发布应用或配置时,修改对应文件后,执行 helm upgrade 命令即可。

面向 Nacos 运维偏好的用户

Nacos 配置管理能力使得应用可以动态调整运行配置,但对于一些特殊的参数,如 JVM 参数、特殊环境变量、特殊目录文件等内容,Nacos 配置管理依然无法涵盖。在 Kubernetes 集群中,我们一般将环境变量或一些特殊文件配置写入 ConfigMap 中,通过 envFrom 能力将内容引用到环境变量中或者 volumeMount 挂载到文件系统中。这样的配置管理能力与 Nacos 配置管理能力是散开的,不利于统一管理。借助于 Nacos Controller,我们将这些配置上移到 Nacos 控制台中,进行统一管理。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

以下是一份 Demo 应用,通过 Nacos 控制台管理 JVM 启动参数:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo-app
  template:
    metadata:
      labels:
        app: demo-app
    spec:
      containers:
      - name: demo-app
        image: openjdk:8 #替换为你的应用镜像
        command: ["/bin/sh", "-c", "java -jar ${JVM_PARAMS} /app.jar"]
        env:
        - name: JVM_PARAMS # 从ConfigMap中载入JVM参数到环境变量中
          valueFrom:
            configMapKeyRef:
              name: nacos-config
              key: APP1_JVM_PARAMS

---
apiVersion: nacos.io/v1
kind: DynamicConfiguration
metadata:
    name: nacos-config
spec:
  dataIds:
  - APP1_JVM_PARAMS
  - APP2_JVM_PARAMS
  nacosServer:
    endpoint: <your-nacos-server-endpoint>
    namespace: <your-nacos-namespace-id>
    group: <your-nacos-group>
    authRef:
      apiVersion: v1
      kind: Secret
      name: nacos-auth
  strategy:
    syncPolicy: Always
    syncDirection: server2cluster
    syncDeletion: true
---
apiVersion: v1
kind: Secret
metadata:
    name: nacos-auth
data:
    ak: <base64 ak>
    sk: <base64 sk>

在 Nacos 控制台中,修改 DataId:APP1_JVM_PARAMS 后,配置将自动同步到集群的 ConfigMap 中。只需重启相关应用,则对应的 JVM 参数将自动变化。成功实现将应用的所有配置集中管理在 Nacos 上。

展望

2.X 后续计划

从 2021 年 3 月 2.0.0 正式版发布至今,2.X 版本已经走了接近2年时间,如今 2.3.0 版本发布,完成了大部分功能的插件化提炼,在之后的 2.3.X 版本中,会主要对当前版本的问题进行修复,并做出小范围的功能优化。同时对于 2.4.0 版本,会作为一个 Nacos3.0 的过度版本,对大量代码进行优化重构,在提升稳定性、健壮性的同时,提升易用性和可观测性,向 Nacos3.0 版本平稳过度。

3.0 计划

Nacos 社区同时也开启了关于 Nacos3.0 的畅想和规划,Nacos 将会从统一控制面、支持国产化、存储计算分离等方向进一步演进 Nacos 的功能和架构,欢迎社区积极参与到新版本的建设中。

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

nacos2.3.0,云栖号技术分享,开源,云计算,阿里云,云原生

About Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

相关链接:

[1] Nacos Controller

https://github.com/nacos-group/nacos-controller

[2] Karsonto

https://github.com/karsonto

[3] Daydreamer-ia

https://github.com/Daydreamer-ia

作者: 杨翊

原文链接

本文为阿里云原创内容,未经允许不得转载。文章来源地址https://www.toymoban.com/news/detail-832346.html

到了这里,关于Nacos 2.3.0 正式版发布,Nacos Controller 项目开源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ?Avalonia 11.0.0 正式版发布

    AvaloniaUI 发布11.0.0正式版 终于avalonia发布了正式版。 今天,我们非常高兴地宣布Avalonia 11.0版本的发布! 在经历了近一年的预览版本和无数个数以千计的工作小时后,现在是时候发布一款改变游戏规则的跨平台应用程序开发工具了。Avalonia v11代表着我们在实现目标上的巨大飞

    2024年02月12日
    浏览(113)
  • IOS17正式版今日发布

    北京时间9月19日凌晨,苹果公司正式向全球用户推送了期待已久的iOS 17正式版。此次更新为iPhone带来了多项激动人心的功能,包括对“电话”、“信息”、FaceTime通话的重大更新,“待机显示”以及音乐、小组件、Safari浏览器的升级等。 据了解,iOS 17正式版的系统安装包大小

    2024年02月07日
    浏览(65)
  • 小程序新渲染引擎 Skyline 发布正式版

    为了进一步提升小程序的渲染性能和体验,我们推出了一套新渲染引擎 Skyline,现在,跟随着基础库 3.0.0 发布 Skyline 正式版。 我们知道,小程序一直用 WebView 来渲染界面,因其有不错的兼容性和丰富的特性,且各大厂商也在不断优化 Web 的渲染性能,但 Web 体系相比于原生开

    2024年02月14日
    浏览(56)
  • 代码生成器 CodeBuilder 3.2 正式版发布

    CodeBuilder是一款强大的代码生成工具,目前发布了 3.2 版本,大家可以前去下载体验 官方主页。 基于 ADO.NET 的数据驱动 Power Designer PDManer DbSchema Swagger 这几种数据源基本上已经覆盖了我们常用的数据环境了,如果你有能力的话,可以自己开发数据源插件。 基于 Fireasy 3,支持从

    2024年02月06日
    浏览(125)
  • 苹果发布iOS16正式版,各机型升级建议

    今日凌晨,苹果发布了 iOS16 和 iPadOS16 正式版系统,打开系统设置-通用-软件更新就可以收到推送 iOS16正式版的版本号为  20A362 ,更新包大小在5GB左右,这个版本也是  iPhone14 系列的出厂标配版本 ,不少果粉会特别青睐。 iOS16 正式版包含了此前9个测试版的所有26个新功能,

    2024年02月04日
    浏览(71)
  • AlmaLinux 9.2 正式版发布 - RHEL 兼容免费发行版

    AlmaLinux 9.2 正式版发布 - RHEL 兼容免费发行版 由社区提供的免费 Linux 操作系统,RHEL 兼容发行版。 请访问原文链接:https://sysin.org/blog/almalinux-9/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 由社区提供的免费 Linux 操作系统 一个开源、社区拥有和管理、永远

    2024年02月05日
    浏览(61)
  • AIGC 3D引擎-LayaAir3.0正式版发布了

    2016年6月30日,LayaAir引擎1.0正式版首次发布,今天迎来了它的7周岁生日。 7年,3个大版本,代表着引擎不同阶段、不同的时代、不同的定位。 2016年6月的 第1代引擎版本定位是极致性能 ,支持2D与3D游戏开发, 满足大型游戏流畅运行。 2019年1月的 第2代引擎定位最强国产 WEB

    2024年02月15日
    浏览(54)
  • 【DockerCE】Docker-CE 24.0.3正式版发布

    官网下载地址(For RHEL/CentOS 7.9): https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 本次官方发布的rpm包只有 5 个,下载链接如下: 完整的离线安装包(包含依赖包)清单如下: 升级安装记录: 启动服务、检查版本信息:  

    2024年02月13日
    浏览(50)
  • 【DockerCE】Docker-CE 24.0.6正式版发布

    官网下载地址(For RHEL/CentOS 7.9): https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 相对于24.0.5版本,本次24.0.6版本更新的rpm包有 5 个,使用目录对比软件对比的结果如下: 在Linux目录下的文件列表如下: 升级安装: 启动docker服务 查看docker的版本号:

    2024年02月07日
    浏览(65)
  • 【DockerCE】Docker-CE 24.0.2正式版发布

    官网下载地址(For RHEL/CentOS 7.9): https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 本次官方发布的rpm包只有 4 个,下载链接如下: 完整的离线安装包(包含依赖包)清单如下: 升级安装记录: 启动服务、检查版本信息:

    2024年02月13日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包