Implement Phase 1 of KAT (#1)
**Phase 1: State Management & Leader Election**
* **Goal**: A functional embedded etcd and leader election mechanism.
* **Tasks**:
1. Implement the `StateStore` interface (RFC 5.1) with an etcd backend (`internal/store/etcd.go`).
2. Integrate embedded etcd server into `kat-agent` (RFC 2.2, 5.2), configurable via `cluster.kat` parameters.
3. Implement leader election using `go.etcd.io/etcd/client/v3/concurrency` (RFC 5.3).
4. Basic `kat-agent init` functionality:
* Parse `cluster.kat`.
* Start single-node embedded etcd.
* Campaign for and become leader.
* Store initial cluster configuration (UID, CIDRs from `cluster.kat`) in etcd.
* **Milestone**:
* A single `kat-agent init --config cluster.kat` process starts, initializes etcd, and logs that it has become the leader.
* The cluster configuration from `cluster.kat` can be verified in etcd using an etcd client.
* `StateStore` interface methods (`Put`, `Get`, `Delete`, `List`) are testable against the embedded etcd.
Reviewed-on: #1
This commit is contained in:
@ -7,6 +7,7 @@ import (
|
||||
"os"
|
||||
|
||||
pb "git.dws.rip/dubey/kat/api/v1alpha1"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"gopkg.in/yaml.v3"
|
||||
|
||||
"encoding/json"
|
||||
@ -64,6 +65,8 @@ func ParseClusterConfiguration(filePath string) (*pb.ClusterConfiguration, error
|
||||
return nil, fmt.Errorf("failed to unmarshal spec into proto: %w", err)
|
||||
}
|
||||
|
||||
spew.Dump(&config) // For debugging, remove in production
|
||||
|
||||
SetClusterConfigDefaults(&config)
|
||||
|
||||
if err := ValidateClusterConfiguration(&config); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user