一个consul集群实现开发和生产环境隔离

文章目录

  • 背景
  • 解决方案
    • 开发环境
      • 创建policy
      • 创建token
    • 生产环境
      • 创建policy
      • 创建token
  • 微服务配置
  • 查看注册的微服务

背景

有时候,出于资源的限制或维护方便等因素,我们只部署了一个consul集群。生产环境和开发环境的微服务都使用这一个consul集群,在这种情况下,为了是开发和生成互不影响,该如何实现开发和生产环境的隔离呢?

解决方案

使用不同的Token和Policy来实现隔离。例如,针对 开发 和 生成,分别新建一个token和policy,具体如下

开发环境

创建policy

点击 ALC 菜单,进入Policies页面,创建policy

Name

DepolyDev

Rules

acl = "write"
agent_prefix "" {
 policy = "write"
}
event_prefix "" {
 policy = "write"
}
key_prefix "" {
 policy = "write"
}
keyring = "write"
node_prefix "" {
 policy = "write"
}
operator = "write"
query_prefix "" {
 policy = "write"
}
service_prefix "dev" {
 policy = "write"
 intentions = "write"
}
session_prefix "" {
 policy = "write"
}

Valid datacenters:选择all
点击 Save,保存。

创建token

进入Tokens页面,创建token
Restrict this token to a local datacenter?
选择 No

Policies
选择刚刚创建的policy:DepolyDev

点击 Save,保存,假设生成Token_dev

生产环境

创建policy

点击 ALC 菜单,进入Policies页面,创建policy

Name

DepolyProd

Rules

acl = "write"
agent_prefix "" {
 policy = "write"
}
event_prefix "" {
 policy = "write"
}
key_prefix "" {
 policy = "write"
}
keyring = "write"
node_prefix "" {
 policy = "write"
}
operator = "write"
query_prefix "" {
 policy = "write"
}
service_prefix "prod" {
 policy = "write"
 intentions = "write"
}
session_prefix "" {
 policy = "write"
}

Valid datacenters:选择all
点击 Save,保存。

创建token

进入Tokens页面,创建token
Restrict this token to a local datacenter?
选择 No

Policies
选择刚刚创建的policy:DepolyDev

点击 Save,保存,假设生成Token_prod

微服务配置

在 开发环境 部署时,配置微服务使用Token_dev进行服务注册和发现,同时配置服务的AppID以dev为前缀

在 生成环境 部署时,配置微服务使用Token_prod进行服务注册和发现,同时配置服务的AppID以prod为前缀

这样便实现了开发环境和测试环境的隔离。

查看注册的微服务

登录consul,选择ACL菜单,输入token:Token_dev,然后选择Services菜单,便可查看开发环境注册的微服务了;如果要查看生成环境注册的微服务,输入token:Token_prod即可。

你可能感兴趣的:(consul,consul,服务发现,token,policy,隔离)