I’m trying to guess if it is possible to use the same domain name for accessing a service internally and externally.
For example, I have the https://app1.domain.com which if:
- Accessed externally it is exposed in a L7 Load Balancer with WAF capabilities, dns resolves to a public IP address.
- Accessed internally, for performance reasons traffic is routed within the cluster, no WAF and no extra hops.
I want to maintain the same configuration inside the cluster and outside the cluster, and therefor use the same URI for http requests.
The current configuration consists of:
Namespace A, here lives application exposed to the internet and internally to the cluster
- Istio Gateway (mygateway)
- Istio virtualservice
- Kubernetes service
- Kubernetes deployment
The Istio VirtualService is configured as follows:
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: labels: app: app1 namespace: app1 spec: gateways: - mesh - mygateway hosts: - app1.domain.com http: match: - uri: regex: ^\/v1(.*) route: - destination: host: app1.app1.svc.cluster.local port: number: 80 timeout: 60s
I’ve added the
mesh gateway to add the configuration also to the sidecars.
And then an other app2 in Namespace app2 with just a deployment that executes the following request:
It doesn’t work at all, since it is resolving DNS to a public IP.
I’ve also tried to add a ServiceEntry with no success, also if it worked, it applies to workloads and not to “VirtualService” configuration, so it does not make sense to me, since a VirtualService could aggregate different workloads.
apiVersion: networking.istio.io/v1alpha3 kind: ServiceEntry metadata: name: app1 namespace: app1 spec: hosts: - app1.domain.com location: MESH_INTERNAL ports: - number: 80 name: http protocol: HTTP - number: 443 name: https protocol: HTTPS resolution: STATIC workloadSelector: labels: app: app1
Do you think this is something possible to configure?
I’ve seen this post where it is asked about something similar using Knative istio - What is the knative's "mesh" gateway - Stack Overflow