mirror of
https://github.com/zooai/operator.git
synced 2026-10-30 14:49:50 +00:00
Two independent 0/1 workloads on zoo-k8s, two independent causes.
1. zoo-{system,devnet}/zoo-explorer-explorer CrashLoopBackOff x590.
The controller invented `--rpc/--chain/--port`, but luxfi/explorer only
defines -config/-data/-http/-mdns, so every start died with
"flag provided but not defined: -rpc" (exit 2). The explorer is
file-configured by design — one chains.yaml describes chain, rpc, coin,
branding and listen addr. So render the CR into that file and mount it,
which is exactly how the hand-rolled zoo-explorer Deployments (the ones
that stayed up) are already wired. JSON is valid YAML, so serde_json
both builds and escapes the document — no string-concat injection.
2. zoo-system/zoo-operator 0/1 while zoo-testnet/zoo-operator ran 1/1.
/readyz returned 503 for any replica that did not hold the lease, so a
healthy standby was permanently NotReady and its Deployment never went
available. Readiness answers "can this pod serve?", leadership answers
"who reconciles?" — braiding them made a working standby look broken.
Unbraid: /readyz reports process health; the lease already names the
leader (kubectl get lease zoo-operator-leader).
Release 0.1.4.
Co-authored-by: Hanzo Dev <[email protected]>
46 lines
1.2 KiB
TOML
46 lines
1.2 KiB
TOML
[package]
|
|
name = "zoo-operator"
|
|
version = "0.1.4"
|
|
edition = "2021"
|
|
description = "Zoo Network Kubernetes Operator"
|
|
repository = "https://github.com/zoo-labs/operator"
|
|
|
|
[[bin]]
|
|
name = "zoo-operator"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Shared reconciler primitives. See ~/work/hanzo/operator-core for the
|
|
# canonical leader / IAM admin / KMS / status logic. Zoo operator gains
|
|
# IAM upsert + KMSSecret reconciler hooks via this dep.
|
|
hanzo-operator-core = { git = "https://github.com/hanzoai/operator-core", tag = "v0.1.0" }
|
|
|
|
# Async runtime
|
|
tokio = { version = "1.35", features = ["full"] }
|
|
futures = "0.3"
|
|
|
|
# Kubernetes
|
|
kube = { version = "0.87", features = ["runtime", "derive", "ws"] }
|
|
k8s-openapi = { version = "0.20", features = ["v1_28"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# CLI
|
|
clap = { version = "4.4", features = ["derive", "env"] }
|
|
|
|
# Logging
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# HTTP server (health + metrics)
|
|
axum = "0.7"
|
|
|
|
# Utils
|
|
thiserror = "1.0"
|
|
anyhow = "1.0"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
schemars = "0.8"
|
|
prometheus = { version = "0.14.0", default-features = false }
|