A Kubernetes operator that makes service boot dependencies declarative and automatic, eliminating hand-written init containers and ad-hoc wait scripts.
- Declarative dependencies — Define which services a Deployment must wait for via a
BootDependencycustom resource - Automatic wiring — The operator injects init logic so your Deployment only starts when dependencies are reachable (TCP health)
- Per-dependency timeouts — Configure wait timeouts per service (e.g. 60s for DB, 30s for cache)
- Status and metrics — Ready conditions, resolved dependency counts, and Prometheus metrics for observability
- You create a
BootDependencywith the same name and namespace as your Deployment. - You list the services (and ports) that must be reachable before the Deployment should start.
- The operator ensures the Deployment is only rolled out when all dependencies are satisfied, and keeps status up to date.
No init containers to maintain — just a small CR and the operator does the rest.
- Kubernetes 1.24+
- cert-manager (required for the operator's webhooks)
# Install cert-manager (required for webhooks)
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager --create-namespace \
--set crds.enabled=true --wait
# Install bootchain-operator
helm install bootchain-operator oci://ghcr.io/user-cube/bootchain-operator/bootchain-operator \
--namespace bootchain-operator-system --create-namespace --waitCreate a BootDependency that matches your Deployment name and namespace, and list the services to wait for:
apiVersion: core.bootchain-operator.ruicoelho.dev/v1alpha1
kind: BootDependency
metadata:
name: payments-api
namespace: default
spec:
dependsOn:
- service: payments-db
port: 5432
timeout: 60s
- service: redis
port: 6379
timeout: 30sThe operator will ensure the payments-api Deployment in default only starts once payments-db:5432 and redis:6379 are reachable.
Full documentation is available at https://user-cube.github.io/bootchain-operator