# UI Template for Configuration Management

This document mainly focuses on the configuration management feature of Sermant Backend, explaining how to develop the UI template for configuration management.

# UI Template

# Feature Introduction

The configuration management feature of Sermant Backend is based on the UI template for rendering pages when querying, adding, or modifying configurations.

# Development Example

The UI template for configuration management is based on plugins, where each dynamic configuration of a plugin corresponds to a UI template. The UI template is in YAML format and mainly includes the following parts:

# Basic Information of the Plugin

Parameter Key Description Default Value Required Note
name-zh Chinese name of the plugin null Yes
name-en English name of the plugin null Yes

# Group and Key Generation Rules

Group and Key generation rules are used to generate the Group and Key of dynamic configurations based on element information.

Parameter Key Description Default Value Required Note
groupRule Rule for generating the group, if composed of variables such as application name and environment name, it can be represented as app=${application}&environment=${environment}. The key names of variables should match the element names null Yes
keyRule Rule for generating the key, similar to the representation of Group generation rule null Yes

# Element Information of the Plugin UI Template

The element information of the UI template will be rendered as input boxes on the configuration details page for user input. Based on the values filled in by the user and the generation rules of Group and Key, the dynamic Group and Key of the plugin will be generated.

Parameter Key Description Default Value Required Note
name Element name null Yes
desc-zh Chinese display name of the element null Yes
desc-en English display name of the element null Yes
values Options for the element null Not mandatory when user input is not required values are in array format, containing three attributes: desc-zh for the Chinese display name of the option, desc-en for the English display name of the option, and name for the value of the option
placeholder Placeholder information for the element corresponding to the input box null No Contains two attributes: desc-zh for the Chinese display content of the placeholder and desc-en for the English display content of the placeholder
required Whether the element information is required null Yes
notice Information to prompt the element null Yes Contains two attributes: desc-zh for the Chinese display content of the prompt and desc-en for the English display content of the prompt

# Dynamic Configuration Templates of the Plugin

For user convenience in configuration, the configuration details page will display the dynamic configuration templates of the plugin. The page will determine which set of dynamic configuration templates the current plugin needs to use based on the dynamic configuration template information (determined by validating the key generated according to the Key generation rule using regular expressions to match the key in the dynamic configuration template).

Parameter Key Description Default Value Required Note
key Matching rule for dynamic configuration key null Yes
value Dynamic configuration template of the plugin null Yes

# Example

Taking the UI template for dynamic configuration of the flow control plugin as an example, the template content is as follows:

plugin:
  name-zh: 流控插件
  name-en: flowcontrol
groupRule:
  - service=${service}
  - app=${application}&environment=${environment}&service=${service}
  - app=${application}&environment=${environment}
keyRule:
  - servicecomb.${ruleType}.${sceneName}
elements:
  - name: ruleType
    desc-zh: 规则类型
    desc-en: Rule Type
    values:
      - desc-zh: 流量匹配规则
        desc-en: Traffic Matching Rule
        name: matchGroup
      - desc-zh: 限流规则
        desc-en: Rate Limiting Rule
        name: rateLimiting
      - desc-zh: 熔断规则
        desc-en: Circuit Breaker Rule
        name: circuitBreaker
      - desc-zh: 隔离规则
        desc-en: Bulkhead Rule
        name: bulkhead
      - desc-zh: 错误注入
        desc-en: Fault Injection Rule
        name: faultInjection
      - desc-zh: 重试
        desc-en: Retry Rule
        name: retry
      - desc-zh: 系统级流控
        desc-en: System Level Flow Control
        name: system
    placeholder:
      desc-zh: 请选择规则类型
      desc-en: Please select a rule type
    required: true
    notice:
      desc-zh: 流控插件支持的规则类型
      desc-en: Rule types supported by the flow control plugin
  - name: sceneName
    desc-zh: 规则场景名称
    desc-en: Scene Name
    placeholder:
      desc-zh: 请输入场景名称
      desc-en: Please enter the scene name
    required: true
    notice:
      desc-zh: 流量匹配规则和具体流控规则的场景名称一致时流控规则才会生效
      desc-en: The flow control rule will only take effect when the scene name matches the traffic matching rule
  - name: application
    placeholder:
      desc-zh: 请输入应用名称
      desc-en: Please enter the application name
    required: true
    notice:
      desc-zh: 该配置对应sermant配置文件中的service.meta.application
      desc-en: This configuration corresponds to the service.meta.application  in the sermant configuration file
  - name: environment
    placeholder:
      desc-zh: 请输入环境名称
      desc-en: Please enter the environment name
    required: false
    notice:
      desc-zh: 该配置对应sermant配置文件中的service.meta.environment
      desc-en: This configuration corresponds to the service.meta.environment in the sermant configuration file
  - name: service
    desc-zh: service
    desc-en: service
    placeholder:
      desc-zh: 请输入服务名称
      desc-en: Please enter the service name
    required: true
    notice:
      desc-zh: 微服务的名称,由微服务配置文件的dubbo.application.name、spring.applicaton.name确定
      desc-en: The name of the microservice is determined by the dubbo.application.name and spring.application.name in the microservice configuration file
configTemplates:
  - key: servicecomb.matchGroup.*
    value: "matches:\n  - apiPath:\n      exact: /degrade\n    headers:\n      key:\n        exact: value\n    method:\n      - GET\n    name: degrade"
  - key: servicecomb.rateLimiting.*
    value: "limitRefreshPeriod: 1000\nrate: 2"
  - key: servicecomb.circuitBreaker.*
    value: "failureRateThreshold: 90\nminimumNumberOfCalls: 3\nslidingWindowSize: 10S\nslidingWindowType: time\nslowCallRateThreshold: 80"
  - key: servicecomb.bulkhead.*
    value: "maxConcurrentCalls: 5\nmaxWaitDuration: 10S"
  - key: servicecomb.faultInjection.*
    value: "type: abort\npercentage: 100\nfallbackType: ReturnNull\nforceClosed: false\nerrorCode: 503"
  - key: servicecomb.retry.*
    value: "waitDuration: 2000\nretryStrategy: FixedInterval\nmaxAttempts: 2\nretryOnResponseStatus:\n  - 500"
  - key: servicecomb.system.*
    value: "systemLoad: 5\ncpuUsage: 0.6\nqps: 1000\naveRt: 100\nthreadNum: 200"

The page display content is as follows:

Last Updated: 10/18/2024, 1:29:22 AM