Cilium BGP Control Plane の話題など: Neco Weekly (2023-09-15号)
Neco Weekly (2023-09-15号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第41回目の記事となります。
👀 Notable Articles
Cilium BGP Control Plane 使ってみました
Cilium は MetalLB というソフトウェアを利用して BGP によるロードバランサー機能を提供しているのですが、今後は GoBGP を利用した BGP Control Plane という仕組みに置き換わる予定です。
この記事では、BGP Control Plane を利用して Kubernetes クラスターの外部から Pod にアクセスできるようにする方法を紹介しています。
また、 Containerlab というコンテナベースのネットワーク検証環境を YAML で宣言的に構築できるツールの使い方も紹介しています。
controller-runtime Deep Dive
サイボウズのサマーインターンを実施している中で Kubernetes のカスタムコントローラーに関していくつか質問があったので、Q&A 方式で紹介したいと思います。
Q. Reconcile
の中でリソースを更新する場合は、Informer
のキャッシュが上書きされないように DeepCopy
する必要があるのではないでしょうか?
A. client-go
を生で利用している場合はコピーしなければならないケースもありますが、controller-runtime
ではキャッシュから読み取る際に DeepCopy
しているのでコピーは不要です。なお、コピーするかどうかはオプションで無効化することも可能です。
Q. controller-runtime
の Client
の Update
を利用して status
サブリソースを更新することはできません。一方で status
以外のサブリソースは更新できるのですが、これはなぜでしょうか?
A. API Convention には、誤って status
を更新してしまわないように spec
の更新時には status
は無視しなければならないと記述されています。
また、Kubernetes のコードとしても、status
を無視するような実装になっています。
Q. Reconcile
で requeue: true
を返した場合、Reconcile
が呼び出されるバックオフの時間はどうなるのでしょうか?
A. バックオフ時間は指数関数的に増加します。初期値は5msで最大1000秒まで。
Q. Pod リソースの .spec.nodeName
は Immutable なのに、kube-scheduler はどうやってその値を書き換えているのでしょうか?
A. .spec.nodeName
は pods/binding
というサブリソースになっています。サブリソースとして更新することでその値を書き換えることができます。
Kubernetesソースコードリーディング入門
Kubernetes のソースコードを読むにあたって必要な知識を紹介しているスライドです。
弊チームの OSS や、つくって学ぶ Kubebuilder も紹介してくれています。
23新卒エンジニアがチーム開発研修で学んだこと
サイボウズの新卒エンジニア向け研修の成果報告ブログです。
わずか2週間の研修の中で MOCO や TopoLVM を利用したインフラを構築していて驚きです。
Go1.22で登場するかも!?開発中の新機能イテレータを使ってみる!
Go 1.22 で導入予定のイテレータについて、その仕様を詳しく紹介している記事です。
他の言語のイテレータと比べると仕様がやや複雑になっているように感じました。
Goのzero識別子追加プロポーザルと導入される仕様について
Go に追加される予定の zero
識別子について紹介している記事です。
Generics を書くときにたまにほしくなりますよね。
Kubernetes Deployment の rollout status の罠
Deployment のローリングアップデート時に、古い方の Pod にリクエストが転送されてしまう問題について紹介している記事です。
🛠️ Tools, Frameworks, Libraries
Introducing Grafana Beyla: open source ebpf auto-instrumentation for application observability
eBPF を使って、HTTP や gRPC のリクエストのトレース情報を自動的に収集してくれるツールです。
Grafana は、オブザーバビリティ関連のツールを次々とリリースしていて驚きです。
Kubebuilder v3.12.0
Kubebuilder v3.12.0 がリリースされました。
今回は、Google Summer Code Program 2023 の開発成果である re-scaffold 機能がアルファ版として公開されています。
これにより自作したカスタムコントローラーのアップグレードが簡単になることが期待されます。
あとがき
最近 Platform Engineering がとても気になっています。
きちんと勉強してチーム運営に取り込んでいきたいと思っています。
Discussion