我正在尝试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验证方法的文档对此有更详细的解释。