Skip to content

FuelCommunication/devops

Repository files navigation

Helm Charts

Charts are grouped by purpose: storage/infra (databases and brokers), microservices (Rust binaries), and the gateway. The full deploy order is encoded in argocd/ sync waves — see ArgoCD GitOps below.

Storage / infrastructure

fuel-auth — PostgreSQL for auth service

# dev
helm install auth ./fuel-auth -n fuel-auth --create-namespace

# prod
helm install auth ./fuel-auth -n fuel-auth --create-namespace -f ./fuel-auth/values-prod.yaml

fuel-channels — PostgreSQL for channels service

# dev
helm install channels ./fuel-channels -n fuel-channels --create-namespace

# prod
helm install channels ./fuel-channels -n fuel-channels --create-namespace -f ./fuel-channels/values-prod.yaml

fuel-valkey — Valkey (Redis-compatible) cache

Used by channels for caching and rate limiting; designed to be shared across services.

# dev
helm install valkey ./fuel-valkey -n fuel-valkey --create-namespace

# prod
helm install valkey ./fuel-valkey -n fuel-valkey --create-namespace -f ./fuel-valkey/values-prod.yaml

fuel-meilisearch — Meilisearch full-text search

# dev
helm install meili ./fuel-meilisearch -n fuel-meilisearch --create-namespace

# prod
helm install meili ./fuel-meilisearch -n fuel-meilisearch --create-namespace -f ./fuel-meilisearch/values-prod.yaml

fuel-kafka — Kafka cluster (KRaft)

# dev
helm install kafka ./fuel-kafka -n fuel-kafka --create-namespace

# prod
helm install kafka ./fuel-kafka -n fuel-kafka --create-namespace -f ./fuel-kafka/values-prod.yaml

fuel-scylladb — ScyllaDB cluster

# dev
helm install scylla ./fuel-scylladb -n fuel-scylladb --create-namespace

# prod
helm install scylla ./fuel-scylladb -n fuel-scylladb --create-namespace -f ./fuel-scylladb/values-prod.yaml

fuel-rustfs — RustFS S3-compatible object storage

# dev
helm install rustfs ./fuel-rustfs -n fuel-rustfs --create-namespace

# prod
helm install rustfs ./fuel-rustfs -n fuel-rustfs --create-namespace -f ./fuel-rustfs/values-prod.yaml

Microservices

All five Rust services share the fuel-services namespace. Replace fuel/service-*:latest in values.yaml with the actual image registry before deploying.

fuel-service-auth — auth (gRPC)

# dev
helm install service-auth ./fuel-service-auth -n fuel-services --create-namespace

# prod
helm install service-auth ./fuel-service-auth -n fuel-services --create-namespace -f ./fuel-service-auth/values-prod.yaml

fuel-service-channels — channels (HTTP)

helm install service-channels ./fuel-service-channels -n fuel-services --create-namespace

fuel-service-chats — chats (WebSocket)

helm install service-chats ./fuel-service-chats -n fuel-services --create-namespace

fuel-service-calls — calls (HTTP + WebSocket signaling)

helm install service-calls ./fuel-service-calls -n fuel-services --create-namespace

fuel-service-images — images (HTTP)

helm install service-images ./fuel-service-images -n fuel-services --create-namespace

Gateway

fuel-gateway — Pingora API gateway

Edge proxy in front of all microservices. Inject X-User-Id after JWT validation via gRPC to service-auth.

# dev
helm install gateway ./fuel-gateway -n fuel-gateway --create-namespace

# prod
helm install gateway ./fuel-gateway -n fuel-gateway --create-namespace -f ./fuel-gateway/values-prod.yaml

Observability

fuel-observability — Prometheus, Grafana, Loki, Promtail, Alertmanager

# dev
helm install obs ./fuel-observability -n monitoring --create-namespace

# prod
helm install obs ./fuel-observability -n monitoring --create-namespace -f ./fuel-observability/values-prod.yaml

# Grafana port-forward
kubectl port-forward -n monitoring svc/obs-fuel-observability-grafana 3000:3000

Template preview (without deploy)

helm template <release-name> ./<chart-dir>

ArgoCD GitOps

argocd/ contains an app-of-apps layout that deploys every chart above via ArgoCD with the right ordering (storage → service-auth → other services → gateway). See argocd/README.md for full bootstrap instructions.

# 1. Install ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

# 2. Replace REPLACE_WITH_GIT_REPO_URL with the real repo URL
find argocd -name '*.yaml' -exec sed -i \
  's|REPLACE_WITH_GIT_REPO_URL|https://github.com/your-org/FuelCommunication.git|g' {} +

# 3. Sealed Secrets controller (handles encrypted secrets in git)
kubectl apply -f argocd/bootstrap/sealed-secrets.yaml

# 4. AppProject + root app-of-apps
kubectl apply -f argocd/projects/fuel.yaml
kubectl apply -f argocd/root.yaml

Sync waves: storage -5 → observability -3 → service-auth -1 → other services 0 → gateway 1.

About

Project configuration

Topics

Resources

Stars

Watchers

Forks

Contributors