在使用ASM 1.10及之前版本时,如果有多个外部数据库,并且数据库登录的认证信息不同,在业务服务A加入服务网格并注入Sidecar代理后,请求数据库时会提示数据库服务认证失败。
由于您对集群外部TCP服务(数据库)使用Kubernetes ExternalName类型的Sevice进行了DNS别名声明,业务服务在加入服务网格后,因为缺少集群IP和外部TCP服务做映射,会按照TCP服务对应的端口进行匹配,这样有可能会将业务服务对数据库A的请求路由到数据库B,而这两个数据库登录信息不一样,导致认证失败。
升级ASM至1.11及以上版本,可以解决该问题。具体操作,请参见升级ASM实例版本。
您可以在ASM中创建服务条目,使得网格内的服务通过访问服务条目来访问指定IP的数据库。您也可以将服务条目创建到您指定服务的命名空间下,从而限定服务条目作用范围。
apiVersion: networking.istio.io/v1beta1kind: ServiceEntrymetadata: name: mysql-demospec: addresses: - 172.1.xx.xx endpoints: - address: 172.1.xx.xx hosts: - test-mysql.com location: MESH_EXTERNAL ports: - name: tcp number: 3306 protocol: TCP resolution: STATIC
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。