I am using minikube to run kubernetes cluster. I followed the setup given in Istio Docs to install istio plugin. I am able to access the dashboard using localhost:3000 but unable to access using ip:3000.
Checked firewall. It isn’t blocking any port.
You need to make grafana service type NodePort for this. You can change it with $ kubectl edit svc grafana -n istio-system and change .spec.type from ClusterIP to NodePort then save and quit editor.
To access grafana $ kubectl get svc grafana -n istio-system and get NodePort field then access it via ip:$NodePortValue
Check for the grafana service type.
You can use NodePort or LoadBalancer as the service type.
Use NodePort with ip or you can simply use the IP address of LoadBalancer to access the service online of grafana vai internet.
Unfortunately, if you are using istio it's not so easy to just change service type. You have to configure Istio VirtualService and create Gateway.
I am posting this answer as community wiki related to another stack case: https://stackoverflow.com/a/56019381/11148139 As mentioned question have 1 downvote and might be delete in the future I am posting for future use in this case.
\============================================
You can create Istio Gateway and VirtualService in order to forward your requests to grafana service running by default on port 3000
Firstly, let's check grafana and istio-ingressgateway service
kubectl get svc grafana istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
grafana ClusterIP 100.71.67.105 <none> 3000/TCP 18h
istio-ingressgateway LoadBalancer 100.64.42.106 <Public IP address> 15020:31766/TCP,80:31380/TCP,443:31390/TCP,31400:31400/TCP,15029:32576/TCP,15030:30728/TCP,15031:31037/TCP,15032:31613/TCP,15443:32501/TCP 18hSo, we have grafana running service listening on port 3000, and default istio-ingressgateway LoadBalancer service running with assigned public ip address.
Then we create gateway to use this default LoadBalancer.
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: grafana-gateway
namespace: istio-system # Use same namespace with backend service
spec:
selector:
istio: ingressgateway # use Istio default gateway implementation
servers:
- port:
number: 80
name: HTTP
protocol: HTTP
hosts:
- "*"
EOFThen configure route to grafana service for traffic entering via the this gateway:
$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana
namespace: istio-system # Use same namespace with backend service
spec:
hosts:
- "*"
gateways:
- grafana-gateway # define gateway name
http:
- match:
- uri:
prefix: "/"
route:
- destination:
port:
number: 3000 # Backend service port
host: grafana # Backend service name
EOFThen hit the http://<public_ip_istio_ingressgateway>, you should see the grafana dashboard
I hope it will be helpful for you.