Qué es apache Istio?
"Istio te permite conectar, asegurar, controlar y observar los microservicios que se ejecutan en tu entorno cloud.
Istio ayuda a reducir la complejidad de los despliegues en un entorno distribuido y alivia la tensión de los compañeros DevOps.
Es una malla de servicios open source que se superpone de forma transparente a las aplicaciones distribuidas existentes.
También es una plataforma, que incluye APIs que nos permiten integrar a cualquier plataforma de registro,
o sistemas de telemetría, control de acceso al dato, logging.
Básicamente trata de ayudarnos al permite explotar una arquitectura de microservicios distribuidos,
proporcionando una forma uniforme de securizar, conectar y supervisar dichos microservicios."
En el momento que escribí esta guía de pasos, usaba fish en osx en vez de zsh.
bash
https://istio.io/docs/setup/getting-started/#download
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.6.0
export PATH=$PWD/bin:$PATH
istioctl manifest apply --set profile=demo
kubectl label namespace default istio-injection=enabled
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
Una vez que Docker está corriendo, kubernetes está corriendo y puedes lanzar estos docs comandos para comprobar el estado…
kubectl get services
kubectl get pods
kubectl exec -it $(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}') -c ratings -- curl productpage:9080/productpage | grep -o "<title>.*</title>"
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
istioctl analyze
kubectl get svc istio-ingressgateway -n istio-system
como estás usando Docker for Desktop, debes usar este comando
export INGRESS_HOST=127.0.0.1
Si estuvieras detrás de un kubernetes mas real, debes usar este comando
export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].port}')
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
echo $GATEWAY_URL
echo http://$GATEWAY_URL/productpage
En mi portatil me sale esta url, http://127.0.0.1:80/productpage. Chequear que todo está bien.
#admin/admin by default
istioctl dashboard kiali
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
kubectl get destinationrules -o yaml
Mas microservicios con los que poder jugar. DaSouzza
https://github.com/alonsoir/service-mesh-istio
cd /Users/aironman/gitProjects/service-mesh-istio
kubectl apply -f ./istio/
para ver si los contenedores están corriendo correctamente
kubectl get po -n istio-system -w
kubectl apply -f ./
Istio te da Grafana, Kiali y Jaeger, las urls de acceso son:
Grafana
http://127.0.0.1:31002/?orgId=1
kiali
http://127.0.0.1:31000/kiali/
Jaeger
http://127.0.0.1:31001/jaeger/search
LINKS
https://istio.io/latest/docs/concepts/what-is-istio/