Skip to content

Latest commit

 

History

History
124 lines (88 loc) · 4.42 KB

File metadata and controls

124 lines (88 loc) · 4.42 KB

Stellar-K8s Logo

Stellar-K8s: Cloud-Native Stellar Infrastructure 🚀

Rust Kubernetes License CI/CD

Production-grade Stellar infrastructure in one command.

Stellar-K8s is a high-performance Kubernetes Operator written in strict Rust using kube-rs. It automates the deployment, management, and scaling of Stellar Core, Horizon, and Soroban RPC nodes, bringing the power of Cloud-Native patterns to the Stellar ecosystem.

Designed for high availability, type safety, and minimal footprint.


✨ Key Features

  • 🦀 Rust-Native Performance: Built with kube-rs and Tokio for an ultra-lightweight footprint (~15MB binary) and complete memory safety.
  • 🛡️ Enterprise Reliability: Type-safe error handling prevents runtime failures. Built-in Finalizers ensure clean PVC and resource cleanup.
  • GitOps Ready: Fully compatible with ArgoCD and Flux for declarative infrastructure management.
  • 🔭 Observable by Default: Native Prometheus metrics integration for monitoring node health, ledger sync status, and resource usage.
  • ⚡ Soroban Ready: First-class support for Soroban RPC nodes with captive core configuration.

🏗️ Architecture Overview

Stellar-K8s follows the Operator Pattern, extending Kubernetes with a StellarNode Custom Resource Definition (CRD).

  1. CRD Source of Truth: You define your node requirements (Network, Type, Resources) in a StellarNode manifest.
  2. Reconciliation Loop: The Rust-based controller watches for changes and drives the cluster state to match your desired specification.
  3. Stateful Management: Automatically handles complex lifecycle events for Validators (StatefulSets) and RPC nodes (Deployments), including persistent storage and configuration.

🚀 Quick Start

Get a Testnet node running in under 5 minutes.

1. Install the Operator via Helm

# Add the helm repo (example)
helm repo add stellar-k8s https://stellar.github.io/stellar-k8s
helm repo update

# Install the operator
helm install stellar-operator stellar-k8s/stellar-operator \
  --namespace stellar-system \
  --create-namespace

2. Deploy a Testnet Validator

Apply the following manifest to your cluster:

# validator.yaml
apiVersion: stellar.org/v1alpha1
kind: StellarNode
metadata:
  name: my-validator
  namespace: stellar
spec:
  nodeType: Validator
  network: Testnet
  version: "v21.0.0"
  storage:
    storageClass: "standard"
    size: "100Gi"
    retentionPolicy: Retain
  validatorConfig:
    seedSecretRef: "my-validator-seed" # Pre-created K8s secret
    enableHistoryArchive: true
kubectl apply -f validator.yaml
kubectl get stellarnodes -n stellar

🤝 Contributing

  1. Look for issues labeled stellar-wave in our Issue Tracker.
  2. Comment on the issue you'd like to tackle.
  3. Submit a PR referencing the issue.

🗺️ Roadmap

Phase 1: Core Operator & Helm Charts (Current)

  • StellarNode CRD with Validator support
  • Basic Controller logic with kube-rs
  • Helm Chart for easy deployment
  • CI/CD Pipeline with GitHub Actions and Docker builds

Phase 2: Soroban & Observability (Month 2)

  • Full Soroban RPC node support with captive core
  • Comprehensive Prometheus metrics export (Ledger age, peer count)
  • Dedicated Grafana Dashboards
  • Automated history archive management

Phase 3: High Availability & DR (Month 3)

  • Automated failover for high-availability setups
  • Disaster Recovery automation (backup/restore from history)
  • Multi-region federation support

👨‍💻 Maintainer

Otowo Samuel
DevOps Engineer & Protocol Developer

Bringing nearly 5 years of DevOps experience and a deep background in blockchain infrastructure tools (core contributor of starknetnode-kit). Passionate about building robust, type-safe tooling for the decentralized web.


📄 License

This project is licensed under the Apache 2.0 License.