I am trying to connect to external mysql database by egress gateway from kubernetes cluster. But it is not working. My files look like below.
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: mysql
namespace: istio-system
spec:
hosts:
- dbhost.svc.local
addresses:
- X.X.X.X/32
ports:
- number: 3306
name: tcp
protocol: TCP
location: MESH_EXTERNAL
resolution: STATIC
endpoints:
- address: X.X.X.X
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: istio-egressgateway
namespace: istio-system
spec:
selector:
istio: egressgateway
servers:
- port:
number: 777
name: tcp
protocol: TCP
hosts:
- dbhost.svc.local
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: egressgateway-for-mysql
namespace: istio-system
spec:
host: istio-egressgateway.istio-system.svc.cluster.local
subsets:
- name: mysql
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mysql
namespace: istio-system
spec:
host: dbhost.svc.local
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: direct-mysql-through-egress-gateway
namespace: istio-system
spec:
hosts:
- dbhost.svc.local
gateways:
- mesh
- istio-egressgateway
tcp:
- match:
- gateways:
- mesh
destinationSubnets:
- X.X.X.X/32
port: 3306
route:
- destination:
host: istio-egressgateway.istio-system.svc.cluster.local
subset: mysql
port:
number: 777
- match:
- gateways:
- istio-egressgateway
port: 777
route:
- destination:
host: dbhost.svc.local
port:
number: 3306
weight: 100
kubectl get svc istio-egressgateway -n istio-system -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
istio-egressgateway ClusterIP X.X.X.X <none> 80/TCP,443/TCP,777/TCP 26d app=istio-egressgateway,istio=egressgateway