コンテンツにスキップ

Service Mesh マイクロサービスアーキテクチャ:開発からカナリアリリースまでの全プロセスにおけるベストプラクティス(中)


はじめに

前編では、Kubernetes 環境への DataKit のデプロイ、Istio 環境への Bookinfo プロジェクトのデプロイ、reviews マイクロサービス向け CICD パイプラインの設定、および 3 つのバージョンを使用した reviews のカナリアリリースについて説明しました。本編では、Kubernetes のオブザーバビリティと Istio のオブザーバビリティについて説明します。

1 Kubernetes のオブザーバビリティ

1.1 Docker モニタリングビュー

Kubernetes クラスターでは、Pod が最小のスケジューリング単位であり、1 つの Pod に 1 つ以上のコンテナを含めることができます。Guanceでは、Docker モニタリングビューを使用してコンテナを可観測化できます。
Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Docker モニタリングビューを選択します。

image

ダッシュボード名に Docker モニタリングビュー 1 と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。

image

モニタリングビューに移動し、ホスト名とコンテナ名を選択します。

image

1.2 Kubernetes モニタリングビュー

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Kubernetes モニタリングビューを選択します。

image

ダッシュボード名に Kubernetes モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。

image

モニタリングビューに移動し、クラスター名と名前空間を選択します。
『注意』クラスター名のドロップダウンリストは、前編で DataKit をデプロイした際に設定したものです。

image

image

1.3 ETCD モニタリングビュー

1.3.1 ETCD コレクターの有効化

Kubernetes クラスターでコレクターを有効にするには、ConfigMap を使用して設定を定義し、それを DataKit の該当ディレクトリにマウントする必要があります。etcd.conf の内容は以下の通りです。

apiVersion: v1
kind: ConfigMap
metadata:
  name: datakit-conf
  namespace: datakit
data:
    #### etcd
    etcd.conf: |-    
        [[inputs.prom]]
          ## ExporterのURLまたはファイルパス(ExporterのURLにはhttpまたはhttpsのプロトコルを付与すること)
          ## ファイルパスはOSによって異なります
          ## Windows 例: C:\\Users
          ## UNIX系 例: /usr/local/
          urls = ["https://172.16.0.229:2379/metrics"]

          ## コレクターエイリアス
          source = "etcd"

          ## メトリクスタイプのフィルタリング。指定可能な値: counter, gauge, histogram, summary
          # デフォルトではcounterとgaugeタイプのメトリクスのみを収集します
          # 空の場合はフィルタリングしません
          metric_types = ["counter", "gauge"]

          ## メトリクス名のフィルタリング
          # 正規表現をサポートし、複数設定可能(いずれかに一致すればOK)
          # 空の場合はフィルタリングしません
          metric_name_filter = ["etcd_server_proposals","etcd_server_leader","etcd_server_has","etcd_network_client"]

          ## メジャーメント名のプレフィックス
          # 設定すると、メジャーメント名にプレフィックスが追加されます
          measurement_prefix = ""

          ## メジャーメント名
          # デフォルトでは、メトリクス名をアンダースコア「_」で分割し、最初のフィールドをメジャーメント名、残りのフィールドを現在のメトリクス名として扱います
          # measurement_nameを設定した場合、メトリクス名の分割は行われません
          # 最終的なメジャーメント名にはmeasurement_prefixプレフィックスが付加されます
          # measurement_name = "prom"

          ## 収集間隔 "ns", "us" (または "µs"), "ms", "s", "m", "h"
          interval = "60s"

          ## タグのフィルタリング。複数のタグを設定可能
          # 一致するタグは無視されます
          # tags_ignore = ["xxxx"]

          ## TLS 設定
          tls_open = true
          #tls_ca = "/etc/kubernetes/pki/etcd/ca.crt"
          tls_cert = "/etc/kubernetes/pki/etcd/peer.crt"
          tls_key = "/etc/kubernetes/pki/etcd/peer.key"

          ## カスタムメジャーメント名
          # プレフィックスprefixを含むメトリクスを1つのメジャーメントにまとめることができます
          # カスタムメジャーメント名の設定はmeasurement_name設定項目より優先されます
          [[inputs.prom.measurements]]
            prefix = "etcd_"
            name = "etcd"

          ## カスタム認証方式。現在はBearer Tokenのみサポート
          # [inputs.prom.auth]
          # type = "bearer_token"
          # token = "xxxxxxxx"
          # token_file = "/tmp/token"

          ## カスタムタグ

『Rancher』にログインし、クラスター参照タブで『k8s-solution-cluster』クラスターを選択し、『その他のリソース』→『Core』→『ConfigMaps』の順に移動し、datakit 空間を選択します。datakit.conf 行の『設定を編集』をクリックし、『追加』をクリックして etcd.conf 設定を追加した後、『保存』をクリックします。

image

image

『Rancher』にログインし、クラスター参照タブで『k8s-solution-cluster』クラスターを選択し、『ワークロード』→『DaemonSets』の順に移動し、datakit ワークスペースを選択します。datakit 列の右側にある『設定を編集』をクリックします。

image

ストレージ画面に移動し、etcd.conf をマウントするディレクトリ /usr/local/datakit/conf.d/etcd/etcd.conf を追加し、『保存』をクリックします。

image

1.3.2 証明書ファイルのマウント

HTTPS を使用して etcd メトリクスを収集するには、Kubernetes クラスターの証明書が必要です。つまり、Kubeadm でデプロイされたクラスターの /etc/kubernetes/pki/etcd ディレクトリを、DataKit の /etc/kubernetes/pki/etcd ディレクトリにマウントする必要があります。

      volumes:
      - hostPath:
          path: /etc/kubernetes/pki/etcd
        name: dir-etcd
          volumeMounts:
          - mountPath: /etc/kubernetes/pki/etcd
          name: dir-etcd   

以下、Rancher を使用して設定を完了します。『Rancher』にログインし、クラスター参照タブで『k8s-solution-cluster』クラスターを選択し、『ワークロード』→『DaemonSets』の順に移動し、datakit ワークスペースを選択します。datakit 列の右側にある『YAML を編集』をクリックします。

image

図のように内容を追加し、保存をクリックします。

image

image

1.3.3 ETCD の可観測性の実現

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、ETCD モニタリングビューを選択します。

ダッシュボード名に ETCD モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。

image

モニタリングビューに移動し、クラスター名を選択します。

image

ETCD のその他の接続方法については、ETCD 統合ドキュメントを参照してください。

2 Istio のオブザーバビリティ

2.1 Istio Mesh モニタリングビュー

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Mesh モニタリングビューを選択します。

image

ダッシュボード名に Istio Mesh モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。

image

モニタリングビューに移動し、クラスター名を選択します。

image

image

2.2 Istio Control Plan モニタリングビュー

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Control Plane モニタリングビューを選択します。

image

モニタリングビューに移動し、クラスター名を選択します。

image

image

image

2.3 Istio Service モニタリングビュー

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Service モニタリングビューを選択します。

image

モニタリングビューに移動し、クラスター名を選択します。

image

image

2.4 Istio Workload モニタリングビュー

Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Workload モニタリングビューを選択します。

image

モニタリングビューに移動し、クラスター名を選択します。

image

image

image

フィードバック

このページは役に立ちましたか?