问题:
我尝试将spring boot项目接入到nacos配置中心中,并且已经成功将yaml接入到Nacos配置中心,请问该如何在Nacos配置中心中拉取不同的配置文件?
eg: pkcs8_rsa_private_key.pem 这是非对称加密的钥匙,如何将这个文件顺利的从配置中心拉去下来?
bootstrap.yml
spring: application: name: xxx cloud: nacos: config: namespace: 1fe6cb84-a57f-497e-b5db-9df32e56d526 server-addr: localhost:8848 file-extension: yaml shared-dataids: pkcs8_rsa_private_key.pem,mongo.yaml,mysql.yaml,redis.yaml,xxl-job.yaml,mybatis-plus.yaml,actuator.yaml,mybatis-plus.yaml refreshable-dataids: pkcs8_rsa_private_key.pem,mongo.yaml,mysql.yaml,redis.yaml,xxl-job.yaml,mybatis-plus.yaml,actuator.yaml,mybatis-plus.yaml discovery: server-addr: localhost:8848
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
Nacos 版本: NACOS1.0.0 Nacos SDK and 版本: spring-cloud-starter-alibaba-nacos-config:0.2.1.RELEASE
原提问者GitHub用户GuoxinL
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
要将非对称加密的密钥文件(如 pkcs8_rsa_private_key.pem
)从 Nacos 配置中心拉取下来,并在 Spring Boot 项目中使用,您需要按照以下步骤进行配置和操作:
在 Nacos 控制台中,确保已经上传了 pkcs8_rsa_private_key.pem
文件作为配置内容。具体操作如下: - 登录 Nacos 控制台。 - 在左侧导航栏选择 配置管理 > 配置列表。 - 单击 创建配置,填写以下信息: - Data ID: pkcs8_rsa_private_key.pem
- Group: 默认为 DEFAULT_GROUP
,也可以根据需求自定义。 - 配置格式: 选择 Text
格式(因为 .pem
文件是纯文本格式)。 - 配置内容: 将 pkcs8_rsa_private_key.pem
文件的内容粘贴到配置内容框中。 - 单击 发布。
bootstrap.yml
配置文件在您的 Spring Boot 项目中,bootstrap.yml
文件需要正确配置以支持从 Nacos 拉取多个配置文件。以下是关键配置项的说明和示例:
spring:
application:
name: xxx
cloud:
nacos:
config:
namespace: 1fe6cb84-a57f-497e-b5db-9df32e56d526 # 命名空间ID
server-addr: localhost:8848 # Nacos服务器地址
file-extension: yaml # 默认配置文件格式
shared-dataids: pkcs8_rsa_private_key.pem,mongo.yaml,mysql.yaml,redis.yaml,xxl-job.yaml,mybatis-plus.yaml,actuator.yaml
refreshable-dataids: pkcs8_rsa_private_key.pem,mongo.yaml,mysql.yaml,redis.yaml,xxl-job.yaml,mybatis-plus.yaml,actuator.yaml
discovery:
server-addr: localhost:8848 # Nacos服务注册中心地址
yaml
,但 pkcs8_rsa_private_key.pem
是纯文本格式,因此需要特殊处理。由于 pkcs8_rsa_private_key.pem
是一个非标准的配置文件(不是 YAML 或 Properties 格式),Spring Cloud Alibaba Nacos 默认无法直接解析它。您需要通过自定义逻辑来加载该文件内容。
创建自定义配置类
创建一个配置类,用于从 Nacos 中读取 pkcs8_rsa_private_key.pem
的内容。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RsaKeyConfig {
@Value("${pkcs8_rsa_private_key}")
private String privateKey;
public String getPrivateKey() {
return privateKey;
}
}
在 Nacos 中配置 Data ID 和 Group
在 Nacos 控制台中,确保 pkcs8_rsa_private_key.pem
的 Data ID 和 Group 与 bootstrap.yml
中的配置一致。例如:
pkcs8_rsa_private_key.pem
DEFAULT_GROUP
手动加载配置内容
如果 @Value
注解无法直接注入 .pem
文件内容,可以通过 NacosConfigManager
手动获取配置内容。
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.exception.NacosException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class NacosConfigLoader {
@Autowired
private ConfigService configService;
public String loadRsaPrivateKey() throws NacosException {
String dataId = "pkcs8_rsa_private_key.pem";
String group = "DEFAULT_GROUP";
return configService.getConfig(dataId, group, 5000); // 超时时间为5秒
}
}
使用加载的私钥
在需要使用私钥的地方调用 NacosConfigLoader
类的方法,获取并使用私钥内容。
为了验证 pkcs8_rsa_private_key.pem
是否支持动态刷新,请执行以下步骤: 1. 启动 Spring Boot 应用。 2. 在 Nacos 控制台中修改 pkcs8_rsa_private_key.pem
的内容并重新发布。 3. 调用应用中的接口或方法,检查是否能够获取到最新的私钥内容。
0.2.1.RELEASE
,建议升级到更高版本(如 2.1.1.RELEASE
),以获得更好的功能支持和稳定性。namespace
配置正确,避免不同环境(如开发、测试、生产)之间的配置冲突。通过以上步骤,您可以成功将 pkcs8_rsa_private_key.pem
文件从 Nacos 配置中心拉取下来,并在 Spring Boot 项目中使用。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。