この記事は、カスタムリソースyamlで宣言しているモニタリング定義を、GitOpsワークフローで継続デリバリーさせる方法を紹介します。
今回で使用する機能は下記の2つです。
- Rancher Monitoring(Prometheus Operator) v2機能
- Rancher Continuous Delivery機能
いずれもRancher v2.5にGAリリースした機能です。まず、最初は簡単に機能紹介します。
Rancher Monitoring(Prometheus Operator) v2機能
特徴
・Prometheus Operatorをベースとしたモニタリングのソリューション
・カスタムメトリックの収集、アラームルールなどは、CRs(カスタムリソース)により簡単に定義できる
・全てのモニタリング定義が、CRsのyamlで定義出来る為、GitOpsベースのワークフローを簡単に構築できる
詳細な機能紹介は、こちらの記事をご参照ください。
または、こちらのドキュメントをご参照ください。
Rancher Continuous Delivery機能
特徴
・Rancher FleetをベースとしたGitOpsのソリューション
・Gitリポジトリから複数のクラスタにアプリケーションと構成設定をデプロイ可能
・シングルクラスターだけではなく、マルチクラスターにも対応
・アプリケーションや構成設定は、Kubernetes YAML,Helm,Kustomizeというフォーマットを対応
詳細な機能紹介は、こちらのドキュメントをご参照ください。
モニタリングのIaCの構築
Rancher Monitoring v2のインストール
Rancher 2.5 から Rancher Monitoring v2 をインストールするのは簡単です。
・新しいダッシュボード画面の左上のメニューから、[Cluster Explorer] -> [Apps & Marketplace]にアクセスし、[Monitoring]をインストールするだけです。
・インストールが完了すると、ダッシュボード画面の左上のメニューから、[Cluster Explorer] -> [Monitoring]にアクセスし、モニタリングのダッシュボードを表示します。※ここからモニタリングの各コンポーネントUI画面にアクセスできます。
GitOpsワークフローの設定
Rancher Continuous Delivery機能は、インストールが不要です。クラスター構築時に、Rancherが自動にインストールしてくれます。
・検証用アプリケーションのnamespaceを作成:example
・ダッシュボード画面の左上のメニューから、[Cluster Explorer] -> [Continuous Delivery]にアクセスし、開く[Git Repos]の画面に、モニタリング設定yamlを格納するGitリポジトリを設定します。
※Gitリポジトリのディレクトリー構成は下記となります。
gitops/monitoring
├── alert-s2-prom-rule.yaml #Prometheus Rules定義CRs
├── alert-s3-prom-rule.yaml #Prometheus Rules定義CRs
└── prom-app-example
├── example-app-deployment.yaml #example-app(検証用アプリケーション)のデプロイメント
├── example-app-service.yaml #example-appのサービス
├── example-app-service-monitor.yaml #example-appのservice-monitor定義CRs
└── example-app-pod-monitor.yaml #example-appのpod-monitor定義CRs
上記のyaml設定ファイルのデプロイで、下記のアプリや、モニタリング設定がでデプロイされる想定です。
- アプリケーション:
デプロイメント:example-app
サービス:example-app - モニタリング:
PodMonitor:example-app-pod-monitor
ServiceMonitor:example-app-service-monitor
PrometheusRule:alert-1、alert-2、prometheus-example-rules
詳細なコードは、こちらのGithubリポジトリからご参照ください。
・Git Repos設定後に、自動にデプロイ作業が行われますので、しばらくすると、下記のような、リソースデプロイ完了ステータスの画面になります。
・モニタリングのダッシュボードから、[Prometheus Targets]画面開き、example-appは監視対象に設定されていることが確認できます。
・モニタリングのダッシュボードから、[Prometheus Graph]画面開き、example-appのメトリックが収集されていることが確認できます。
・モニタリングのダッシュボードから、[Prometheus Rules]画面開き、アラートルールは設定されていることが確認できます。
まとめ
Rancher 2.5の新しい機能の利用により、アプリケーションの継続デリバリーだけではなく、インフラの継続デリバリーも簡単に実現できます。