🔨

大きな破壊的変更を含むcontroller-runtimeのリリースなど: Neco Weekly (2023-05-26号)

2023/05/29に公開

Neco Weekly (2023-05-26号)

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

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

👀 Notable Articles

Kubernetes 1.27: In-place Resource Resize for Kubernetes Pods (alpha)

https://kubernetes.io/blog/2023/05/12/in-place-pod-resize-alpha/

Kubernetes 1.27の注目機能であるIn-place Resource Resizeの解説記事です。
ユースケースとして、初期化時にCPUが多く必要となるJavaアプリケーションに対して一時的にCPUを多く割り当てる例が紹介されていました。

Return dynamic RetryAfter header from APF

http://lwkd.info/2023/20230516

KubernetesにはAPI Priority and Fairnessという機能があり、サーバーが過負荷になった場合一部のリクエストを拒否して待たせることになります。
これまではその待ち時間は1秒で固定だったのですが、Kubernetes 1.28ではどれだけ待ってからリトライすればいいのかをヘッダに含めて返してくれるようになるそうです。

Unit Testing eBPF Programs

https://who.ldelossa.is/posts/unit-testing-ebpf/

BPF_PROG_RUNというコマンドを使って、ユーザースペースでeBPFのユニットテストを実行する方法について紹介しています。
eBPFはなかなか開発が面倒だったりするので、テストやデバッグの方法が今後確立されていくことに期待したいですね。

How to start a Go project in 2023

https://boyter.org/posts/how-to-start-go-project-2023/

Goで開発するときの情報源や役立つツールやテクニックを紹介している記事です。
重複コードを検出するためのツールや、リポジトリに秘密情報が含まれていないかチェックするためのツールなど、使ってみたいツールがいくつかありました。

ヤフーにおけるKubernetesを活用したPlatform Engineeringの取り組み

https://techblog.yahoo.co.jp/entry/2023052230423347/

Kubernetesクラスターを使いやすいプラットフォームにするために、我々もカスタムリソースを活用した拡張をすることが多いので、とても納得感の高い内容でした。

Connect によるスキーマ駆動開発のススメ - connect-go バックエンド編

https://buildersbox.corp-sansan.com/entry/2023/05/23/110000

Connectの良さや気になるところを紹介してくれていてとても参考になります。

2 Regrets of a 55 Years Old Retired Software Engineer

https://javascript.plainenglish.io/2-regrets-of-a-55-years-old-retired-software-engineer-4c4fafc1bd2b

55歳で引退したソフトウェアエンジニアが後悔している2つのことを紹介しています。

  • プレッシャーに耐えるとさらに大きなプレッシャーがやってくる。不要なプレッシャーは避けよう。
  • 最大のリスクはリスクを取らないこと。大きな成果を得るためにリスクを取ろう。

🛠️ Tools, Frameworks, Libraries

Controller Runtime v0.15

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

controller-runtime始まって以来最大の変更ということで、かなりの数のBreaking Changesがあります。
controller-runtimeを使い込んでいる人には大きな影響があるので注意しましょう。

また、pprofを有効にする機能や、ReconcileをリトライさせないTerminalErrorというすごくよさげな新機能も追加されています。

opentelemetry-go v1.16.0/v0.39.0 -- Stable Metric API

https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.16.0

opentelemetry-goのmetrics機能がstableになりました。
これを機にPrometheus Go client libraryから乗り換えてみるのもありかもしれませんね。

Parseable Kubernetes Operator

https://github.com/parseablehq/operator

Parseableというログエンジンをデプロイするためのオペレーター。
このログエンジンはバックエンドにApache ArrowとかParquetを使っていて、メモリやCPUの効率がとてもいいそうです。
既存のログエンジンのようなインデックスによるテキスト全文検索方式ではなく、JSON形式のログから自動的にスキーマを生成しSQLで検索するという仕組みになっているとのこと。

クラスタの規模が大きくなってくるとログのパフォーマンス問題に悩まされることも多いので、こういうツールも気になります。

zot: a production-ready vendor-neutral OCI image registry

https://github.com/project-zot/zot

シングルバイナリで動作するベンダーニュートラルなコンテナレジストリ実装です。

コンテナレジストリ実装としては、harbordistributionが利用されることが多いのですが、harborはPostgreSQLの導入がネックだったり、distributionはリリースの頻度が少ないことが気になったりするので、新しいコンテナレジストリ実装には期待したいところです。

Next-level human-readable data serialization format

https://github.com/pyrustic/jesth

YAML, TOML, JSONに変わるヒューマンリーダブルなデータフォーマット。

YAMLやJSONから移行するには、様々なプログラミング言語によるサポートやエコシステムを支える多数の周辺ツールの対応が必要になるので、なかなか難しそうですよね…。

📘 Books

セキュアで信頼性のあるシステム構築

https://www.oreilly.co.jp/books/9784814400256/

SRE視点でのセキュリティに関する書籍というのは珍しいのでとても気になります。

技術書典14

技術書典14で面白そうな本がたくさん出版されていました。

あとがき

Neco Weeklyでおもしろそうな書籍をよく紹介していますが、読み切れずにどんどん積み上がっています😅
なんとか消化せねば。

サイボウズ Necoチーム 😺

Discussion