🍎

Neco Weekly (2022-08-19号)

2022/08/22に公開

Neco Weekly (2022-08-19号)

サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。

今回は第4回目の記事となります。

✨ New Features

Argo CD: Introduces Server-Side Apply as sync option

https://github.com/argoproj/argo-cd/pull/9711

Argo CD 2.5 でマニフェストを適用する際に Server-Side Apply [1]方式が選べるようになります。

現在の Argo CD では、マニフェストを適用する際に Strategic Merge Patch 方式[2]が利用されています。
Strategic Merge Patch 方式では、前回適用したマニフェストを annotation に保持しています。
そのため、 annotation に保存可能な 256KiB を超えるサイズのマニフェストを適用できないという問題がありました。
CRD や Grafana のダッシュボード設定ファイルは 256KiB を超えることも多く、Argo CD でこれらのマニフェストを扱うためには工夫が必要でした。

Sever-Side Apply 方式であれば 256KiB の制限はなくなり、1MiB 程度のマニフェストでも扱えるようになります。
とても欲しかった機能なのでリリースが待ち遠しいです。

👀 Notable Articles

For the love of god, stop using CPU limits on Kubernetes

https://home.robusta.dev/blog/stop-using-cpu-limits/

Kubernetes で Pod には CPU Limits を指定するなという主張です。

CPU Limits を指定すると、ノード単位では CPU に空きがあってもスロットリングが発生しパフォーマンスを劣化させるケースがあります。
一方で、CPU Requests を指定していれば、cgroup の cpu.shares (cgroup v2 では cpu.weight) により、最低限の CPU 割り当ては保証されます。
そのため、CPU Limits は指定せず、 CPU Requests のみを指定しておくのがよいと主張しています。

とはいえ、CPU Limits を指定しないと Pod の QoS Class を指定できず、CPU の占有(CPU Pinning)もできなくなってしまうので、単純に CPU Limits の指定をやめるというわけにはいきませんね。

📘 Books

The BDD Books - Discovery

https://leanpub.com/bddbooks-discovery-jp

Neco チームでは、普段テストを書くときに Ginkgo という BDD(Behavior Driven Development) フレームワークを使っているのですが、そういえば BDD についてちゃんと理解していないなと思い、この本を手に取りました。

この本によると、BDD はテスト手法ではなく、開発側とビジネス側が協調するための開発スタイルであるとのことでした。
Ginkgo を使っているだけでは BDD をやってるとは言えないということですね。
とはいえ、ユースケースを発見し、それを定式化して、自動テストに落とし込むというスタイルは、普段我々がおこなっている開発スタイルとも近いものがあり、参考になる点もいくつかありました。

ちなみに、我々が Ginkgo を選んだのは Kubebuilder が採用していたからなのですが、Kubebuilder では以下のような理由で Ginkgo を採用したようです。

https://github.com/kubernetes-sigs/kubebuilder/pull/952#issuecomment-532894264

🛠️ Tools, Frameworks, Libraries

KUTTL

https://kuttl.dev

Kubernetes Operator をテストするためのツール。
入力となるマニフェスト、Kubernetes オブジェクトに対する操作、期待する結果をすべて YAML 形式で宣言的に書くことができるようです。

実際に使ってみないと使い勝手は分かりませんが、簡易的なテストを書きたい場合には便利なのかもしれません。

🤝 Events

CloudNative Security Conference 2022

Black Hat 2022

最近は様々な分野で eBPF が利用されはじめていますが、2022-08-05号で紹介したようにサービスメッシュのサイドカーレス方式に関する問題などもありましたし、どこでも利用できる万能の技術ではないんだなあという感想を持ちました。

あとがき

8月22日から、サイボウズサマーインターン2022 Kubernetes基盤コースが始まります。
このインターンの学生さん向けにGinkgo/Gomegaを利用したKubernetes Operatorのテスト手法について書きました。

https://zenn.dev/zoetro/books/testing-kubernetes-operator

学生さん向けとは言いつつも、面白いネタもいくつか紹介しているので、ぜひご覧ください。

脚注
  1. Server-Side Apply ↩︎

  2. Strategic Merge Patch ↩︎

サイボウズ Necoチーム 😺

Discussion