docs: reflect the sealed database cutover
This commit is contained in:
parent
80bcead168
commit
bb8fc13f17
1 changed files with 13 additions and 17 deletions
30
README.md
30
README.md
|
|
@ -251,9 +251,12 @@ scans both the working tree and the committed history on every push and a hit
|
||||||
fails the build. Trivy scans the release configuration and the built images for
|
fails the build. Trivy scans the release configuration and the built images for
|
||||||
HIGH and CRITICAL findings.
|
HIGH and CRITICAL findings.
|
||||||
|
|
||||||
The `nereus-db` Secret holds the PostgreSQL password and the DSN, and it is
|
The `nereus-db` Secret holds the PostgreSQL password and DSN. Production gets
|
||||||
created out of band rather than living in `base/kustomization.yaml`. See
|
it from the encrypted `deploy/secrets/nereus-db-sealed.yaml`; the Sealed Secrets
|
||||||
`deploy/secrets/README.md` for how it is created in each environment.
|
controller is the only component that can decrypt it. The current Fedora
|
||||||
|
cluster was reset onto a fresh PVC and verified with that committed resource.
|
||||||
|
Development can still create an ephemeral Secret directly. See
|
||||||
|
`deploy/secrets/README.md` for both workflows.
|
||||||
|
|
||||||
The CI pipeline never uses a cluster-admin kubeconfig. It authenticates as a
|
The CI pipeline never uses a cluster-admin kubeconfig. It authenticates as a
|
||||||
`deployer` ServiceAccount with RBAC scoped to the `nereus` namespace, supplied
|
`deployer` ServiceAccount with RBAC scoped to the `nereus` namespace, supplied
|
||||||
|
|
@ -325,10 +328,10 @@ pre-promotion analysis fails the pipeline.
|
||||||
| Docker Compose | `compose.yaml`, plus `observability/compose.yaml` and `build/compose.mini.yaml` |
|
| Docker Compose | `compose.yaml`, plus `observability/compose.yaml` and `build/compose.mini.yaml` |
|
||||||
| Kubernetes orchestration | k3s, two Fedora 44 nodes; k3d for a portable equivalent |
|
| Kubernetes orchestration | k3s, two Fedora 44 nodes; k3d for a portable equivalent |
|
||||||
| Deployments, Services, Ingress, ConfigMaps, Secrets | `deploy/base/`, composed with kustomize overlays |
|
| Deployments, Services, Ingress, ConfigMaps, Secrets | `deploy/base/`, composed with kustomize overlays |
|
||||||
| Infrastructure as code | `scripts/provision/`, Ansible roles plus an idempotent bootstrap |
|
| Infrastructure as code | `terraform/infra/` for libvirt machines, `terraform/platform/` for cluster controllers, and `scripts/provision/` for host configuration |
|
||||||
| CI/CD pipeline | `.forgejo/workflows/pipeline.yml`, self-hosted runner |
|
| CI/CD pipeline | `.forgejo/workflows/pipeline.yml`, self-hosted runner |
|
||||||
| Container registry | Forgejo registry at `git.fiwlabs.dev`, TLS from Traefik |
|
| Container registry | Forgejo registry at `git.fiwlabs.dev`, TLS from Traefik |
|
||||||
| Secure credential handling | Gitleaks, Trivy, namespace-scoped `deployer` kubeconfig, out-of-band `nereus-db` |
|
| Secure credential handling | Gitleaks, Trivy, namespace-scoped `deployer` kubeconfig, and a committed encrypted `nereus-db` SealedSecret |
|
||||||
| Blue-green deployment | Argo Rollouts, `deploy/rollouts/rollout.yaml` |
|
| Blue-green deployment | Argo Rollouts, `deploy/rollouts/rollout.yaml` |
|
||||||
| Automated rollback | `deploy/rollouts/analysistemplate.yaml`, Prometheus-driven abort |
|
| Automated rollback | `deploy/rollouts/analysistemplate.yaml`, Prometheus-driven abort |
|
||||||
| OpenTelemetry Collector | `deploy/observability/otel-collector.yaml` for traces, `otel-log-collector.yaml` for logs |
|
| OpenTelemetry Collector | `deploy/observability/otel-collector.yaml` for traces, `otel-log-collector.yaml` for logs |
|
||||||
|
|
@ -342,21 +345,14 @@ pre-promotion analysis fails the pipeline.
|
||||||
|
|
||||||
Stated plainly so it does not have to be discovered.
|
Stated plainly so it does not have to be discovered.
|
||||||
|
|
||||||
`terraform/infra/` creates the two Fedora 44 libvirt machines and emits the
|
Discord routing is configured but disabled until an owner-provided webhook is
|
||||||
inventory consumed by Ansible. `terraform/platform/` installs Argo Rollouts,
|
sealed. The Sealed Secrets controller key also needs an off-repository backup;
|
||||||
Sealed Secrets and kube-prometheus-stack. The separation is deliberate:
|
without it, a rebuilt cluster cannot decrypt the committed database resource.
|
||||||
Terraform owns machines and cluster-wide controllers, Ansible owns the hosts,
|
|
||||||
and Kustomize owns the application.
|
|
||||||
|
|
||||||
Sealed Secrets and Discord alert routing are configured. The database
|
|
||||||
`SealedSecret` is committed for fresh deployments; the Discord resource still
|
|
||||||
awaits its owner-provided webhook. `deploy/secrets/README.md` keeps plaintext
|
|
||||||
values in local pipelines and commits only encrypted resources. The controller
|
|
||||||
key must be backed up outside this repository before it becomes the recovery
|
|
||||||
path.
|
|
||||||
|
|
||||||
The remaining acceptance gap is environmental: the reproducible fresh-VM path
|
The remaining acceptance gap is environmental: the reproducible fresh-VM path
|
||||||
has not been rerun on a second workstation with no dependencies installed.
|
has not been rerun on a second workstation with no dependencies installed.
|
||||||
|
After final sign-off, the local QEMU lab and packages installed only for it can
|
||||||
|
be removed.
|
||||||
|
|
||||||
## Fedora traps worth knowing
|
## Fedora traps worth knowing
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue