在consul connect中为什么consul服务需要与consul服务名同名的服务账号?

In consul connect why does consul service needs the service account with the same name as the consul service name?

我正在尝试使用 consul connect。当我提供的服务帐户名称与部署的服务名称不匹配时,出现以下错误。

[ERROR] service account name abc doesn't match Consul service name xyz

Consul 文档如下所述

如果启用了 ACL,serviceAccountName 必须与 Consul 服务名称匹配。

这背后的原因是什么?

为了识别 Kubernetes 创建的工作负载,Consul 需要为应用程序创建一个服务帐户。服务帐户是用作工作负载基本身份的唯一凭据。

当 sidecar 代理启动时,服务帐户令牌用于向 Consul 进行身份验证,以向控制平面注册代理。 Consul 联系 Kubernetes API 服务器以检查令牌对于正在注册的工作负载是否有效。例如,服务 web 的服务帐户正用于为名为 web 的服务注册 sidecar,而不是其他服务名称。

这就是服务帐户名称需要与服务名称匹配的原因。

Consul 关于 ACL Auth Methods 的文档稍微详细地解释了这一点。