chilcano.istio

Rôle Ansible : istio

Un rôle Ansible qui déploie Istio (https://istio.io) dans un cluster OpenShift fonctionnant localement, généralement créé en utilisant Minishift (https://www.openshift.org/minishift). Ce rôle effectue les tâches suivantes :

  • Vérifie si OpenShift fonctionne localement.
  • Télécharge et installe la version spécifiée ou la dernière version d'Istio.
  • Utilise le dernier binaire oc depuis ~/.minishift/cache/oc/<VERSION>/<OS>/ et istioctl depuis le binaire Istio téléchargé.

Prérequis

  • Ansible 2.3+
  • Avant de lancer le rôle, supprimez toutes les variables d'environnement DOCKER* de votre session terminal.
  • Un accès sudo sur votre hôte est requis pour installer istioctl (optionnel).
  • OpenShift doit être en cours d'exécution localement. Consultez https://galaxy.ansible.com/chilcano/minishift pour démarrer OpenShift dans une VM.

Observations

Le rôle Ansible Istio a été testé avec :

  • minishift v1.11.0+4459917
  • kubernetes 3.7
  • istio 0.2.7
  • VirtualBox 5.1.30
  • macOS High Sierra, version 10.13.2 (17C88)

Variables de rôle par défaut

Les variables par défaut se trouvent dans defaults/main.yml.

Exemple de Playbook

Voir le fichier sample-1-istio.yml pour un exemple.

$ cat sample-1-istio.yml
---
- name: Installer Istio.
  hosts: Pisc0
  connection: local
  gather_facts: yes
  vars:
    vm: openshift0

  roles:
    - role: chilcano.istio
      istio:
        action_to_trigger: clean  # [ déployer | nettoyer ]
        action:
          deploy:
            istioctl: true    # istioctl
            core: true        # composants principaux
            addons: true      # prometheus, grafana, zipkin, servicegraph
            sample_apps: true # bookinfo
        minishift:
          profile: "{{ vm }}"
        openshift:
          project: istio-system    # par défaut
          hostname: "{{ vm }}"
          admin_usr: "system:admin"
          admin_pwd: anypassword
          istio_usr: developer
          istio_pwd: anypassword
        repo:
          #release_tag_name: ""   # dernier
          release_tag_name: "0.2.7"
          #release_tag_name: "0.2.6"

Utilisation du Rôle Ansible

Installez le rôle :

$ sudo ansible-galaxy install chilcano.istio

Copiez le playbook depuis votre chemin de rôles vers le répertoire de travail actuel :

$ cp ${ANSIBLE_ROLES_PATH}/chilcano.istio/sample-1-istio.yml .

Créez un fichier inventory

$ echo $(hostname) > ./inventory

Exécutez le playbook :

$ ansible-playbook -i inventory --ask-become-pass sample-1-istio.yml

Une fois l'exécution du Playbook terminée, vérifiez si tous les Pods, Services, etc. ont été déployés et sont en cours d'exécution.

$ eval $(minishift oc-env)

$ oc project bookinfo

$ oc status
Dans le projet bookinfo sur le serveur https://192.168.99.100:8443

svc/details - 172.30.118.151:9080
  pod/details-v1-1464079269-wxfl5 fonctionne sous 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 fonctionne sous 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 fonctionne sous 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 fonctionne sous istio/examples-bookinfo-reviews-v1:0.2.3, docker.io/istio/proxy_debug:0.2.7
  pod/reviews-v2-3096629009-2cfht fonctionne sous istio/examples-bookinfo-reviews-v2:0.2.3, docker.io/istio/proxy_debug:0.2.7
  pod/reviews-v3-1994447391-ws74d fonctionne sous istio/examples-bookinfo-reviews-v3:0.2.3, docker.io/istio/proxy_debug:0.2.7

Visualisez les détails avec 'oc describe <resource>/<name>' ou listez tout avec 'oc get all'.

$ oc get pods
NOM                              PRÊT     ÉTAT     RESTARTS   ÂGE
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
NOM                              PRÊT     ÉTAT     RESTARTS   ÂGE
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
NOM                              PRÊT     ÉTAT            RESTARTS   ÂGE
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
NOM                              PRÊT     ÉTAT    RESTARTS   ÂGE
details-v1-1464079269-wxfl5       2/2       En cours d'exécution   0          7m
productpage-v1-3915871613-p2cp6   2/2       En cours d'exécution   0          7m
ratings-v1-327106889-rvqpv        2/2       En cours d'exécution   0          7m
reviews-v1-3806695627-2xkg6       2/2       En cours d'exécution   0          7m
reviews-v2-3096629009-2cfht       2/2       En cours d'exécution   0          7m
reviews-v3-1994447391-ws74d       2/2       En cours d'exécution   0          7m

Enfin, vous verrez Istio et l'application BookInfo en cours d'exécution dans votre cluster OpenShift. Les statuts Init:0/2, Init:1/2 et PodInitializing signifient que l'application BookInfo est en cours d'initialisation/démarrage et n'est pas prête à être utilisée. Toutes les images ci-dessous ont été capturées à partir de l'application Weave Scope. C'est un outil pour gérer, surveiller et visualiser votre cluster OpenShift. Si vous souhaitez l'installer, vous pouvez utiliser le rôle Ansible Weave Scope que j'ai créé pour vous (https://github.com/chilcano/ansible-role-weave-scope).

  • Explorer tous les composants Istio (sélectionner l'espace de noms istio-system).

Sélection de l'espace de noms istio-system

  • Explorer l'application BookInfo déployée sur OpenShift (sélectionner l'espace de noms bookinfo).

Sélection de l'espace de noms bookinfo

  • Explorer en profondeur l'application BookInfo.

Exploration en profondeur de l'API Mesh

  • Utiliser l'application Web BookInfo et faire des appels aux API BookInfo.

Utilisation de l'application BookInfo déployée sur OpenShift

  • Les addons Istio : Tracing avec Zipkin.

Tracing avec Zipkin

  • Les addons Istio : Explorer les métriques avec Grafana.

Explorer les métriques avec Grafana

  • Les addons Istio : Visualiser les flux avec ServiceGraph.

Visualiser les flux avec ServiceGraph

Licence

MIT / BSD

Informations sur l'Auteur

Ce rôle a été créé en 2017 par Roger Carhuatocto, auteur du blog HolisticSecurity.io.

À propos du projet

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

Installer
ansible-galaxy install chilcano.istio
Licence
Unknown
Téléchargements
98
Propriétaire
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.