Skip to content

bootstrap servicecomb

chengyouling edited this page Sep 13, 2024 · 2 revisions

Bootstrap 配置: ServiceComb

注意:以下配置模板适配版本大于等于1.10.3-2021.0.x,更低版本下载源码查看DiscoveryBootstrapProperties内容适配下发配置

推荐配置

spring:
  application:
    # 微服务名称。 微服务名称定义好以后,后续不能变更。
    name: basic-provider
  cloud:
    servicecomb:
      # 微服务的基本信息
      service:
        # 微服务名称,和spring.application.name保持一致。
        name: ${spring.application.name}
        # 微服务版本号,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改版本号,防止契约注册失败。
        version: ${CAS_INSTANCE_VERSION:0.0.1}
        # 应用名称。默认情况下只有应用名称相同的微服务之间才可以相互发现。
        application: ${CAS_APPLICATION_NAME:basic-application}
        # 环境名称。只有环境名称相同的微服务之间才可以相互发现。
        # 可以取值 development, testing, acceptance, production
        environment: production
      # 注册发现相关配置         
      discovery:
        # 注册中心地址,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改地址。
        address: ${PAAS_CSE_SC_ENDPOINT:http://127.0.0.1:30100}
        # 微服务向CSE发送心跳间隔时间,单位秒
        healthCheckInterval: 10
        # 拉取实例的轮询时间,单位毫秒
        pollInterval: 15000
        # 优雅停机设置。优雅停机后,先从注册中心注销自己。这个时间表示注销自己后等待的时间,这个时间后才退出。
        waitTimeForShutDownInMillis: 15000
      config:
        # 配置中心地址,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改地址。
        serverAddr: ${PAAS_CSE_CC_ENDPOINT:http://127.0.0.1:30110}
        serverType: kie
        # 自定义配置
        kie:
          customLabel: ${spring.application.name}
          customLabelValue: ${INSTANCE_TAG:default}
        # 自定义配置,使用文本的key/value配置项作为yaml格式配置
        fileSource: governance.yaml,application.yaml
      dashboard:
        # 仪表盘配置,本地开发默认不开启
        enabled: false
        address: ${PAAS_CSE_DS_ENDPOINT:http://127.0.0.1:30109}

bootstrap.yml 常用配置参考

spring:
  application:
    # 微服务名称
    name: basic-provider
  cloud:
    servicecomb:
      # 微服务的基本信息
      service:
        # 微服务名称,和spring.application.name保持一致。
        name: ${spring.application.name}
        # 微服务版本号,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改版本号,防止契约注册失败。
        version: ${CAS_INSTANCE_VERSION:0.0.1}
        # 应用名称。默认情况下只有应用名称相同的微服务之间才可以相互发现。
        application: basic-application
        # 环境名称。只有环境名称相同的微服务之间才可以相互发现。
        environment: 
        description: example service definition
        properties:
          x-example-1: example-1
          x-example-2: example-2
      # 微服务实例的基本信息
      instance:
        # 微服务注册的时候的初始状态
        initialStatus: UP
        properties:
          x-example-1: example-1
          x-example-2: example-2
      # 注册发现相关配置     
      discovery:
        # 是否启用注册发现
        enabled: true
        # 是否启用实例更新消息推送
        watch: false
        # 注册中心地址,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改地址。
        address: ${PAAS_CSE_SC_ENDPOINT:http://127.0.0.1:30100}
        # 微服务向CSE发送心跳间隔时间,单位秒
        healthCheckInterval: 30
        # 发送心跳的连接超时时间
        healthCheckRequestTimeout: 5000
        # 拉取实例的轮询时间,单位毫秒
        pollInterval: 15000
        # 优雅停机设置。优雅停机后,先从注册中心注销自己。这个时间表示注销自己后等待的时间,这个时间后才退出。
        waitTimeForShutDownInMillis: 15000
        # 配置该服务是否允许被跨应用调用
        allowCrossApp: false
        # 注册中心的发布地址。默认可以不配置,自动从可用IP中取一个。
        publishAddress:
        # 主要用于网关,并且spring.cloud.gateway.discovery.locator.enabled=true的场景
        # 开启后定期查询微服务列表
        enableServicePolling: false
        # 是否根据数据中心信息进行路由,优先转发到接近的数据中心。需要每个实例配置数据中心信息。
        enabledZoneAware: false
        #  数据中心信息
        datacenter:
          name: x
          region: y
          availableZone: z
      config:
        # 是否启用动态配置
        enabled: true
        # 启动的时候,如果无法拉取配置,是否启动失败
        firstPullRequired: true
        # 配置中心地址,本示例使用ServiceStage环境变量。建议保留这种配置方式,
        # 部署的时候,不用手工修改地址。
        serverAddr: ${PAAS_CSE_CC_ENDPOINT:http://127.0.0.1:30110}
        # 配置中心类型,支持 kie 和 config-center
        serverType: kie
        kie:
          # 是否开启长轮询
          enableLongPolling: true
          # 长轮询的等待时间,这个参数会传递给配置中心,如果没有配置变化,配置中心会等待这个时间才返回。
          pollingWaitTimeInSeconds: 10
          # 非长轮询情况下,配置刷新周期,单位毫秒.
          refreshIntervalInMillis: 15000
          customLabel: public # 默认值是public
          customLabelValue: default # 默认值是空字符串
        configCenter:
          # 配置刷新周期,单位毫秒
          refreshInterval: 15000
        # 在配置中心为config-center时,不支持yaml格式。可以将一些配置项的值作为yaml格式的文本,并将
        # 文本内容解析为yaml,通过这种方式间接的实现支持yaml格式配置。
        fileSource: x.yaml,y.yaml

配置 RBAC

CSE专享版提供了RBAC认证功能,可以对微服务之间的访问、配置查询进行细粒度的授权。

微服务引擎开启了安全认证之后,所有调用的API都需要先获取token才能调用,认证流程请参考服务中心RBAC说明

使用安全认证首先需要从微服务引擎获取用户名和密码,然后在配置文件中增加如下配置。和配置AK/SK一样,password默认明文存储, 开发者可以自定义password的加密存储算法。

  • 明文方法
spring:
  cloud:
    servicecomb:
      credentials:
        account:
          name:用户名
          password:密码
          cipher: default
  • 自定义实现加密存储算法

1、定义CustomCipher类,实现com.huaweicloud.common.util.Cipher接口;

2、实现com.huaweicloud.common.util.Cipher接口中的两个方法: String name():这个是spring.cloud.servicecomb.credentials.cipher的名称定义,需要配置在配置文件中。 char[] decode(char[] encrypted):解密接口,对secretKey进行解密后使用。

3、加密解密的实现需要作为BootstrapConfiguration,首先声明CustomCipher为配置类:

@Configuration
public class MyCipherConfiguration {
  @Bean
  public Cipher customCipher() {
    return new CustomCipher();
  }
}

然后增加文件 META-INF/spring.factories定义配置(如下),服务启动时完成自动加载,bootstrap.yaml文件中才能使用新增加的解密算法。

org.springframework.cloud.bootstrap.BootstrapConfiguration=\
com.huaweicloud.common.transport.MyCipherConfiguration
Clone this wiki locally