k8s周辺技術研究
Telepresence
- 公式ドキュメント(https://www.telepresence.io/)
- k8sのサービスの参照先をローカルのコンテナに向けることができる(?)らしい。それによってデプロイやテストの手間を軽減できるツールとのこと
- 活用事例(https://event.cloudnativedays.jp/cndt2020/talks/17)
クラウド上のネットワークをインターセプトして、ローカルに向けるって書いてあったので、本番環境への影響とか諸々調べる必要あり。
ドキュメントにデモがあったので、それを触った後に自分のAKS環境でテストをする。
上記の活用事例ではIstioを使っているそうなので、envoyから出た通信をインターセプトしている?
Garden
- 公式ドキュメント(https://garden.io/)
- k8sのテストのワークフロー/パイプラインを代替できる(?)らしい、E2Eとかもこれで可能みたい。かなり大規模にならないと恩恵が少ないかもしれないが、ビルド→デプロイ→テストまでを一括して担えるっぽい
- 触ってみないとわからないが、ローカルのk8s,dockerが必要なくなるとドキュメントにでかでかと書いてあったので簡単に展開してお試しできるのが売りっぽいが正直触ってみないとわからん
- AKSの本番環境に直接デプロイして名前空間で分離した環境でテストを実行できるみたいなことが書いてあったのでめちゃ有用っぽい。書いてある感じだと開発環境を作成してE2Eするよりもコスト面でもメリットがありそう。
ハンズオン
最初はEKSとGKEのみ対応っぽかったけど、AKSのガイドもあったのでどこかのタイミングで対応したっぽい。
まだ正式リリースしていなさそうなので、本番環境で使うかどうかは微妙。テストツールなので問題ないとは思うけれども
Helm
- 公式Doc(https://helm.sh/docs/)
- Kubernetesのパッケージマネージャーと言えばHelmみたいなとこある。
- 普段はKustomizeを使っていて、マニフェスト管理ツールとしては使ったことがなかったので一回ちゃんと使いたい。
- ざっと調べた感じ、テンプレートとなるYAMLファイルを作成してポッドごとにイメージ名やらリソース制限やらをねじ込んでいくっぽい。
- CI/CDでyamlのコードを書き換えたいときはkustomizeだと、パイプラインの環境変数をsedコマンドで強引にねじ込んでいたけど、これならスマートな感じで渡せそう。
- ただ、YAML生成はJsonnetを使って一括で自動生成しているので、共存できるかどうかは試してみる必要がある。
Istio
公式ドキュメント(https://istio.io/latest/docs/)
サービスメッシュと言えばこれ。CNCF加入申請中らしいので、これからが楽しみ。
すでにあれこれ使っているが、PrometheusやJaegerの設定がほぼデモ準拠なので、問題しかない気がしている。(それは別でスクラップを立てて追記していく)
現状の課題として「クラスター外への通信のメトリクス取れていない問題」「Egressなんも設定していない問題」があるので、これを解決することと、ABテスト/フォールトインジェクションがistioだけでどこまで実装できるか試してみる。
Prometheus
公式ドキュメント(https://prometheus.io/docs/introduction/overview/)
みんな大好きPrometheus。k8s上のアラートやメトリクス収集といえばこれ。
基本的にistioやgrafanaと併用することになる気がするので、istiodからメトリクスを集めてgrafanaに公開するみたいなユースケースが多い気がする。もしくはslackに特定のメトリクスだけ通知するみたいなケースかな。
Istioでデフォルトで提供されているものしか利用したことがないので、スクラッチで設定してみる。
基本日本語の情報がないものは体当たりで検証しがちなので、どうにかする。
envoy-sidecar-helper
sidecarつけるとJobが終了しない問題を解決できるらしい。
詳細はこれから確認