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
).
- Исследование приложения BookInfo, развернутого на OpenShift (выберите пространство имен
bookinfo
).
- Глубокое исследование приложения BookInfo.
- Использование веб-приложения BookInfo и вызов API BookInfo.
- Дополнения Istio: трассировка с помощью Zipkin.
- Дополнения Istio: исследование метрик с помощью Grafana.
- Дополнения Istio: просмотр потоков с помощью 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