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>/
etistioctl
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 installeristioctl
(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
).
- Explorer l'application BookInfo déployée sur OpenShift (sélectionner l'espace de noms
bookinfo
).
- Explorer en profondeur l'application BookInfo.
- Utiliser l'application Web BookInfo et faire des appels aux API BookInfo.
- Les addons Istio : Tracing avec Zipkin.
- Les addons Istio : Explorer les métriques avec Grafana.
- Les addons Istio : 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.
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