Open
Description
Background
Current Pain Points
Current mainstream Rollout tools (such as Argo Rollouts and Flagger) are mainly aimed at stateless applications, and have significant shortcomings in supporting stateful workloads:
- Lack of Topology Awareness
Shard-Level Topology Ignorance: Existing tools cannot coordinate updates across sharded architectures (e.g., MongoDB sharded clusters, Kafka partitions), where multiple interdependent workloads (e.g., shards, servers) require phased rollouts.
Role Unawareness: Within a single shard or workload, tools fail to recognize role-based pod relationships (e.g., Redis master/slave nodes, PostgreSQL primary/replica), leading to unsafe update sequences (e.g., replacing a master node before its replicas). - Limited Instance Control & Over-Reliance on Manual Hooks
Existing Rollout tools lack granular control over stateful instances (e.g., master/slave roles, shard coordination) and force users to implement critical operations (e.g., switchover, pre-migration backups) through repetitive pre/post hooks. This results in brittle configurations, duplicated effort, and a lack of reusable abstractions for stateful workflows. - Complex Rollback Scenarios: Stateful rollbacks demand topology-aware recovery (e.g., reverting master roles before Pod rollback), which existing tools fail to support.
Project Goals & Scope
Goals:
Build a stateful-first Kubernetes Rollout controller that:
- Supports full process automation of stateful application release
- Supports topology-aware strategies (e.g., role-based Pod updates, multi-workload shard coordination).
- Provides built-in actions for stateful operations (e.g., Switchover, Backup) and enables instance-level control during Rollout phases (e.g., pre/post-update hooks with role-specific logic).
- Implements intelligent rollback based on topology state (e.g., reversing role changes before Pod rollback).
Out of Scope:
- Replacing KubeBlocks instanceSet’s functionalities (e.g., bypassing KB and controlling instance upgrading).
- Handling action implement (e.g., implementing switchover).