最近看到Nacos出了Pre-GA版本0.8.0,新增了login/namespace等一些实用的功能,新增功能如下
- Support Login (default user and password is nacos/nacos)
- Support prometheus
- Naming service support namespace
- Add users/roles tables
恰好最近写毕设最让我头疼的就是如何切换本地环境和线上环境,因为我的服务间调用都是走的 Feign 通过服务名来调用,这样当我本地起服务进行调试时就可能会调用到线上的服务,而 namespace 的出现解决了我这个问题。
下面简单介绍下多环境部署的一些操作
-
从 Nacos 新建一个 namespace
namespace
-
配置项目
用过 Nacos 做配置中心的都会知道,服务配置要写在 bootstrap.yml 中,所以我们新建 bootstrap-dev.yml 和 bootstrap-prod.yml 两个文件,同时在 bootstrap.yml 做好配置
# bootstrap.yml
spring:
cloud:
nacos:
config:
server-addr: localhost:8848/nacos
file-extension: yml
shared-dataids: mysql.yml,redis.yml,printlog.yml,es.yml
refreshable-dataids: mysql.yml,redis.yml,es.yml
profiles:
active: prod // 默认使用prod线上环境
application:
name: pf-user
# bootstrap-dev.yml
spring:
cloud:
nacos:
config:
namespace: c248e1c9-f10e-40 # 填写刚才我们新建 namespace 时生成的 id
discovery:
namespace: c248e1c9-f10e-40
线上环境因为我使用的默认 namespace ,所以不需要配置,这里需要注意一个小问题,如果我们使用 0.2.1.RELEASE 的 spring-cloud-starter-alibaba-nacos-discovery 会发现,discovery的namespace不生效,我从 issue 中发现了作者提供的解决办法,引入 0.8.0 的 nacos-client 进行覆盖。
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>0.8.0</version>
</dependency>
-
在 Nacos 中创建配置文件(不要忘记点左上角进行 namespace 切换)
config
-
本地启动项目(启动前将 Active profiles 设置为dev)
idea
这时我们就已经完成了多环境部署的所有步骤,使用起来还是比较方便的。
梦想提供着不竭的动力,而现实却如沉重大山,但我们仍要负重前行。
网友评论