Protodoc注解(已移除)
ProtodocAnnotation 最终没有加入到UDPA,而是保留在 Envoy 当中。详细见 issue:
https://github.com/cncf/udpa/pull/14/
ProtodocAnnotation定义
message ProtodocAnnotation {
// Not implemented yet annotation. This will hide the
bool not_implemented_hide = 1;
}
讨论过程
htuch:
因此,这实际上是一个关键问题。 UDPA通常应与客户端无关,因此不应反映Envoy的实现状态。 我认为其他注释是通用API的演变,但这个注解是Envoy特有的。 因此,我建议我们暂时将其放入Envoy 仓库中。 对于Envoy以外的UDPA字段,我们将不得不弄清楚一些故事,但这可能超出了我们对v3关心的范围。
Lizan:
好吧,我认同 “is this feature implemented” 是特定于每种实现的,而不是特定于Envoy的,因此这就是我在此处发布注释的原因。 另一个原因是我认为我们将在这里结束移动我们的 proto工具(包括 protoxform/protodoc)。 关键问题是如何标记未实现的UDPA消息(对于每个实现),而不是该注解所在的位置。
htuch:
我认为使用大量项目的项目必须使用一些基准工具才能使用Protos和UDPA格式的通用文档,然后在生成文档之前叠加自己的其他自定义设置。 我实际上认为这里有许多可行的选择,例如 我们可以让每个文档使用共同的资源来产生自己的文档树,或者我们可以让各种项目提供覆盖并生成一组中央文档,这些文档具有联邦责任来传达实现的内容。
无论哪种方式,每次添加或删除新字段时,我们都不会提交UDPA存储库。
我将其添加到下一个UDPA-WG的议程中,我们应该讨论更多。 同时,我建议将此注解移回Envoy。 CC @ mattklein123
martklein123:
我同意这是一个非常混乱的话题,我们必须深思。 现在,我同意我们应该将其移回,直到我们了解情况。
补充:个人意见,我比较赞成Lizan的说法,应该有一个方式来标记未实现的UDPA消息,而这个定义应该是对所有UDPA实现都通用的,因此定义在envoy这种单个实现中(意味着每个UDPA实现都要做这个事情)是不合适的。
后续跟进
- Envoy 的 xDS v3 中是否有这个注解?待确定中。