chilcano.istio
Ansible Role: istio
このAnsibleロールは、ローカルで動作しているOpenShiftクラスターにIstio(https://istio.io)をデプロイします。通常、Minishift(https://www.openshift.org/minishift)を使用して作成されます。このロールは以下のタスクを実行します:
- ローカルでOpenShiftが動作しているか確認します。
- 指定されたバージョンまたは最新のIstioをダウンロードし、インストールします。
~/.minishift/cache/oc/<VERSION>/<OS>/
から最新のoc
バイナリと、ダウンロードしたIstioバイナリのistioctl
を使用します。
前提条件
- Ansible 2.3以上
- ロールを実行する前に、ターミナルセッションのDOCKER*環境変数をクリアしてください。
istioctl
のインストールにはホストでのsudo
アクセスが必要です(オプション)。- ローカルでOpenShiftが動作していること。VMでOpenShiftを実行するには、
https://galaxy.ansible.com/chilcano/minishift
を参照してください。
観察事項
Istio Ansibleロールは以下でテストされています:
- 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, graphana, 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
プレイブックの実行が完了したら、すべてのPod、サービスなどがデプロイされて実行されているか確認します。
$ 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 を実行しています。
svc/productpage - 172.30.163.171:9080
pod/productpage-v1-3915871613-p2cp6 は istio/examples-bookinfo-productpage-v1:0.2.3 を実行しています。
svc/ratings - 172.30.13.63:9080
pod/ratings-v1-327106889-rvqpv は istio/examples-bookinfo-ratings-v1:0.2.3 を実行しています。
svc/reviews - 172.30.233.119:9080
pod/reviews-v1-3806695627-2xkg6 は istio/examples-bookinfo-reviews-v1:0.2.3 を実行しています。
pod/reviews-v2-3096629009-2cfht は istio/examples-bookinfo-reviews-v2:0.2.3 を実行しています。
pod/reviews-v3-1994447391-ws74d は istio/examples-bookinfo-reviews-v3:0.2.3 を実行しています。
詳細を確認するには 'oc describe <resource>/<name>' を使用するか、すべてをリストするには 'oc get all' を使用します。
$ oc get pods
NAME READY STATUS RESTARTS AGE
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
NAME READY STATUS RESTARTS AGE
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
NAME READY STATUS RESTARTS AGE
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
NAME READY STATUS RESTARTS AGE
details-v1-1464079269-wxfl5 2/2 Running 0 7m
productpage-v1-3915871613-p2cp6 2/2 Running 0 7m
ratings-v1-327106889-rvqpv 2/2 Running 0 7m
reviews-v1-3806695627-2xkg6 2/2 Running 0 7m
reviews-v2-3096629009-2cfht 2/2 Running 0 7m
reviews-v3-1994447391-ws74d 2/2 Running 0 7m
最終的に、OpenShiftクラスターでIstioとBookInfoアプリが稼働しているのが確認できます。Init:0/2
、Init:1/2
やPodInitializing
は、BookInfoアプリが初期化/起動中であり、まだ使用できないことを意味します。
以下の画像はすべてWeave Scopeアプリからキャプチャされたものです。Weave ScopeはOpenShiftクラスターを管理、監視、視覚化するためのツールです。インストールしたい場合は、私が作成したWeave Scope Ansibleロール(https://github.com/chilcano/ansible-role-weave-scope)を使うことができます。
- Istioのすべてのコンポーネントを探索します(
istio-system
ネームスペースを選択)。
- OpenShiftにデプロイされたBookInfoアプリを探索します(
bookinfo
ネームスペースを選択)。
- BookInfoアプリを詳細に探索します。
- BookInfoウェブアプリを使用し、BookInfo APIに呼び出しを行います。
- Istio追加機能:Zipkinを使ったトレース。
- Istio追加機能:Grafanaを使ったメトリクスの探索。
- Istio追加機能:ServiceGraphを使ったフローの表示。
ライセンス
MIT / BSD
作成者情報
このロールは2017年にRoger Carhuatoctoによって作成され、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