Skip to content

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 08 Oct 17:13
· 108 commits to main since this release
94390af

追加

  • fleet の rproxy の Pod が VIP を直接持てるようになりました(#43・#44)。chart の fleet.vip(既定は off)。
    • Pod ごとの vip コンテナ(rproxy-gateway vip)が、VIP ごとに Kubernetes の Lease でリーダーを選び、自分のノードに VIP を付けて gratuitous ARP(IPv6 は unsolicited NA)で知らせます。
    • VIP を持つのは、rproxy が準備を終え(/readyz)、コントローラがルールを当て終えた Pod だけです。rproxy が止まり始めたとき・Pod の終了・ノードの cordon では、先に VIP を外してから Lease を空けます。計画した移動(Pod の削除・入れ替え・drain)は 1 秒未満で移ります(受け入れテストで 0.1〜1.2 秒の途切れ)。
    • Kubernetes の API サーバに届かないときは、既定で VIP を持ち続けます(hold、release も選べます)。ほかの機械が同じ VIP を告げたら手放します。
    • Lease の既定:期限 3 秒・更新 1 秒・やり直し 0.5 秒。
    • VIP は管理者が fleet.vip.addresses に並べたものだけで、Gateway の spec.addresses はその中から選びます(addressCIDRs の外や、Service・ノードと重なるものは使いません)。持ち主のいない VIP を使う Gateway は Programmed: False(AddressNotUsable)。
    • Kustomize の例 config/samples/fleet-vip。
  • rproxy を rproxy-api v0.4.2 にしました(イメージ ghcr.io/max3584/rproxy-gateway/rproxy:0.4.2)(#45)。

変更

  • rproxy v0.4.2 はトークンファイルを自分で読み直すので、UI を有効・無効にしても Pod を入れ替えません。fleet でも手での rollout restart は要りません。UI の一覧には、UI のトークンを受け付けると確かめた Pod だけを載せます。
  • VIP を使うとき、vip コンテナは NET_ADMIN・NET_RAW と、自分の Pod・ノードを読む権限、Lease の権限を持ちます。fleet の namespace の PodSecurity は privileged が要ります(docs/SECURITY.md)。VIP を使わない入れ方は変わりません。

rproxy: rproxy-api v0.4.2 · UI: TCP-UDP-rproxy-ui v0.4.2


Added

  • fleet rproxy pods can hold VIPs directly (#43, #44), chart fleet.vip (off by default).
    • A vip container per pod (rproxy-gateway vip) elects a leader per VIP with a Kubernetes Lease, adds the VIP on its node and announces it with gratuitous ARP (unsolicited NA for IPv6).
    • Only a pod whose rproxy is ready (/readyz) and has its rule sets applied holds a VIP. When rproxy starts stopping, the pod terminates or the node is cordoned, the VIP is removed first and then the Lease released. Planned moves (pod deletion, rollout, drain) hand over in under a second (0.1–1.2 s gaps in the acceptance test).
    • If the Kubernetes API server is unreachable the VIP is kept by default (hold; release is available). Another machine announcing the same VIP makes it let go.
    • Lease defaults: duration 3 s, renew 1 s, retry 0.5 s.
    • VIPs are only those an admin lists in fleet.vip.addresses; a Gateway's spec.addresses picks from them (never outside addressCIDRs, nor overlapping Services or nodes). A Gateway on a VIP without a holder gets Programmed: False (AddressNotUsable).
    • Kustomize example config/samples/fleet-vip.
  • rproxy is now rproxy-api v0.4.2 (image ghcr.io/max3584/rproxy-gateway/rproxy:0.4.2) (#45).

Changed

  • rproxy v0.4.2 re-reads its token file, so enabling or disabling the UI no longer rolls pods, and fleet no longer needs a manual rollout restart. The UI list only includes pods confirmed to accept the UI token.
  • With VIPs, the vip container has NET_ADMIN, NET_RAW, read access to its own pod and node, and Lease permissions; the fleet namespace needs the privileged PodSecurity level (docs/en/SECURITY.md). Installs without VIPs are unchanged.

rproxy: rproxy-api v0.4.2 · UI: TCP-UDP-rproxy-ui v0.4.2