k8s 周りの調査
k8s 周りで必要になりそうなツールについてまとめていく
開発環境に必要そうなツール
k8s ローカル環境の docker コンテナのホットリロードを実現するツール
Google 謹製
k8s でもローカル環境では docker-compose を使用するものかと思っていたが違うらしい
docker-compose と似たような使い勝手にはなっていそう
CI / CD に組み込める
パッケージマネージャー
Chart でインストールするバージョンを管理する
自分の作成した Manifest を公開したい場合は helm を用いる
docker-compose を k8s 環境でも使用できるようにするというツール
docker-compose.yml を kompose が動かせるように変換する機能も乗っかっている
skaffold と競合する?
要調査
skaffold の CI / CD の機能の便利さにも依るが、ツールはなるべく少ないほうが良いのでとりあえずは skaffold のエコシステムに乗っかるのが良さげな感じがしている
ローカルからリモートのクラスタに対してリクエストを投げられるツール
開発環境のセットアップとしては telepresence をインストールするだけなので楽
マイクロサービス構築時にローカル環境において多数のコンテナを起動する必要が無さそうなのでとても楽そう
各開発者に Secret を共有する必要がないのでセキュア
prod / stg / dev それぞれの環境においての Manifest の差分を吸収してくれるツール
replicaSet の値や name prefix を与えることができる
Kubernetes 向けの jsonnet
kustomize と併用すると Manifest を効率よく記述することができる
Manifest の型や必須フィールドの有無などをチェックしてくれる静的解析ツール
PR の CI で使えそう
Pod 単位できめ細かい RBAC を行う場合に用いる
Fargate / EC2 では Node をデプロイするため、Node 単位では RBAC を管理することができるが Pod 単位では管理できないため kube2iam のようなツールを使用して Pod 単位で RBAC を管理する。
モニタリングに必要そうなツール
k8s のメトリクスを収集するツール
EKS を用いる場合は CloudWatch がデフォルトでメトリクスを収集してくれる?
要調査
AWS には managed の prometheus がある
基本的に managed だと VPC / Subnet みたいなネットワーク周りがうまく扱えないとかあって使いにくい印象
prometheus + grafana で k8s のメトリクスを可視化するのが鉄板?
ログ収集ツール
fluentbit を sidecar として走らせてクラスタのログを収集するのが良さそう
EKS Fargate の fluentbit と使い勝手は同じ感じ?
基本的にメトリクスのダッシュボードと同じところでモニタリングしたほうが良さそうなので、メトリクスの可視化で grafana を用いているのであればログの可視化も grafana を使用するのが良さそう
README には Loki: like Prometheus, but for logs. と記載がある
fargate で実行しておらず、firelens が使用できない場合に出番が回る?