sermant-io / Sermant

CNCF sandbox project, a Cloud-Native Proxyless Service Mesh based on Java Bytecode Enhancement Technology
https://sermant.io/
Apache License 2.0
1.25k stars 164 forks source link

【feature】容器部署场景下,希望能通过annotation的方式配置治理所需的kv属性或者标签 #1037

Closed Melod-YI closed 1 year ago

Melod-YI commented 1 year ago

What would you like to be added?

希望Semant能够读到 annotation的方式配置的的属性、标签,并进行对应的治理规则控制。而不需要全部由用户配置在env中。

Why is this needed?

相比于env必须操作yaml的方式,annotation的部分可以通过命令操作,更容易和在命令行运维、CICD集成等场景使用。

provenceee commented 1 year ago

因为容器内应用无法直接读取annotation,所以可以通过injector读取annotation(需要指定前缀),再映射到env中,然后通过core的核心配置能力从env中读取配置,从而间接读取annotation,并把标签注册到注册中心。

目前实例级别的标签的env的key值为SERVICE_META_PARAMETERS,value值形如k1:v1,k2:v2,服务级别(目前只支持servicecomb)的标签的env的key值为SERVICECOMB_SERVICE_PARAMETERS,value值形如k1:v1,k2:v2

robotLJW commented 1 year ago

我理解是injector组件(deployment),支持打annotation,但是这个annotation格式是必须是按一定格式来,比如是Sermant_Env_Parameters 对应是所有env的map,有个问题点,可能k8s的annotation不支持 key:value (value的格式是 k1:v1,k2:v2,k3:v3)。如果不支持可能要修改成 Sermant_Env/k1:v1,Sermant_Env/k2:v2,Sermant_Env/k3:v3,转成相应的env的map

yangyshdan commented 1 year ago

指定以下规范:

annotations:
  sermant.io/env-[key1]:[value1]
  sermant.io/env-[key2]:[value2]

Injector默认会将各个key/value 解析出来,设置为对应pod的环境变量。

以上需求提炼,请确认。 @Melod-YI @provenceee

provenceee commented 1 year ago

指定以下规范:

annotations:
  sermant.io/env-[key1]:[value1]
  sermant.io/env-[key2]:[value2]

Injector默认会将各个key/value 解析出来,设置为对应pod的环境变量。

以上需求提炼,请确认。 @Melod-YI @provenceee

我这没问题

yangyshdan commented 1 year ago

修改一下规范 , 增加 env. 前缀。

annotations:
  env.sermant.io/[key1]:[value1]
  env.sermant.io/[key2]:[value2]
yangyshdan commented 1 year ago

完整的样例如下.

参考来自: https://istio.io/latest/docs/reference/config/annotations/

kind: Deployment
metadata:
  name: app-okhttp3100
  labels:
    app: app-okhttp3100
spec:
  replicas: 1
  selector:
    matchLabels:
      app: app-okhttp3100
  template:
    metadata:
      annotations:
        env.sermant.io/key1: "value1"
        env.sermant.io/key2: "value2"
yangyshdan commented 1 year ago

请保持issue open状态,直至提交文档变更,说明该功能的用法。

github-actions[bot] commented 1 year ago

This issue seems to be Stale. We will close it in a few days.

github-actions[bot] commented 1 year ago

We close this issue because it hasn't been updated in a while. Remove Stale label if you want to reopen it.