CYBOZU SUMMER BLOG FESの紹介など: Neco Weekly (2024-08-28号)
Neco Weekly (2024-08-28号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第61回目の記事となります。
👀 Notable Articles
CYBOZU SUMMER BLOG FES 2024
サイボウズにて夏のブログフェスを開催しました。全104本の記事が投稿されており、我々Necoチームからも以下の4本の記事を投稿しました。
いずれも力作揃いですので、ぜひご覧ください。
- シャーディングによるArgo CDパフォーマンス改善
- Necoのサーバー再起動の仕組みの改善
- Kubernetes環境でパケットがドロップされる問題を解決した話
- Cilium 運用で遭遇した問題とその対応
Goで解放したメモリが少しずつ戻ってくる現象
RedisやElasticsearchなどでは、HPTを無効化した方が良い
Introducing Docker Build Checks: Optimize Dockerfiles with Best Practices
先週紹介したDocker Build Checksのより詳しい記事
障害への不安をぶっ壊す!カオスエンジニアリングを運用しシステムとチームの耐障害性を高める
ZOZOのSREによるカオスエンジニアリングの取り組みを紹介した記事です。
非常に丁寧にカオスエンジニアリングの導入を進めていて、とても参考になる内容でした。
特に、KPIに自己評価を含めるやり方や、GameDayをスキップしないように規模を小さくして実施するなど、我々も取り入れたいなと思う施策がたくさんありました。
KEP 4420: Retry Generate Name
KubernetesではDeploymentやDaemonSetからPodを作るときとかに自動的にランダムな文字列をつけてくれるんだけど、リソースの数が多くなると衝突の可能性も高くなる。
このKEPは、生成した名前が衝突したときにリトライしてくれるというもの。
Necoでもノードの数が増えてきたので、DaemonSetの名前が衝突することがあるかも?
とはいえ500個つくったときの衝突確率は0.1%なので、そんなに心配するほどでもない。
Kubernetes v1.31: Accelerating Cluster Performance with Consistent Reads from Cache
前回のNecoWeeklyでも紹介したConsistent Reads from Cacheの詳細な記事です。
規模の大きなクラスタであれば、API ServerやEtcdの負荷やレイテンシーも大きく改善するようなのでありがたいですね。
仕組み的にはetcdのwatch progressという機能を使って一貫性のある読み出しを実現しているようです。
Go 1.23リリース連載始まります&timeパッケージ
いつもの、Goのリリースノートを解説する連載です。
Go 1.23の目玉はやはりイテレータの導入ですね。
ちょっとJavaのsynchronizedをGoに移植しようとしたはずが、なぜか1万文字の作文ができた
JavaのsynchronizedをGoで再現させようとして、再入可能なロックやメモリ可視性、メモリモデルの違いなどを調べたという記事です。
JavaとGoの言語設計思想の違いなども知ることができて面白かったです。
Linuxカーネルのコンテナ機能 - cgroup v2から使うメモリコントローラ(1)
cgroup v2のメモリコントローラについての解説記事です。
このコントローラの機能がどのようにKubernetesにマッピングされているのかは、以下の記事が参考になります。
Docker入門資料「入門 Docker」を5年ぶりにアップデートしました。
まだ読んでない。
Cilium L2 Announcement を使ってみる
pixivの全文検索基盤とElasticsearchによるリプレイス
サイボウズでも、以前SolrからElasticsearchへの移行を実施した(参考: 魔窟と化した全文検索サーバーとふっかつのじゅもん)ので、共感できる内容でした。
レビュー依頼の優先度について考えていたら、レビュー依頼をスコアリングしてソートするツールができた
メンションされてからの時間や、リポジトリのコミット数など、様々な要素を考慮してレビュー依頼の優先度をスコアリングしてくれるツールだそうです。
面白い取り組みですね。
🛠️ Tools, Frameworks, Libraries
controller-runtime 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 )
CRDからサンプルのYAMLを生成してくれるツールです。
logu
既存のログから、パターン分析してくれるツールです。
ログの収集ルールーを書くときや、ログの解析をするときに便利そうですね。
📘 Books
リスクから学ぶ Kubernetesコンテナセキュリティ コンテナ開発者がおさえておくべき基礎知識
コンテナセキュリティをハンズオン形式で学べる本が9/19に発売されるようです。
これは楽しみですね。
@Hiroki__IT が目の前にやってきて私にIstioのこと教えてくれた。- Istio in Action の読書感想文
Istio in Actionの概要をしっかりめに紹介してくれている記事です。
🤝 Events
Towards a World Without Dependency Consideration: All Resources Be Deleted Simply
「KubeDay Japan 2024」にて、Kubernetesで依存関係のあるリソースの誤削除を防止する機能についての発表がありました。
Kubernetesへの導入が検討されているKEPの紹介や、すでにCrossplaneで実装されている機能について紹介されていました。
リソースの誤削除に関しては我々のチームでもAdmission Webhookで防止する仕組みを自作したりはしているのですが、依存関係や削除順序を考慮するところまでは実現できていなかったので、とても参考になる内容でした。
Kubernetesに導入されることを期待しています。
GitHub Actions ステップアップ Tips 〜高速化・セキュリティ・設計〜
「GitHub Actionsの最適化どうしてる? 開発者体験を向上させる運用術」というイベントで弊社の生産性向上チームが登壇しました。
GitHub Actionsの実行時間を可視化するツールやキャッシュの扱い方、セキュリティ向上に役立つツールの紹介などが紹介されており、とても参考になる発表でした。
Discussion