istio

Ansible Роль: istio

Ansible роль, которая разворачивает Istio (https://istio.io) в локальном кластере OpenShift, обычно созданном с помощью Minishift (https://www.openshift.org/minishift). Эта роль выполняет следующие задачи:

  • Проверяет, запущен ли OpenShift локально.
  • Скачивает и устанавливает указанную или последнюю версию Istio.
  • Использует последнюю бинарную версию oc из ~/.minishift/cache/oc/<VERSION>/<OS>/ и istioctl из загруженной бинарной версии Istio.

Предварительные требования

  • Ansible 2.3+
  • Перед запуском роли очистите вашу терминальную сессию от любых переменных среды DOCKER*.
  • Требуется доступ sudo на вашем хосте для установки istioctl (необязательно).
  • OpenShift должен быть запущен локально. Посмотрите https://galaxy.ansible.com/chilcano/minishift, чтобы запустить OpenShift в ВМ.

Замечания

Ansible роль Istio была протестирована с:

  • minishift v1.11.0+4459917
  • kubernetes 3.7
  • istio 0.2.7
  • VirtualBox 5.1.30
  • macOS High Sierra, версия 10.13.2 (17C88)

Переменные по умолчанию

Переменные по умолчанию находятся в defaults/main.yml.

Пример Плейбука

Смотрите файл sample-1-istio.yml для примера.

$ cat sample-1-istio.yml
---
- name: Установить 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        # основные компоненты
            addons: true      # prometheus, grafana, zipkin, servicegraph
            sample_apps: true # bookinfo
        minishift:
          profile: "{{ vm }}"
        openshift:
          project: istio-system    # по умолчанию
          hostname: "{{ vm }}"
          admin_usr: "system:admin"
          admin_pwd: anypassword
          istio_usr: developer
          istio_pwd: anypassword
        repo:
          #release_tag_name: ""   # последняя версия
          release_tag_name: "0.2.7"
          #release_tag_name: "0.2.6"

Использование Ansible Роли

Установите роль:

$ sudo ansible-galaxy install chilcano.istio

Скопируйте плейбук из вашей папки ролей в текущую рабочую директорию:

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

Создайте файл inventory:

$ echo $(hostname) > ./inventory

Запустите плейбук:

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

Когда выполнение плейбука закончится, проверьте, развернуты ли все Pods, Сервисы и т.д., и работают ли они.

$ eval $(minishift oc-env)

$ oc project bookinfo

$ oc status
В проекте bookinfo на сервере https://192.168.99.100:8443

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

Посмотреть детали с помощью 'oc describe <resource>/<name>' или список всего с помощью 'oc get all'.

$ oc get pods
ИМЯ                              ГОТОВО     СТАТУС     ПЕРЕЗАПУСКИ   ВРЕМЯ
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-v1-3806695627-2cfht       0/2       Init:0/2   0          1m
reviews-v1-1994447391-ws74d       0/2       Init:0/2   0          1m

$ oc get pods
ИМЯ                              ГОТОВО     СТАТУС     ПЕРЕЗАПУСКИ   ВРЕМЯ
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-v1-3806695627-2cfht       0/2       Init:1/2   0          2m
reviews-v1-1994447391-ws74d       0/2       Init:1/2   0          2m

$ oc get pods
ИМЯ                              ГОТОВО     СТАТУС            ПЕРЕЗАПУСКИ   ВРЕМЯ
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-v1-3806695627-2cfht       0/2       PodInitializing   0          3m
reviews-v1-1994447391-ws74d       0/2       PodInitializing   0          3m

$ oc get pods
ИМЯ                              ГОТОВО     СТАТУС    ПЕРЕЗАПУСКИ   ВРЕМЯ
details-v1-1464079269-wxfl5       2/2       Работает   0          7m
productpage-v1-3915871613-p2cp6   2/2       Работает   0          7m
ratings-v1-327106889-rvqpv        2/2       Работает   0          7m
reviews-v1-3806695627-2xkg6       2/2       Работает   0          7m
reviews-v2-3096629009-2cfht       2/2       Работает   0          7m
reviews-v3-1994447391-ws74d       2/2       Работает   0          7m

Наконец, вы увидите, что Istio и приложение BookInfo работают в вашем кластере OpenShift. Статусы Init:0/2, Init:1/2 и PodInitializing означают, что приложение BookInfo инициализируется/запускается и еще не готово к использованию. Все изображения ниже были захвачены с помощью приложения Weave Scope. Это инструмент для управления, мониторинга и визуализации вашего кластера OpenShift. Если вы хотите установить его, вы можете использовать Ansible роль Weave Scope, которую я создал для вас (https://github.com/chilcano/ansible-role-weave-scope).

  • Исследование всех компонентов Istio (выберите пространство имен istio-system).

Выбор пространства имен istio-system

  • Исследование приложения BookInfo, развернутого на OpenShift (выберите пространство имен bookinfo).

Выбор пространства имен bookinfo

  • Глубокое исследование приложения BookInfo.

Глубокое исследование API Mesh

  • Использование веб-приложения BookInfo и вызов API BookInfo.

Использование приложения BookInfo, развернутого на OpenShift

  • Дополнения Istio: трассировка с помощью Zipkin.

Трассировка с помощью Zipkin

  • Дополнения Istio: исследование метрик с помощью Grafana.

Исследование метрик с помощью Grafana

  • Дополнения Istio: просмотр потоков с помощью ServiceGraph.

Просмотр потоков с помощью ServiceGraph

Лицензия

MIT / BSD

Информация об авторе

Эта роль была создана в 2017 году Роджером Каруато́кто, автором блога 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/ansible-role-istio
Лицензия
Unknown
Загрузки
85
Владелец
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.