为什么我的istio侧面汽车喷油器拒绝连接?

时间:2020-06-03 04:58:48

标签: kubernetes istio

我已经在启用了istio-injection的命名空间中使用crunchydata pgo运算符创建了PostgreSQL集群,但是现在拒绝api服务器连接。


level=error msg="Get https://100.xx.xx.xx:443/apis/batch/v1/namespaces/project/jobs?labelSelector=pg-cluster%3Dmilkr7%2Cpgdump%3Dtrue: dial tcp 100.xx.xx.xx:443: connect: connection refused".

api服务器日志

W0603 03:04:21.373083  1 dispatcher.go:180] Failed calling webhook, failing closed sidecar-injector.istio.io: failed calling webhook "sidecar-injector.istio.io": Post https://istio-sidecar-injector.istio-system.svc:443/inject?timeout=30s: dial tcp 100.65.xx.xx:443: connect: connection refused
I0603 03:18:59.654964 1 log.go:172] http: TLS handshake error from 172.20.xx.xx:44638: remote error: tls: bad certificate

1 个答案:

答案 0 :(得分:1)

要将数据库添加到istio服务网格,可以使用ServiceEntry对象。

ServiceEntry允许将其他条目添加到Istio的内部服务注册表中,以便网格中自动发现的服务可以访问/路由到这些手动指定的服务。服务条目描述服务的属性(DNS名称,VIP,端口,协议,端点)。这些服务可能在网状网络外部(例如,Web API)或不在网状网络服务注册表中的网状内部内部服务(例如,一组与Kubernetes中的服务进行通信的VM)。另外,还可以使用workloadSelector字段动态选择服务条目的端点。这些端点可以是使用WorkloadEntry对象或Kubernetes容器声明的VM工作负载。在单个服务下同时选择Pod和VM的能力允许将服务从VM迁移到Kubernetes,而不必更改与服务关联的现有DNS名称。

ServiceEntry数据库的Yaml清单示例:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: db-service
  namespace: databasens
spec:
  exportTo:
    - "."
  hosts:
    - db-service.xxx.com
  ports:
    - number: 5443
      name: tcp
      protocol: tcp
  resolution: DNS
  location: MESH_EXTERNAL

如果启用了mTLS强制,则还需要DestinationRule来定义如何与外部服务进行通信。

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mtls-db-service
spec:
  host: db-service.xxx.com
  trafficPolicy:
    tls:
      mode: MUTUAL
      clientCertificate: /etc/certs/myclientcert.pem
      privateKey: /etc/certs/client_private_key.pem
      caCertificates: /etc/certs/rootcacerts.pem

有关更多信息和更多示例,请访问istio documentation页的ServiceEntry

希望有帮助。