update project progress documentation
Kube-bench CIS scan / Scan ephemeral K3s cluster (push) Successful in 1m3s

This commit is contained in:
2026-08-15 13:26:34 -04:00
parent fc53e16dd4
commit 68dc427a73
+40 -6
View File
@@ -35,6 +35,10 @@ Traefik is disabled so later ArgoCD-managed components own add-ons explicitly.
Delete the lab with `k3d cluster delete security-baseline`.
For repeatable CI and runtime testing, the repository also includes a Flatcar
Linux Proxmox host definition under `scripts/proxmox/`. The current test
environment runs k3d on a dedicated Flatcar VM with kernel access for Falco.
## Production-style option
`terraform/cloud-cluster/` and `ansible/bootstrap-k3s.yml` provide an optional,
@@ -44,14 +48,44 @@ requires your own AWS credentials, an existing EC2 key pair, a Flatcar AMI ID
for the chosen region, and a tightly scoped admin CIDR.
It is not needed for the portfolio demo and is not run in CI.
The Proxmox scripts also create Flatcar-based hosts for a self-hosted Gitea
Actions runner and for the dedicated k3d test environment. They use Ignition
for first-boot configuration and do not contain account-specific credentials.
## GitOps and security validation
ArgoCD is bootstrapped once and then manages the platform applications through
the app-of-apps definition in `deployments/argocd/`. The managed components are
Kyverno, Falco, and the security demonstration workloads. Cilium values and an
optional Cilium Application are also stored under `deployments/` for the
kube-proxy-free profile.
The kube-bench workflow is retained in `.github/workflows/` for GitHub Actions
and uses a Gitea-compatible artifact action when run by Gitea Actions. It
creates an ephemeral k3d cluster, waits for the Kubernetes API, runs the K3s
benchmark, and uploads the report without failing the workflow solely because
the benchmark contains findings that require review.
Kyverno admission tests have verified that privileged containers, root
containers, host networking or host PID access, unapproved registries, and
application workloads in the `default` namespace are rejected. Falco runtime
testing has verified that the suspicious shell workload produces the custom
shell detection while the compliant workload does not.
## Build status
- [x] Phase 1: local k3d definition and optional Terraform/Ansible path
- [ ] Phase 2: ArgoCD app-of-apps deployment (scaffolded; runtime verification pending)
- [x] Phase 2: ArgoCD app-of-apps deployment and remote Flatcar test environment
- [x] Phase 3: kube-bench CI scan
- [ ] Architecture revision: Flatcar hosts and Cilium kube-proxy replacement (configured; runtime verification pending)
- [ ] Phase 4: Kyverno policy set and CIS mapping (configured; runtime verification pending)
- [ ] Phase 5: Falco rules and webhook alerting
- [ ] Phase 6: test workloads and evidence capture
- [ ] Phase 7: architecture/design documentation
- [x] Architecture revision: Flatcar hosts and Falco kernel access
- [x] Phase 4: Kyverno policy set, CIS mapping, and admission tests
- [ ] Phase 5: Falco rules and webhook alerting (runtime detection verified; webhook pending)
- [x] Phase 6: test workloads and runtime verification
- [ ] Phase 7: architecture and design documentation (repository layout started)
- [ ] Phase 8: final portfolio polish
## Remaining work
- Configure a Slack or Discord webhook through a Kubernetes Secret outside Git.
- Add the architecture diagram, CIS evidence summary, and demo capture.
- Finish the design trade-off documentation and final repository review.