Closed Melod-YI closed 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
我理解是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
指定以下规范:
annotations:
sermant.io/env-[key1]:[value1]
sermant.io/env-[key2]:[value2]
Injector默认会将各个key/value 解析出来,设置为对应pod的环境变量。
以上需求提炼,请确认。 @Melod-YI @provenceee
指定以下规范:
annotations: sermant.io/env-[key1]:[value1] sermant.io/env-[key2]:[value2]
Injector默认会将各个key/value 解析出来,设置为对应pod的环境变量。
以上需求提炼,请确认。 @Melod-YI @provenceee
我这没问题
修改一下规范 , 增加 env. 前缀。
annotations:
env.sermant.io/[key1]:[value1]
env.sermant.io/[key2]:[value2]
完整的样例如下.
参考来自: 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"
请保持issue open状态,直至提交文档变更,说明该功能的用法。
This issue seems to be Stale. We will close it in a few days.
We close this issue because it hasn't been updated in a while. Remove Stale label if you want to reopen it.
What would you like to be added?
希望Semant能够读到 annotation的方式配置的的属性、标签,并进行对应的治理规则控制。而不需要全部由用户配置在env中。
Why is this needed?
相比于env必须操作yaml的方式,annotation的部分可以通过命令操作,更容易和在命令行运维、CICD集成等场景使用。