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/2Init:1/2PodInitializingは、BookInfoアプリが初期化/起動中であり、まだ使用できないことを意味します。 以下の画像はすべてWeave Scopeアプリからキャプチャされたものです。Weave ScopeはOpenShiftクラスターを管理、監視、視覚化するためのツールです。インストールしたい場合は、私が作成したWeave Scope Ansibleロール(https://github.com/chilcano/ansible-role-weave-scope)を使うことができます。

  • Istioのすべてのコンポーネントを探索します(istio-systemネームスペースを選択)。

istio-systemネームスペースの選択

  • OpenShiftにデプロイされたBookInfoアプリを探索します(bookinfoネームスペースを選択)。

bookinfoネームスペースの選択

  • BookInfoアプリを詳細に探索します。

APIメッシュの詳細探索

  • BookInfoウェブアプリを使用し、BookInfo APIに呼び出しを行います。

OpenShiftにデプロイされたBookInfoアプリの使用

  • Istio追加機能:Zipkinを使ったトレース。

Zipkinを使ったトレース

  • Istio追加機能:Grafanaを使ったメトリクスの探索。

Grafanaを使ったメトリクスの探索

  • Istio追加機能:ServiceGraphを使ったフローの表示。

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
ライセンス
Unknown
ダウンロード
98
所有者
Crypto, PKI, DevSecOps, Cloud & Cyber Security, SOA, API & Service Mesh.