ali al-baiti
ali al-baiti

Reputation: 60

External access to Google Kubernetes Engine services using Istio-Ingress gateway

I need to access services inside Google Kubernetes Engine standard private cluster using Istio.

My set up is as follows:

When I go to the LoadBalancer public IP, I can't access it.

resource "helm_release" "istio_ingress" {
  name       = "istio-ingressgateway"
  chart      = "gateway"
  repository = "https://istio-release.storage.googleapis.com/charts"
  namespace  = "istio-system"
  version    = "1.18.0" 
}
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name:  my-gateway
  namespace:  istio-system
spec:
  selector:
    istio: ingressgateway 
  servers:
  - port:
      number: 80
      name: tcp
      protocol: HTTP
    hosts:
    - "*"
    tls:
      httpsRedirect: false
  - port:
      number:  443
      name: https
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: ${var.shared_domain_certificate_name}
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana
  namespace:   istio-system
spec:
  hosts:
  -   "*"
  gateways:
  -  istio-system/my-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: grafana
        port:
          number: 80

Upvotes: 0

Views: 93

Answers (2)

Dion V
Dion V

Reputation: 824

As per Jakub, from a previous post. one working solution for Grafana is to set prefix to / and host to grafana. As an example

spec:
  hosts:
  - "grafana.example.com"
  gateways:
  - grafana-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: grafana
        port:
          number: 80

Including as well the sample for VirtualService and Gateway

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: grafana-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http-grafana
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana-vs
spec:
  hosts:
  - "*"
  gateways:
  - grafana-gateway
  http:
  - match:
    - uri:
        prefix: /grafana/
    rewrite:
      uri: /
    route:
    - destination:
        host: grafana
        port:
          number: 80

Upvotes: 0

user22958110
user22958110

Reputation:

I didn't understand everything. Are you trying to access an application outside of the cluster, or are you attempting to access Grafana?

To access the deployment, you need to create the Ingress resource in the cluster for Istio. Have you created it?

If you have, you can find it by running:

Kubectl get ing

Then, you will obtain the load balancer information. Use that load balancer to access the application.

Upvotes: 0

Related Questions