如何在Nacos配置中心中拉取不同的配置文件

问题:

我尝试将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

展开
收起
白夜行fighting 2023-06-11 10:27:58 136 分享 版权
阿里云 AI 助理回答

要将非对称加密的密钥文件(如 pkcs8_rsa_private_key.pem)从 Nacos 配置中心拉取下来,并在 Spring Boot 项目中使用,您需要按照以下步骤进行配置和操作:


1. 确保 Nacos 配置中心已正确存储配置文件

在 Nacos 控制台中,确保已经上传了 pkcs8_rsa_private_key.pem 文件作为配置内容。具体操作如下: - 登录 Nacos 控制台。 - 在左侧导航栏选择 配置管理 > 配置列表。 - 单击 创建配置,填写以下信息: - Data ID: pkcs8_rsa_private_key.pem - Group: 默认为 DEFAULT_GROUP,也可以根据需求自定义。 - 配置格式: 选择 Text 格式(因为 .pem 文件是纯文本格式)。 - 配置内容: 将 pkcs8_rsa_private_key.pem 文件的内容粘贴到配置内容框中。 - 单击 发布


2. 修改 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服务注册中心地址

关键配置项说明:

  • shared-dataids: 定义共享的配置文件列表,多个文件用逗号分隔。这些配置文件会被加载到应用上下文中。
  • refreshable-dataids: 定义支持动态刷新的配置文件列表。当 Nacos 中的配置发生变化时,这些文件会自动更新。
  • file-extension: 默认配置文件格式为 yaml,但 pkcs8_rsa_private_key.pem 是纯文本格式,因此需要特殊处理。

3. 自定义配置加载逻辑

由于 pkcs8_rsa_private_key.pem 是一个非标准的配置文件(不是 YAML 或 Properties 格式),Spring Cloud Alibaba Nacos 默认无法直接解析它。您需要通过自定义逻辑来加载该文件内容。

实现步骤:

  1. 创建自定义配置类
    创建一个配置类,用于从 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;
       }
    }
    
  2. 在 Nacos 中配置 Data ID 和 Group
    在 Nacos 控制台中,确保 pkcs8_rsa_private_key.pem 的 Data ID 和 Group 与 bootstrap.yml 中的配置一致。例如:

    • Data ID: pkcs8_rsa_private_key.pem
    • Group: DEFAULT_GROUP
  3. 手动加载配置内容
    如果 @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秒
       }
    }
    
  4. 使用加载的私钥
    在需要使用私钥的地方调用 NacosConfigLoader 类的方法,获取并使用私钥内容。


4. 验证动态刷新功能

为了验证 pkcs8_rsa_private_key.pem 是否支持动态刷新,请执行以下步骤: 1. 启动 Spring Boot 应用。 2. 在 Nacos 控制台中修改 pkcs8_rsa_private_key.pem 的内容并重新发布。 3. 调用应用中的接口或方法,检查是否能够获取到最新的私钥内容。


5. 注意事项

  • 版本兼容性: 您使用的 Nacos SDK 版本为 0.2.1.RELEASE,建议升级到更高版本(如 2.1.1.RELEASE),以获得更好的功能支持和稳定性。
  • 命名空间隔离: 确保 namespace 配置正确,避免不同环境(如开发、测试、生产)之间的配置冲突。
  • 白名单设置: 如果您的应用与 Nacos 不在同一网络环境中,需要配置白名单以允许公网访问。

通过以上步骤,您可以成功将 pkcs8_rsa_private_key.pem 文件从 Nacos 配置中心拉取下来,并在 Spring Boot 项目中使用。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

还有其他疑问?
咨询AI助理