diff --git a/.github/workflows/ops-ci.yml b/.github/workflows/ops-ci.yml index c4de891..0b959bd 100644 --- a/.github/workflows/ops-ci.yml +++ b/.github/workflows/ops-ci.yml @@ -27,7 +27,7 @@ jobs: run: npx --yes prettier --check "**/*.{yaml,yml,md,json}" - name: Setup Terraform - uses: hashicorp/setup-terraform@v3 + uses: hashicorp/setup-terraform@v4 with: terraform_wrapper: false diff --git a/README.md b/README.md index 21591e6..6e466fe 100644 --- a/README.md +++ b/README.md @@ -44,8 +44,10 @@ cloud showcase** — it must never be a prerequisite to run or grade the product > Status: this repo is derived from a **proven reference deployment** (a working > DOKS + Traefik + Postgres/Redis stack). The reusable infrastructure manifests -> are in place; the OpsWarden application services are **placeholders** until -> their images are published. See the per-service status below. +> are in place — their images modernized (Postgres 18 / Redis 8 / Traefik v3), +> pending re-validation on a live cluster — while the OpsWarden application +> services are **placeholders** until their images are published. Full re-targeting +> once the core + AI SRE are deployable. See the per-service status below. --- @@ -76,16 +78,16 @@ opswarden-ops/ ## Services -| Service | Tech | Status | -| ----------------- | :------------------------------------------------------------------------------: | ------------------------------------------- | -| **server** | Rust / Axum | placeholder — `k8s/server/` | -| **client-web** | Next.js | placeholder — `k8s/client-web/` (or Vercel) | -| **investigation** | FastAPI (AI SRE) | placeholder — `k8s/investigation/` | -| **worker** | async | placeholder — `k8s/worker/` | -| **PostgreSQL** | `postgres:13` | ready — `k8s/postgres/` | -| **Redis** | `redis:5.0` | ready — `k8s/redis/` | -| **Traefik** | `traefik:2.7` | ready — `k8s/traefik/` | -| **cAdvisor** | monitoring | ready — `k8s/observability/` | +| Service | Tech | Status | +| ----------------- | :------------------------------------------------------------------------------------: | ------------------------------------------- | +| **server** | Rust / Axum | placeholder — `k8s/server/` | +| **client-web** | Next.js | placeholder — `k8s/client-web/` (or Vercel) | +| **investigation** | FastAPI (AI SRE) | placeholder — `k8s/investigation/` | +| **worker** | async | placeholder — `k8s/worker/` | +| **PostgreSQL** | `postgres:18-alpine` | ready — `k8s/postgres/` | +| **Redis** | `redis:8-alpine` | ready — `k8s/redis/` | +| **Traefik** | `traefik:v3.7` | ready — `k8s/traefik/` | +| **cAdvisor** | monitoring | ready — `k8s/observability/` | Replicated services use **pod anti-affinity** to land on different nodes. Shared config lives in **ConfigMaps**; credentials in **Secrets** (rotate the diff --git a/k8s/postgres/postgres.deployment.yaml b/k8s/postgres/postgres.deployment.yaml index 46e3ac9..874319a 100644 --- a/k8s/postgres/postgres.deployment.yaml +++ b/k8s/postgres/postgres.deployment.yaml @@ -17,7 +17,7 @@ spec: spec: containers: - name: postgres - image: postgres:13 + image: postgres:18-alpine ports: - containerPort: 5432 env: diff --git a/k8s/redis/redis.deployment.yaml b/k8s/redis/redis.deployment.yaml index e139cc5..0ee410c 100644 --- a/k8s/redis/redis.deployment.yaml +++ b/k8s/redis/redis.deployment.yaml @@ -17,7 +17,7 @@ spec: spec: containers: - name: redis - image: redis:5.0 + image: redis:8-alpine ports: - containerPort: 6379 restartPolicy: Always diff --git a/k8s/traefik/traefik.deployment.yaml b/k8s/traefik/traefik.deployment.yaml index b20a803..4a317b8 100644 --- a/k8s/traefik/traefik.deployment.yaml +++ b/k8s/traefik/traefik.deployment.yaml @@ -33,7 +33,10 @@ spec: topologyKey: "kubernetes.io/hostname" containers: - name: traefik - image: traefik:2.7 + # Traefik v3 — the CLI flags below (api.insecure, kubernetesingress, + # entrypoints) are v2/v3-stable; re-validate on a live cluster when the + # app-service manifests stop being placeholders. + image: traefik:v3.7 args: - --api.insecure=true - --providers.kubernetesingress=true