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>/ y istioctl 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 instalar istioctl (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).

Seleccionando el espacio de nombres istio-system

  • Explorando la App BookInfo desplegada en OpenShift (seleccionando el espacio de nombres bookinfo).

Seleccionando el espacio de nombres bookinfo

  • Explorando en profundidad la App BookInfo.

Explorando en profundidad la API Mesh

  • Usando la App Web de BookInfo y realizando llamadas a las APIs de BookInfo.

Usando la App BookInfo desplegada en OpenShift

  • Los complementos de Istio: Trazado con Zipkin.

Trazado con Zipkin

  • Los complementos de Istio: Explorando métricas con Grafana.

Explorando métricas con Grafana

  • Los complementos de Istio: Viendo los flujos con ServiceGraph.

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.

Acerca del proyecto

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).

Instalar
ansible-galaxy install chilcano.istio
Licencia
Unknown
Descargas
98
Propietario
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.