服务网格ASM提供了对接Consul注册中心功能,便于您将微服务迁移至服务网格ASM。本文介绍如何在服务网格ASM中对接Consul注册中心。

前提条件

  • 服务网格ASM版本需要升级到v1.7.5.31-g28ec7490-aliyun或者以上版本。
  • 已部署Consul作为服务注册中心,具体操作,请参见Installing Consul on Kubernetes
  • 请确保加入服务网格中的Kubernetes集群的Pod可以访问Consul Server的访问地址。例如Consul Server是安装在相同的Kubernetes集群,Consul Server暴露了公网或者Consul Server提供了可访问的内网地址。
  • Consul中已注册示例服务,分别为Web,Web2以及内置的Consul。具体操作,请参见Services

通过Aliyun CLI对接Consul Server

  1. 在浏览器中输入Cloud Shell,或者在OpenAPI Explorer中打开命令行操作界面。关于OpenAPIExplorer,请参见OpenAPI开发者门户
    说明 您可以根据实际需要打开多个命令行窗口,但最多可同时打开5个云命令行窗口。
  2. 使用以下内容,创建config.json
    [
      {
        "name": "consul-test",
        "prefix": "consul-",
        "type": "consul",
        "endpoint": "http://consul-server.consul:8500",
        "toNamespace": "default"
      }
    ]
    参数 说明
    name 注册中心的名称,保证唯一。
    prefix 生成的ServiceEntry的名称前缀。
    type 注册中心的类型,当前支持值为consul。
    endpoint 注册中心的访问端点地址。
    toNamespace 生成的ServiceEntry所在的命名空间,如果该命名空间不存在,将会自动创建。
  3. 执行以下命令,对接Consull注册中心。
    aliyun servicemesh SetServiceRegistrySource --ServiceMeshId cf9e58cf8743748b3bd13867d6d87e30b --Config "$(cat config.json)"
    ASM对接Consul注册中心后,会自动在ACK集群安装asm-serviceregistry组件,并将在Consul中的服务同步到服务网格中。

查看Consull注册中心对接结果

  1. 查看ASM组件安装情况。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 在集群管理页左侧导航栏中,选择工作负载 > 无状态
    5. 无状态页面查看到名为asm-serviceregistry的组件。
      asm
  2. 查看Service Entry同步情况。
    1. 登录ASM控制台
    2. 在左侧导航栏,选择服务网格 > 网格管理
    3. 网格管理页面,找到待配置的实例,单击实例的名称或在操作列中单击管理
    4. 控制平面(自定义资源管理)区域单击ServiceEntry页签。
    5. ServiceEntry页签可以看到3个注册在Consul中的服务已经同步到服务网格中。
      说明
      • ServiceEntry页签下的Consul服务的名称命名规则为:[步骤2定义的prefix值]-[在Consul中注册的服务名]。
      • ServiceEntry页签下的Consul服务的命名空间为步骤2定义的toNamespace值。
      servicerntry