1.9 KiB
1.9 KiB
StackFlow (GitOps YAML Flow)
StackFlow is a declarative YAML describing a full business stack deployment across DNS, cloud resources (IAC), and Ansible-based provisioning.
This repository already contains:
playbooks/(Ansible provisioning for vhosts/docker/k3s)iac-template/(Terraform reference templates).github/workflows/(bootstrap workflows)
StackFlow adds a top-level config file that can drive those pieces in one place.
Goals
- One YAML describes root domain + targets (Vercel, Cloud Run, vhosts, etc.)
- CI can validate config, produce a DNS plan, then apply phases later
- Never commit real secrets (tokens/keys); use GitHub Secrets / Secret Manager
Config Example
See: StackFlow/svc-plus.yaml
Schema (v1alpha1)
Top-level:
apiVersion:gitops.svc.plus/v1alpha1kind:StackFlowmetadata.name: stack idglobal.domain: root domain, e.g.svc.plusglobal.dns_provider:cloudflare(planned),alicloud(existing playbooks)global.cloud:gcptargets[]: list of deployable targets
Target fields (common):
id: unique idtype:vercel|cloud-run|vhost|kubernetes(planned)domains[]: FQDNs owned by this targetdns.records[]: explicit DNS record intents
DNS record intent:
name: record name relative toglobal.domain(e.g.www)type:A|AAAA|CNAME|TXT|MXvalue: literal value (string)valueFrom: dotted path reference inside the target (e.g.endpoints.public_ipv4)ttl: optional int secondsproxied: optional bool (Cloudflare-specific)
Workflows
Planned phases:
validate: validate YAML structuredns-plan: output required DNS records (no apply)dns-apply: apply DNS changes (provider-specific)iac-apply: provision resources via Terraformdeploy: deploy apps via Ansible or repo-dispatchobserve: connect monitoring / alerts
Today we only ship validate + dns-plan as the first step.