【Nacos】 自定义环境变量

Metadata

title: 【Nacos】 自定义环境变量
date: 2023-01-03 21:53
tags:
  - 行动阶段/完成
  - 主题场景/组件
  - 笔记空间/KnowladgeSpace/ProgramSpace/ModuleSpace
  - 细化主题/Module/Nacos/插件
categories:
  - Nacos
keywords:
  - Nacos
description: 【Nacos】 自定义环境变量

【Nacos】 自定义环境变量

Nacos 自定义环境变量插件,可自定义扩展服务端配置等功能,例如数据库密码加密。

Nacos 从 2.2.0 版本开始,可通过 SPI 机制注入自定义环境变量实现插件,在插件中自定义 nacos 的配置,并按照您期望的方式进行处理(如数据库密码加密)。本文档详细介绍一个自定义环境变量插件如何实现以及如何使其生效。

注意: 目前自定义环境变量插件处于 Beta 测试阶段, 其 API 及接口方法定义可能会在后续版本升级而有较大修改,请注意您的插件适用版本。

插件开发

开发 Nacos 服务端自定义环境变量插件,首先需要依赖自定义环境变量插件的相关 API

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-custom-environment-plugin</artifactId>
            <version>${project.version}</version>
        </dependency>

${project.version} 为您开发插件所对应的 Nacos 版本

随后实现com.alibaba.nacos.plugin.environment.spi.CustomEnvironmentPluginService接口, 并将您的实现添加到 SPI 的 services 当中。

接口中需要实现的方法如下:

方法名 入参内容 返回内容 描述
pluginName void String 插件的名称。
propertyKey void Set<String> 需要对服务端自定义的配置项名称。
order void Integer 插件的优先级, 数字越大优先级越高, 多个插件同时自定义同一个配置项, 优先级高的插件将会覆盖优先级低的。
customValue Map<String, Object> Map<String, Object> 入参为 propertyKey 对应的配置项的值,出参为自定义之后的配置项值。

nacos-group/nacos-plugin 中,有一个 demo 的自定义环境变量插件实现,该 demo 插件实现了将数据库密码 Base64 解密, 于是您可以在application.properties配置文件中设置密文数据库密码而不是明文密码。

插件开发完成后,需要打包成 jar/zip,放置到 nacos 服务端的 classpath 中,如果您不知道如何修改 classpath,请直接放置到${nacos-server.path}/plugins

放置后,需要修改${nacos-server.path}/conf/application.properties中的以下配置

### 开启自定义环境变量功能
nacos.custom.environment.enabled=true

随后重启 nacos 集后,可以从${nacos-server.path}/logs/nacos.log中看到如下日志:

[CustomEnvironmentPluginManager] Load customEnvironmentPluginService(xxx) customEnvironmentPluginName(xxx) successfully..