aqua CLI Version Manager 入門の紹介など: Neco Weekly (2023-10-20号)
Neco Weekly (2023-10-20号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第43回目の記事となります。
👀 Notable Articles
aqua CLI Version Manager 入門 / aqua update による Registry と Package のアップデート
aqua という CLI をバージョン管理するためのツールの日本語版ドキュメントが公開されました。
さらに aqua update
コマンドが導入され、 renovate 等を使わなくても管理しているツールのバージョンを更新できるようになりました。
この機能は待ち望んでいたので非常にうれしいです。
Runbookに何を書き、どのようにアラートを振り分けるか?
Runbook を書く際の指針やテンプレート、アラートの追加を促す仕組みやアラート追加のガイドラインなどが紹介されています。
kubeadm: Use etcd Learner to Join a Control Plane Node Safely
kubeadm が etcd の Learner mode に対応したそうです。
etcd 3.3 までは、クラスタに新しいメンバーを追加した際にデータを同期している間にもそのメンバーが投票権を持っているため、クラスタが利用可能になるまで時間がかかったりすることがありました。
etcd 3.4 で Learner mode が導入され、新しく追加されたメンバーは投票権を持たない Learner としてメンバーに追加できるようになり、etcd の可用性・耐障害性が向上しました。
Container Network Packet Drop in AKS
AKS で一部のパケットがドロップする問題が起きており、perf などを使って調査したところ、割り込み処理が特定の CPU に偏るようになっていたそうです。
これは irqbalance の不具合が原因だったとのこと。
Compile-time safety for enumerations in Go
typedef ではなくunexported な関数を伴うインタフェースを使って、Go 言語で列挙型を表現するアプローチです。
こういうテクニックを使わなくてすむように Go に列挙型が入ってほしいものです。
E2Eテストの運用を属人化しないための3つの取り組み
E2E テストの運用を属人化しないために
- 定期実行結果確認の持ち回り
- テスト失敗時の運用をドキュメント化
- E2Eテストのシナリオをスプレッドシートで管理
という3つの取り組みをおこなっているそうです。
長く開発しているソフトウェアの E2E テストは複雑になりがちなので、こういう取り組みは大事だと思います。
エンジニアのためのSRE論文への招待 - SRE NEXT 2023
未普及技術論文の中には面白いものがたくさん眠っているので、そういうのを見つけて読むといいよという話。
論文を読む際に便利なツールや、おすすめの国際会議の一覧などが紹介されています。
How continuous profiling improved code performance for a new Grafana Loki feature
Loki の新機能開発時に Pyroscope を使ってプロファイルを分析し、パフォーマンスが30%改善したという話。
OpenTelemetryのここ4年の流れ
OpenTelemetry における Metrics/Logs/Traces の各種言語での対応状況など、最近4年間の流れを紹介しているスライドです。
今後 Go のログ実装がどうなるのかは非常に気になりますね。
現状はログの出力ライブラリと収集ツールが分離されていてそれらを自由に組み合わせて使うことができますが、OpenTelemetry ではそれらが統合されて使いにくくならないかという心配があります。
あえて手動アップグレードを選ぶ〜マネージドサービス(GKE)で手作業による対応をした話〜
GKE では Deprecation Insights という削除予定のAPIを利用していないかを検出する機能があるそうなのですが、Argo CD は利用可能なリソースに対して全てのAPIを呼び出すため、削除予定の API が Deprecation Insights に検出され、自動アップグレードが停止してしまったとのこと。
アプリケーションエンジニアが学ぶコンテナセキュリティ脅威の全体像
コンテナイメージの利用シーンごとに、それぞれどういうリスクがあって、どういう対策が必要かをまとめているスライド。
Better HTTP server routing in Go 1.22
これまで Go が提供している HTTP リクエストのマルチプレクサ net/http.ServeMux ではあまり複雑なパスマッチングが利用できませんでした。
Go 1.22 では gorilla/mux
のような新しいマルチプレクサが標準ライブラリに追加されるそうです。
Prometheus and its storage: architecture, challenges, and solutions
大量のメトリクスデータを時系列に保存するために、TSDB のアーキテクチャがどのように変遷していったかという話です。
Goのテーブル駆動テストではテストケースの定義位置を知りたいのでライブラリを書いた
Go のテーブル駆動テストにおいて、失敗したテストコードの位置ではなくテストケースの定義位置を表示してくれるライブラリを作成したそうです。
Makefile覚書: Goアプリ開発に役立ちそうな基礎知識
Linter, コーディング規約、環境変数の取り扱いなど、Go アプリケーション開発における Makefile のさまざまなテクニックを紹介している記事です。
コンテナ技術における最新の研究動向
コンテナとホスト間で TCP/IP スタックをバイパスして高速化するなど、コンテナ技術の最新研究を紹介しているスライド。
TCP/IP スタックを自作する
可搬性が高く、マルチコア環境でスケールする TCP/IP スタックを自作しているという話。
内製オブジェクトストレージサーバ「b3」でコスト最適化を目指した話
動画配信用に大規模な転送量に対応し、一定期間しかファイルを保持しないオブジェクトストレージを自作しているという話。
すごく大変そうですが面白そうですね。
あとがき
弊チームから CloudNative Days Tokyo 2023 へのプロポーザル「CiliumにおけるGeneveプロトコルを用いたDSRの実装と導入」が採択されました。ご期待ください。
Discussion