chilcano.istio
Rol de Ansible: istio
Una Rol de Ansible que despliega Istio (https://istio.io) en un clúster de OpenShift corriendo localmente, generalmente creado usando Minishift (https://www.openshift.org/minishift). Esta rol realiza las siguientes tareas:
- Verifica si OpenShift está corriendo localmente.
- Descarga e instala la versión especificada o la más reciente de Istio.
- Usa el binario más reciente de
oc
de~/.minishift/cache/oc/<VERSION>/<OS>/
yistioctl
del binario de Istio descargado.
Requisitos previos
- Ansible 2.3+
- Antes de ejecutar la rol, limpia tu sesión de terminal de cualquier variable de entorno DOCKER*.
- Se requiere acceso
sudo
en tu host para instalaristioctl
(opcional). - OpenShift corriendo localmente. Consulta
https://galaxy.ansible.com/chilcano/minishift
para hacer correr OpenShift en una VM.
Observaciones
La Rol de Ansible de Istio ha sido probada con:
- minishift v1.11.0+4459917
- kubernetes 3.7
- istio 0.2.7
- VirtualBox 5.1.30
- macOS High Sierra, versión 10.13.2 (17C88)
Variables predeterminadas de la rol
Las variables predeterminadas están en defaults/main.yml
.
Ejemplo de Playbook
Consulta el archivo sample-1-istio.yml
para un ejemplo.
$ cat sample-1-istio.yml
---
- name: Instalar Istio.
hosts: Pisc0
connection: local
gather_facts: yes
vars:
vm: openshift0
roles:
- role: chilcano.istio
istio:
action_to_trigger: clean # [ deploy | clean ]
action:
deploy:
istioctl: true # istioctl
core: true # componentes principales
addons: true # prometheus, grafana, zipkin, servicegraph
sample_apps: true # bookinfo
minishift:
profile: "{{ vm }}"
openshift:
project: istio-system # predeterminado
hostname: "{{ vm }}"
admin_usr: "system:admin"
admin_pwd: anypassword
istio_usr: developer
istio_pwd: anypassword
repo:
#release_tag_name: "" # última
release_tag_name: "0.2.7"
#release_tag_name: "0.2.6"
Uso de la Rol de Ansible
Instala la rol:
$ sudo ansible-galaxy install chilcano.istio
Copia el playbook desde tu ruta de roles al directorio de trabajo actual:
$ cp ${ANSIBLE_ROLES_PATH}/chilcano.istio/sample-1-istio.yml .
Crea un archivo inventory
$ echo $(hostname) > ./inventory
Ejecuta el playbook:
$ ansible-playbook -i inventory --ask-become-pass sample-1-istio.yml
Cuando la ejecución del playbook haya terminado, verifica si todos los Pods, Servicios, etc. han sido desplegados y están corriendo.
$ eval $(minishift oc-env)
$ oc project bookinfo
$ oc status
En el proyecto bookinfo en el servidor https://192.168.99.100:8443
svc/details - 172.30.118.151:9080
pod/details-v1-1464079269-wxfl5 ejecuta istio/examples-bookinfo-details-v1:0.2.3, docker.io/istio/proxy_debug:0.2.7
svc/productpage - 172.30.163.171:9080
pod/productpage-v1-3915871613-p2cp6 ejecuta istio/examples-bookinfo-productpage-v1:0.2.3, docker.io/istio/proxy_debug:0.2.7
svc/ratings - 172.30.13.63:9080
pod/ratings-v1-327106889-rvqpv ejecuta istio/examples-bookinfo-ratings-v1:0.2.3, docker.io/istio/proxy_debug:0.2.7
svc/reviews - 172.30.233.119:9080
pod/reviews-v1-3806695627-2xkg6 ejecuta istio/examples-bookinfo-reviews-v1:0.2.3, docker.io/istio/proxy_debug:0.2.7
pod/reviews-v2-3096629009-2cfht ejecuta istio/examples-bookinfo-reviews-v2:0.2.3, docker.io/istio/proxy_debug:0.2.7
pod/reviews-v3-1994447391-ws74d ejecuta istio/examples-bookinfo-reviews-v3:0.2.3, docker.io/istio/proxy_debug:0.2.7
Mira los detalles con 'oc describe <resource>/<name>' o lista todo con 'oc get all'.
$ oc get pods
NOMBRE LISTO ESTADO REINICIOS EDAD
details-v1-1464079269-wxfl5 0/2 Init:0/2 0 1m
productpage-v1-3915871613-p2cp6 0/2 Init:0/2 0 1m
ratings-v1-327106889-rvqpv 0/2 Init:0/2 0 1m
reviews-v1-3806695627-2xkg6 0/2 Init:0/2 0 1m
reviews-v2-3096629009-2cfht 0/2 Init:0/2 0 1m
reviews-v3-1994447391-ws74d 0/2 Init:0/2 0 1m
$ oc get pods
NOMBRE LISTO ESTADO REINICIOS EDAD
details-v1-1464079269-wxfl5 0/2 Init:1/2 0 2m
productpage-v1-3915871613-p2cp6 0/2 Init:1/2 0 2m
ratings-v1-327106889-rvqpv 0/2 Init:1/2 0 2m
reviews-v1-3806695627-2xkg6 0/2 Init:1/2 0 2m
reviews-v2-3096629009-2cfht 0/2 Init:1/2 0 2m
reviews-v3-1994447391-ws74d 0/2 Init:1/2 0 2m
$ oc get pods
NOMBRE LISTO ESTADO REINICIOS EDAD
details-v1-1464079269-wxfl5 0/2 PodInitializing 0 3m
productpage-v1-3915871613-p2cp6 0/2 PodInitializing 0 3m
ratings-v1-327106889-rvqpv 0/2 PodInitializing 0 3m
reviews-v1-3806695627-2xkg6 0/2 PodInitializing 0 3m
reviews-v2-3096629009-2cfht 0/2 PodInitializing 0 3m
reviews-v3-1994447391-ws74d 0/2 PodInitializing 0 3m
$ oc get pods
NOMBRE LISTO ESTADO REINICIOS EDAD
details-v1-1464079269-wxfl5 2/2 Corriendo 0 7m
productpage-v1-3915871613-p2cp6 2/2 Corriendo 0 7m
ratings-v1-327106889-rvqpv 2/2 Corriendo 0 7m
reviews-v1-3806695627-2xkg6 2/2 Corriendo 0 7m
reviews-v2-3096629009-2cfht 2/2 Corriendo 0 7m
reviews-v3-1994447391-ws74d 2/2 Corriendo 0 7m
Finalmente, verás que Istio y la App BookInfo están corriendo en tu Clúster de OpenShift. Los estados Init:0/2
, Init:1/2
y PodInitializing
significan que la App BookInfo se está inicializando/comenzando y no está lista para usarse.
Todas las imágenes a continuación fueron capturadas de la App Weave Scope. Es una herramienta para gestionar, monitorear y visualizar tu Clúster de OpenShift. Si deseas instalarla, puedes usar la Rol de Ansible Weave Scope que he creado para ti (https://github.com/chilcano/ansible-role-weave-scope).
- Explorando todos los componentes de Istio (seleccionando el espacio de nombres
istio-system
).
- Explorando la App BookInfo desplegada en OpenShift (seleccionando el espacio de nombres
bookinfo
).
- Explorando en profundidad la App BookInfo.
- Usando la App Web de BookInfo y realizando llamadas a las APIs de BookInfo.
- Los complementos de Istio: Trazado con Zipkin.
- Los complementos de Istio: Explorando métricas con Grafana.
- Los complementos de Istio: Viendo los flujos con ServiceGraph.
Licencia
MIT / BSD
Información del Autor
Esta rol fue creada en 2017 por Roger Carhuatocto, autor del Blog HolisticSecurity.io.
An Ansible Role that installs and configures Istio (https://istio.io) on an OpenShift cluster running locally that has been installed by using Minishift (https://www.openshift.org/minishift).
ansible-galaxy install chilcano.istio