Does Istio provide a dashboard similar to Kubernetes (yet)? - kubernetes

Does Istio have a dashboard similar to https://github.com/kubernetes/dashboard yet?

While it's not quite the same as the Kubernetes dashboard, Istio does come bundled with Grafana, which provides a UI for visualizing Istio metrics (via Prometheus).
See Istio's documentation for how to access: https://istio.io/docs/tasks/telemetry/using-istio-dashboard/
TL;DR, run this command: kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000
then navigate here for the dashboard: http://localhost:3000/dashboard/db/istio-mesh-dashboard

A relatively new project called Kiali aims to provide a UI to observe Istio service mesh.
https://github.com/kiali/kiali

yes it has kiali dashboard.you can see istio configurations over there and also visualize istio mesh.
you can refer the below official documentation for same.
https://istio.io/docs/tasks/observability/kiali/

Related

istio-engressgateway does not work in microk8s

For testing and learning purposes I tried to use istio in microk8s.
microk8s.enable istio
Then
export MYHOST=$(microk8s.kubectl config view -o jsonpath={.contexts..namespace}).bookinfo.com
microk8s.kubectl apply -l version!=v2,version!=v3 -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/platform/kube/bookinfo.yaml
microk8s.kubectl get pods shows running bookinfo containers.
But when I try to get gateway it shows me nothing.
microk8s.kubectl get gateway
No resources found in default namespace.
microk8s.kubectl get all --all-namespaces shows pod/istio-engressgateway and its IP address.
But I can not access to that IP address, it shows not found.
What am I missing here? I just started Kubernetes and microk8s.
You also need to get bookinfo sample gateway yaml. To get that you must-
microk8s.kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.5/samples/bookinfo/networking/bookinfo-gateway.yaml
That should work..

I can't found a way to set up a grafana dashboard with influxdb to monitor a kubernetes cluster

I am currently working with Minikube and trying to set up a Grafana dashboard using Influxdb for the monitoring of my cluster.
I found several tutorials and used this one: https://github.com/kubernetes-retired/heapster/blob/master/docs/influxdb.md as I found many tutorials redirecting to the .yaml here: https://github.com/kubernetes-retired/heapster/tree/master/deploy/kube-config/influxdb
I just modified those .yaml a bit, switching all "extensions/v1beta1" into "apps/v1" and setting the type for the grafana service to NodePort.
But when I am checking the creation of the services and deployments grafana, influxdb and heapster are nowhere to be found.
kubectl deployments created:
deployments and services not found:
I found this may be because the images I am using are no longer available so I tried using other images like
image: gcr.io/google_containers/heapster-grafana-amd64:v4.0.2 for grafana
image: gcr.io/google_containers/heapster-influxdb-amd64:v1.1.1 for influx-db
but nothing change.
Grafana, influxdb and heapster are created in kube-system namespace. So you can find them using:
kubectl get pods -n kube-system
kubectl get svc -n kube-system
kubectl get deployments -n kube-system
Also the git repository which you are using in archived, I would advice not to use it. Heapster is deprecated in favor of metrics server.

How do I add log_output_level argument to istio-sidecar-injector on GKE?

I am following along this article and try this on GKE. After adding the argument - --log_output_level=default:debug the change seems accepted as I get deployment.extensions/istio-sidecar-injector edited
, but I how do I know for sure?
The output of
pod=$(kubectl -n istio-system get pods -l istio=sidecar-injector -o jsonpath='{.items[0].metadata.name}')
and then
kubectl -n istio-system logs -f $pod
is the same as before and when I do (again)kubectl -n istio-system edit deployment istio-sidecar-injector the added argument is not there...
Depends on how installed Istio on GKE. There are multiple ways to install Istio from GKE.
If you're installing from http://cloud.google.com/istio which installs a Google-managed version of istio to your cluster, editing like kubectl -n istio-system edit deployment istio-sidecar-injector is a really bad idea, because Google will either revert it or the next version will wipe your modifications (so don't do it).
If you're installing yourself from Istio open source release, Istio is distributed as a Helm chart, and has bunch of kubernetes .yaml manifests. You can go edit those YAML manifests –or update Helm values.yaml files to add that argument. Then you can perform the Istio installation with the updated values.
If you're interested in getting help debugging istio, please get to a contributor community forum like Istio on Rocket Chat: https://istio.rocket.chat/ .

Install Istio in multi master nodes in kubernetes

I read about Istio and I need to install it in Kubernetes.
I don't know what is the best way to install Istio in a multi-node Kubernetes cluster.
The setup is multi-node master cluster and multi-node slave for Kubernetes.
Is the best way to install with Istio multicluster or sidecar injection (automatic)?
Regards.
There is no difference on how many Master and Slave Nodes your Kubernetes cluster has if you want to install Istio.
You can follow the instructions from this link
Briefly, you need to:
Download Istio release
Install Istio’s Custom Resource Definitions using kubectl apply -f install/kubernetes/helm/istio/templates/crds.yaml from that release
Install Istio components using one of options:
without mutual TLS authentication between sidecars using kubectl apply -f install/kubernetes/istio-demo.yaml
with default mutual TLS authentication kubectl apply -f install/kubernetes/istio-demo-auth.yaml
Render Kubernetes manifest with Helm and deploy with kubectl
Use Helm and Tiller to manage the Istio deployment
For auto injection, you need to install istio-sidecar-injector component and add istio-injection=enabled label for a Namespace in which you want it to work.
Example of commands:
kubectl label namespace <namespace> istio-injection=enabled
kubectl create -n <namespace> -f <your-app-spec>.yaml

How do I install Prometheus with Helm so that it's available from the browser?

I'm installing Prometheus on GKE with Helm using the standard chart as in
helm install -n prom stable/prometheus --namespace hal
but I need to be able to pull up the Prometheus UI in the browser. I know that I can do it with port forwarding, as in
kubectl port-forward -n hal svc/prom-prometheus-server 8000:80
but I'm being told "No, just expose it." Of course, there's already a service so just doing
kubectl expose deploy -n hal prom-prometheus-server
isn't going to work. I assume there's some value I can set in values.yaml that will give me an external IP, but I can't figure out what it is.
Or am I misunderstanding when they tell me "Just expose it"?
It is generally a very bad idea to expose Prometheus itself as it has no authentication mechanism, but you can absolutely set up a LoadBalancer service or Ingress aimed at the HTTP port if you want.
More commonly (and supported by the chart) you'll use Grafana for the public view and only connect to Prom itself via port-forward when needed for debugging.
Agree that it's a bad idea to expose prom publicly, but if its a demo it's ok.
Run:
kubectl expose deploy -n hal prom-prometheus-server --type=LoadBalancer
Kubernetes will create a GCP Load Balancer with an external IP.
Hope it helps!