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 モニタリングビューを選択します。
ダッシュボード名に Docker モニタリングビュー 1 と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。
モニタリングビューに移動し、ホスト名とコンテナ名を選択します。
1.2 Kubernetes モニタリングビュー¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Kubernetes モニタリングビューを選択します。
ダッシュボード名に Kubernetes モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。
モニタリングビューに移動し、クラスター名と名前空間を選択します。
『注意』クラスター名のドロップダウンリストは、前編で DataKit をデプロイした際に設定したものです。
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 設定を追加した後、『保存』をクリックします。
『Rancher』にログインし、クラスター参照タブで『k8s-solution-cluster』クラスターを選択し、『ワークロード』→『DaemonSets』の順に移動し、datakit ワークスペースを選択します。datakit 列の右側にある『設定を編集』をクリックします。
ストレージ画面に移動し、etcd.conf をマウントするディレクトリ /usr/local/datakit/conf.d/etcd/etcd.conf を追加し、『保存』をクリックします。
1.3.2 証明書ファイルのマウント¶
HTTPS を使用して etcd メトリクスを収集するには、Kubernetes クラスターの証明書が必要です。つまり、Kubeadm でデプロイされたクラスターの /etc/kubernetes/pki/etcd ディレクトリを、DataKit の /etc/kubernetes/pki/etcd ディレクトリにマウントする必要があります。
以下、Rancher を使用して設定を完了します。『Rancher』にログインし、クラスター参照タブで『k8s-solution-cluster』クラスターを選択し、『ワークロード』→『DaemonSets』の順に移動し、datakit ワークスペースを選択します。datakit 列の右側にある『YAML を編集』をクリックします。
図のように内容を追加し、保存をクリックします。
1.3.3 ETCD の可観測性の実現¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、ETCD モニタリングビューを選択します。
ダッシュボード名に ETCD モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。
モニタリングビューに移動し、クラスター名を選択します。
ETCD のその他の接続方法については、ETCD 統合ドキュメントを参照してください。
2 Istio のオブザーバビリティ¶
2.1 Istio Mesh モニタリングビュー¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Mesh モニタリングビューを選択します。
ダッシュボード名に Istio Mesh モニタリングビュー と入力します(名前はカスタマイズ可能です)。『確定』をクリックします。
モニタリングビューに移動し、クラスター名を選択します。
2.2 Istio Control Plan モニタリングビュー¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Control Plane モニタリングビューを選択します。
モニタリングビューに移動し、クラスター名を選択します。
2.3 Istio Service モニタリングビュー¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Service モニタリングビューを選択します。
モニタリングビューに移動し、クラスター名を選択します。
2.4 Istio Workload モニタリングビュー¶
『Guance』にログインし、『シナリオ』→『ダッシュボードを作成』をクリックして、Istio Workload モニタリングビューを選択します。
モニタリングビューに移動し、クラスター名を選択します。






























