ログ収集・分析(Fluent Bit / AWS OpenSearch)
今回はログの収集と分析に焦点を当てます。 いつの時代もアプリケーションが出力するログは、障害解析やアクセス/証跡管理に欠かせません。 マイクロサービスのような分散アーキテクチャを採用した場合、1つのアプリケーションは複数のサービスで構成されることになります。 このため、管理対象ログファイルの数は以前と比較すると飛躍的に多くなり、ファイルレベルでなく、全体のログを一元管理するためのバックエンドサービスは不可欠と言えます...
記事を読むメトリクス収集・可視化 - OpenTelemetry / CloudWatch
前回はPrometheusとGrafanaを利用して、Kubernetesおよびアプリケーションに関するメトリクスの収集・可視化を行いました。 今回はOpenTelemetryとCloudWatchを使って同じことをしてみましょう。 OpenTelemetryとは? # OpenTelemetryは、メトリクス、トレース、ログ等のテレメトリー[1]情報のやりとりに関するインターフェースを規定する仕様です(現状ログはまだドラフトです)...
記事を読むメトリクス収集・可視化 - Prometheus / Grafana
今回のテーマはモニタリングです。 アプリケーションの運用が開始されると、ピーク時間帯や各種イベントに応じてシステム負荷は大きく変動します。 特に、マイクロサービスアーキテクチャでは、臨機応変なスケーラビリティや、無駄なのないリソース効率性とそれに応じたコスト最適化が求められます。 このような状況下では、各サービスレベルできめ細かい情報を収集・可視化することがより重要となります。 モニタリング編では、以下の項目に焦点を当て、それぞれハンズオン形式で実施してみたいと思います...
記事を読むKubernetesのPod Security(PSS/PSA)
Kubernetesのv1.21で、今までPodセキュリティを担っていたPodSecurityPolicy(PSP)が非推奨となりました[1]。このままいくとPSPはv1.25で削除される予定です。 Kubernetesコミュニティ(Auth Special Interest Group)では、現在これに代わるものとして新たにPod Security Standardsを規定し、これをもとにPodのスペックを検証するPod Security Admissionを開発しています...
記事を読むPodスケジューリング - NodeAffinity / TaintToleration
Kubernetesで作成したPodは、Node[1]が割り当てられ、コンテナランタイムを通して実行されます。 Nodeは、多数のVMでクラスタ構成され、データセンター障害に備えて物理的に分散して配置されることが一般的です。 また、コスト最適化やワークロード要件を満たすために、コア数やメモリ容量だけでなく、OS種類やCPU/GPU、SSD/HDD等様々なスペックを持っていることもあるでしょう...
記事を読むオートスケーリング - Horizontal Pod Autoscaler(HPA)
商用環境で実際にサービスが運用されると、時間帯やイベント等、様々な要因によってトラフィックが変動し、それに合わせてシステム負荷も増減します。 コンテナ以前の従来のシステムでは、あらかじめ最大のスループットを見積もり、それに合わせてサーバーのサイジングをすることが一般的でした。 ただ、これはほとんどのケースでオーバースペックとなり、費用対効果が良いとは言えない状況でした...
記事を読むServerless Framework v3新機能のStage Parameters紹介
2022/1/27にServerless Frameworkのメジャーアップデート(v3)がありました。 Serverless Framework V3 Is Live! CLIの改善以外にそれほど大きな変更はなさそうですが、v3でStage parametersという新たな機能が導入されました。 これをうまく活用することで、環境ごとに異なる設定を簡潔に記述できます。 今回はこのStage parametersを紹介したいと思います...
記事を読むKarpenterのオートスケールを試してみました
2021/11/29に、AWSはKarpenterというKubernetesのオートスケーラーをGAリリースしました。 Introducing Karpenter – An Open-Source High-Performance Kubernetes Cluster Autoscaler これは有料のサービスではなく、OSSとしての提供です。現在はAWSのみに対応していますが、構造上はそれ以外のクラウドプロバイダーでも使えるものになっています...
記事を読む継続的デリバリ - ArgoCD
前回は、GitOpsの産みの親であるWeaveworks社が開発したFluxを導入して、継続的デリバリを実現しました。 今回はもう1つのGitOpsツールとして人気を集めるArgoCDを導入します。 Flux同様に、ArgoCDもGitOpsを体現したツールですが、最も大きな違いとして、ArgoCDはリッチなWeb UIを組み込みで持っています[1]。 このUIにより、Gitとクラスタ環境の同期状況が視覚的に把握可能です...
記事を読む継続的デリバリ - Flux
アプリケーション開発編では、お手製のアプリをローカル環境やクラウド環境(AWS EKS)にデプロイしてきました。 しかし、ローカル環境はSkaffoldを使って自動化したものの、クラウド環境はkubectl applyを使って手動デプロイしました。 ここでは、GitOps[1]を体現する継続的デリバリツールとして人気のFluxを導入します。 最終的には、以下のような構成となります。 Fluxは、以下を行うコンポーネント群(GitOps Toolkit)です...
記事を読む