CYBOZU SUMMER BLOG FESの紹介など: Neco Weekly (2024-08-28号)

2024/08/29に公開

Neco Weekly (2024-08-28号)

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

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

👀 Notable Articles

CYBOZU SUMMER BLOG FES 2024

https://cybozu.github.io/summer-blog-fes-2024/

サイボウズにて夏のブログフェスを開催しました。全104本の記事が投稿されており、我々Necoチームからも以下の4本の記事を投稿しました。
いずれも力作揃いですので、ぜひご覧ください。

Goで解放したメモリが少しずつ戻ってくる現象

https://knqyf263.hatenablog.com/entry/2024/08/07/043344

RedisやElasticsearchなどでは、HPTを無効化した方が良い

https://github.com/cybozu-go/neco/blob/8ddb55e6c0f006f4653c707d1b2946afe13126ae/ignitions/common/systemd/disable-transparent-hugepage.service

Introducing Docker Build Checks: Optimize Dockerfiles with Best Practices

https://www.docker.com/ja-jp/blog/introducing-docker-build-checks/

先週紹介したDocker Build Checksのより詳しい記事

障害への不安をぶっ壊す!カオスエンジニアリングを運用しシステムとチームの耐障害性を高める

https://techblog.zozo.com/entry/measurement-chaos-engineering

ZOZOのSREによるカオスエンジニアリングの取り組みを紹介した記事です。
非常に丁寧にカオスエンジニアリングの導入を進めていて、とても参考になる内容でした。
特に、KPIに自己評価を含めるやり方や、GameDayをスキップしないように規模を小さくして実施するなど、我々も取り入れたいなと思う施策がたくさんありました。

KEP 4420: Retry Generate Name

https://lwkd.info/2024/20240814

KubernetesではDeploymentやDaemonSetからPodを作るときとかに自動的にランダムな文字列をつけてくれるんだけど、リソースの数が多くなると衝突の可能性も高くなる。
このKEPは、生成した名前が衝突したときにリトライしてくれるというもの。

Necoでもノードの数が増えてきたので、DaemonSetの名前が衝突することがあるかも?
とはいえ500個つくったときの衝突確率は0.1%なので、そんなに心配するほどでもない。

Kubernetes v1.31: Accelerating Cluster Performance with Consistent Reads from Cache

https://kubernetes.io/blog/2024/08/15/consistent-read-from-cache-beta/

前回のNecoWeeklyでも紹介したConsistent Reads from Cacheの詳細な記事です。
規模の大きなクラスタであれば、API ServerやEtcdの負荷やレイテンシーも大きく改善するようなのでありがたいですね。

仕組み的にはetcdのwatch progressという機能を使って一貫性のある読み出しを実現しているようです。

Go 1.23リリース連載始まります&timeパッケージ

https://future-architect.github.io/articles/20240716a/

いつもの、Goのリリースノートを解説する連載です。
Go 1.23の目玉はやはりイテレータの導入ですね。

ちょっとJavaのsynchronizedをGoに移植しようとしたはずが、なぜか1万文字の作文ができた

https://www.m3tech.blog/entry/2024/08/16/185111

JavaのsynchronizedをGoで再現させようとして、再入可能なロックやメモリ可視性、メモリモデルの違いなどを調べたという記事です。
JavaとGoの言語設計思想の違いなども知ることができて面白かったです。

Linuxカーネルのコンテナ機能 - cgroup v2から使うメモリコントローラ(1)

https://gihyo.jp/article/2024/08/linux_containers-0056

cgroup v2のメモリコントローラについての解説記事です。
このコントローラの機能がどのようにKubernetesにマッピングされているのかは、以下の記事が参考になります。

https://kubernetes.io/blog/2023/05/05/qos-memory-resources/

Docker入門資料「入門 Docker」を5年ぶりにアップデートしました。

https://y-ohgi.blog/entry/2024/08/19/Docker入門資料「入門_Docker」を5年ぶりにアップデートしまし

まだ読んでない。

Cilium L2 Announcement を使ってみる

https://sreake.com/blog/learn-about-cilium-l2-announcement/

pixivの全文検索基盤とElasticsearchによるリプレイス

https://inside.pixiv.blog/2024/08/26/160000

サイボウズでも、以前SolrからElasticsearchへの移行を実施した(参考: 魔窟と化した全文検索サーバーとふっかつのじゅもん)ので、共感できる内容でした。

レビュー依頼の優先度について考えていたら、レビュー依頼をスコアリングしてソートするツールができた

https://www.m3tech.blog/entry/m3-gitlab-todos-sort

メンションされてからの時間や、リポジトリのコミット数など、様々な要素を考慮してレビュー依頼の優先度をスコアリングしてくれるツールだそうです。
面白い取り組みですね。

🛠️ Tools, Frameworks, Libraries

controller-runtime v0.19.0

https://github.com/kubernetes-sigs/controller-runtime/releases/tag/v0.19.0

次のマイナーリリースであるcontroller-runtime v0.20.0では、admission.Defaulter/Validatorが削除されるため、admission.CustomDefaulter/CustomValidatorの利用が推奨されています。
なお、現在のKubebuilder v4.2.0では、Admission Webhookのコードを生成するとadmission.Defaulter/Validatorが使われているので注意しましょう。

crd-to-sample-yaml or cty ( city )

https://github.com/Skarlso/crd-to-sample-yaml

CRDからサンプルのYAMLを生成してくれるツールです。

logu

https://github.com/ynqa/logu

既存のログから、パターン分析してくれるツールです。
ログの収集ルールーを書くときや、ログの解析をするときに便利そうですね。

📘 Books

リスクから学ぶ Kubernetesコンテナセキュリティ コンテナ開発者がおさえておくべき基礎知識

https://www.amazon.co.jp/dp/4798182788

コンテナセキュリティをハンズオン形式で学べる本が9/19に発売されるようです。
これは楽しみですね。

@Hiroki__IT が目の前にやってきて私にIstioのこと教えてくれた。- Istio in Action の読書感想文

https://syu-m-5151.hatenablog.com/entry/2024/08/02/220440

Istio in Actionの概要をしっかりめに紹介してくれている記事です。

🤝 Events

Towards a World Without Dependency Consideration: All Resources Be Deleted Simply

https://sched.co/1egpW

「KubeDay Japan 2024」にて、Kubernetesで依存関係のあるリソースの誤削除を防止する機能についての発表がありました。
Kubernetesへの導入が検討されているKEPの紹介や、すでにCrossplaneで実装されている機能について紹介されていました。

リソースの誤削除に関しては我々のチームでもAdmission Webhookで防止する仕組みを自作したりはしているのですが、依存関係や削除順序を考慮するところまでは実現できていなかったので、とても参考になる内容でした。
Kubernetesに導入されることを期待しています。

GitHub Actions ステップアップ Tips 〜高速化・セキュリティ・設計〜

https://www.docswell.com/s/uta8a/KYDW9P-2024-08-22-github-actions-tips

「GitHub Actionsの最適化どうしてる? 開発者体験を向上させる運用術」というイベントで弊社の生産性向上チームが登壇しました。
GitHub Actionsの実行時間を可視化するツールやキャッシュの扱い方、セキュリティ向上に役立つツールの紹介などが紹介されており、とても参考になる発表でした。

サイボウズ Necoチーム 😺

Discussion