services.rs: - Pod status with unicode icons, grouped by namespace - VSO sync status (VaultStaticSecret/VaultDynamicSecret via kube-rs DynamicObject) - Log streaming via kube-rs log_stream + futures::AsyncBufReadExt - Pod get in YAML/JSON format - Rollout restart with namespace/service filtering checks.rs: - 11 health check functions (gitea, postgres, valkey, openbao, seaweedfs, kratos, hydra, people, livekit) - AWS4-HMAC-SHA256 S3 auth header generation using sha2 + hmac - Concurrent execution via tokio JoinSet - mkcert root CA trust for local TLS secrets.rs: - Stub with cmd_seed/cmd_verify (requires live cluster for full impl) users.rs: - All 10 Kratos identity operations via reqwest + kubectl port-forward - Welcome email via lettre SMTP through port-forwarded postfix - Employee onboarding with auto-assigned ID, HR metadata - Offboarding with Kratos + Hydra session revocation gitea.rs: - Bootstrap without Lima VM: admin password, org creation, OIDC auth source - Gitea API via kubectl exec curl images.rs: - BuildEnv detection, buildctl build + push via port-forward - Per-service builders for all 17 build targets - Deploy rollout, node image pull, uv Dockerfile patching - Mirror scaffolding (containerd operations marked TODO) cluster.rs: - Pure K8s cmd_up: cert-manager, linkerd, rcgen TLS certs, core service wait - No Lima VM operations manifests.rs: - Full cmd_apply: kustomize build, two-pass convergence, ConfigMap restart detection - Pre-apply cleanup, webhook wait, mkcert CA, tuwunel OAuth2 redirect patch Test coverage: 142 tests across 14 modules (44 in checks, 27 in cli, 13 in images, 12 in tools, 12 in services, 11 in users, 10 in manifests, 9 in kube, 9 in cluster, 7 in update, 6 in gitea, 4 in openbao, 3 in output, 2 in config).
62 lines
1.3 KiB
TOML
62 lines
1.3 KiB
TOML
[package]
|
|
name = "sunbeam"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
description = "Sunbeam local dev stack manager"
|
|
|
|
[dependencies]
|
|
# Core
|
|
anyhow = "1"
|
|
tokio = { version = "1", features = ["full"] }
|
|
clap = { version = "4", features = ["derive"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
serde_yaml = "0.9"
|
|
|
|
# Kubernetes
|
|
kube = { version = "0.99", features = ["client", "runtime", "derive", "ws"] }
|
|
k8s-openapi = { version = "0.24", features = ["v1_32"] }
|
|
|
|
# HTTP + TLS
|
|
reqwest = { version = "0.12", features = ["json", "rustls-tls", "blocking"] }
|
|
rustls = "0.23"
|
|
|
|
# SSH
|
|
russh = "0.46"
|
|
russh-keys = "0.46"
|
|
|
|
# Crypto
|
|
rsa = "0.9"
|
|
pkcs8 = { version = "0.10", features = ["pem"] }
|
|
pkcs1 = { version = "0.7", features = ["pem"] }
|
|
sha2 = "0.10"
|
|
hmac = "0.12"
|
|
base64 = "0.22"
|
|
rand = "0.8"
|
|
|
|
# Certificate generation
|
|
rcgen = "0.14"
|
|
|
|
# SMTP
|
|
lettre = { version = "0.11", default-features = false, features = ["smtp-transport", "tokio1-rustls-tls", "builder", "hostname"] }
|
|
|
|
# Archive handling
|
|
flate2 = "1"
|
|
tar = "0.4"
|
|
|
|
# Async
|
|
futures = "0.3"
|
|
tokio-stream = "0.1"
|
|
|
|
# Utility
|
|
tempfile = "3"
|
|
dirs = "5"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
[build-dependencies]
|
|
reqwest = { version = "0.12", features = ["blocking", "rustls-tls"] }
|
|
sha2 = "0.10"
|
|
flate2 = "1"
|
|
tar = "0.4"
|
|
chrono = "0.4"
|