首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenCensus的Linkerd分布式跟踪

基于OpenCensus的Linkerd分布式跟踪
EN

Stack Overflow用户
提问于 2020-12-20 06:58:29
回答 1查看 338关注 0票数 0

上下文

我正在尝试使用OpenCensus和Linkerd。虽然Linkerd可以在其名称空间中自动提供OpenCensus和jaeger,但我不想使用它们。相反,我在命名为'ops‘的名称空间中独立地部署了它们。

问题

  1. 是否应由Linkerd注入OpenCensus收集器。

在官方文档的末尾(从最后一行),它说,

确保OpenCensus收集器被注入了Linkerd代理。

这是什么意思?

我应该给OpenCensus收集器吊舱注射林克侧壁吗?

如果是,为什么?

  1. 我是否应该按名称空间以服务帐户名作为后缀?

例如,假设我配置了默认名称空间,如下所示。

代码语言:javascript
复制
apiVersion: v1
kind: Namespace
metadata:
  name: default
  annotations:
    linkerd.io/inject: enabled
    config.linkerd.io/trace-collector: my-opencensus-collector.ops:12345
    config.alpha.linkerd.io/trace-collector-service-account: my-opencensus-collector-service-account

my-opencensus-collector位于ops名称空间中,因此我将.ops放在其服务名称的末尾,从而生成my-opencensus-collector.ops:12345。OpenCensus收集器的专用服务帐户也存在于ops命名空间中。在这种情况下,我是否也应该将名称空间名称放在服务帐户名称的末尾?

哪一个是对的?

代码语言:javascript
复制
config.alpha.linkerd.io/trace-collector-service-account: my-opencensus-collector-service-account

代码语言:javascript
复制
config.alpha.linkerd.io/trace-collector-service-account: my-opencensus-collector-service-account.ops

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-12-28 23:18:49

  1. 是否应由Linkerd注入OpenCensus收集器。

是的,应该向OpenCensus收集器注入Linkerd代理,因为代理本身使用mTLS发送span信息。使用mTLS,请求的发送(客户端)和接收端(服务器)必须相互提供证书,以验证身份是否由同一个受信任的源颁发。

Linkerd服务网格由控制平面和数据平面组成。控制平面是在集群中运行以实现服务网格特性的一组服务。互最小二乘(mTLS)就是其中之一,它是由控制平面的linkerd-identity组件实现的。

数据平面由任意数量的链接代理组成,这些代理被注入到应用程序中的服务中,比如OpenCensus收集器。每当在pod中启动代理时,它都会向linkerd-identity组件发送证书签名请求,并接收证书作为回报。

因此,当控制平面中的Linkerd代理向收集器发送spans时,它们使用这些证书进行身份验证,这些证书必须由注入到OpenCensus收集器Pod中的代理进行验证。这可以确保在集群中安全地发送所有通信量,甚至是分布式跟踪。

  1. 我是否应该按名称空间以服务帐户名作为后缀?

在这种情况下,您应该将服务帐户的名称空间作为后缀。默认情况下,Linkerd将使用Pod命名空间,因此如果Pod命名空间中不存在服务帐户,则配置将无效。逻辑有一个函数,该函数检查注释名称中的命名空间并追加它(如果存在的话):

代码语言:javascript
复制
func ammendSvcAccount(ns string, params *Params) {
    hostAndPort := strings.Split(params.CollectorSvcAddr, ":")
    hostname := strings.Split(hostAndPort[0], ".")
    if len(hostname) > 1 {
        ns = hostname[1]
    }
    params.CollectorSvcAccount = fmt.Sprintf("%s.%s", params.CollectorSvcAccount, ns)
}

所以,这个是正确的:

代码语言:javascript
复制
config.alpha.linkerd.io/trace-collector-service-account: my-opencensus-collector-service-account.ops
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65377607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档