From 4502ae09fdf51b548b6880ef0f3248fd23122a8b Mon Sep 17 00:00:00 2001 From: chrischristiansen-glitch Date: Sat, 23 May 2026 23:11:41 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20oppdater=20.env.example=20(2nd=20gen=20?= =?UTF-8?q?vars)=20og=20MASTERPLAN=20(OQ-04=20l=C3=B8st,=20Terraform-veika?= =?UTF-8?q?rt)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 39 ++++++++++++++++++++++++---------- MASTERPLAN.md | 59 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 75 insertions(+), 23 deletions(-) diff --git a/.env.example b/.env.example index 7b9fd76..933ff63 100644 --- a/.env.example +++ b/.env.example @@ -11,7 +11,8 @@ export ALERT_EMAIL="your-email@example.com" # ── Service Account ──────────────────────────────────────────── export AGENT_SA="osvauco-agent-sa@${PROJECT_ID}.iam.gserviceaccount.com" -# ── Cloud Run ────────────────────────────────────────────────nexport CLOUD_RUN_SERVICE="osvauco-agent" +# ── Cloud Run ──────────────────────────────────────────────── +export CLOUD_RUN_SERVICE="osvauco-agent" export ARTIFACT_REPO="agent-images" # ── Vertex AI RAG Engine ──────────────────────────────────── @@ -26,23 +27,39 @@ export MEMORY_INSTANCE_DISPLAY_NAME="${PROJECT_ID}-memory-bank" # Populated by 08-memorybank-setup.sh — copy from script output: export MEMORY_ENGINE_NAME="" # projects/PROJECT_NUM/locations/REGION/reasoningEngines/ID -# ── Agent Models ────────────────────────────────────────────nexport ORCHESTRATOR_MODEL="gemini-2.0-flash-001" +# ── Agent Models ───────────────────────────────────────────── +export ORCHESTRATOR_MODEL="gemini-2.0-flash-001" export SUBAGENT_MODEL="gemini-2.0-flash-001" -# ── CI/CD ─────────────────────────────────────────────────── +# ── CI/CD — Cloud Build 2nd gen ────────────────────────────── export GITHUB_OWNER="chrischristiansen-glitch" export GITHUB_REPO="OSVauco" +# GitHub PAT — lagres i Secret Manager, ikke her: +# gcloud secrets create github-token --data-file=<(echo -n "ghp_TOKEN") +# GitHub App Installation ID — finn på: +# https://github.com/settings/installations → klikk på Cloud Build-appen → URL-en inneholder ID +export GITHUB_APP_INSTALLATION_ID="" # eks: 12345678 -# ── Observability ───────────────────────────────────────────# ALERT_EMAIL is already set above +# ── Observability ──────────────────────────────────────────── +# ALERT_EMAIL er allerede satt ovenfor -# ── VPC / Security (optional) ───────────────────────────── +# ── VPC / Security (valgfritt) ──────────────────────────────── export VPC_NETWORK="default" -# export CMEK_KEY_RING="agent-keyring" # only if using CMEK -# export CMEK_KEY_NAME="agent-key" # only if using CMEK +# export CMEK_KEY_RING="agent-keyring" # kun ved CMEK +# export CMEK_KEY_NAME="agent-key" # kun ved CMEK -# ── IAP / Domain (Phase B) ────────────────────────────────# export IAP_DOMAIN="opax.vauco.no" -# export IAP_CLIENT_ID="" # from GCP Console → IAP -# export IAP_CLIENT_SECRET="" # from GCP Console → IAP +# ── IAP / Domene (Fase B) ───────────────────────────────────── +# export IAP_DOMAIN="opax.vauco.no" +# export IAP_CLIENT_ID="" # fra GCP Console → IAP +# export IAP_CLIENT_SECRET="" # fra GCP Console → IAP -# ── LiteLLM proxy (optional) ──────────────────────────────# export LITELLM_BASE_URL="" +# ── Terraform / Kunde-onboarding (Fase C) ───────────────────── +# Brukes av vauco-bootstrap Terraform-modul ved onboarding av ny kunde +# export TF_VAR_customer_id="medioteq" +# export TF_VAR_customer_project_id="" +# export TF_VAR_customer_region="europe-north1" +# export TF_STATE_BUCKET="${PROJECT_ID}-tfstate" # GCS bucket for Terraform state + +# ── LiteLLM proxy (valgfritt) ───────────────────────────────── +# export LITELLM_BASE_URL="" # export LITELLM_API_KEY="" diff --git a/MASTERPLAN.md b/MASTERPLAN.md index 74567b0..46ba6ca 100644 --- a/MASTERPLAN.md +++ b/MASTERPLAN.md @@ -16,7 +16,7 @@ Du er første kunde. Når det virker for deg → selg det til andre. | `OSVauco` | Regler, GCP-scripts, agenter, docs — KJERNEN | | `vauco-gemini-tui-bridge` | Din TUI-cockpit | | `vauco-os` | Det kundene bruker | -| `vauco-bootstrap` | Onboarding av nye kunder | +| `vauco-bootstrap` | Onboarding av nye kunder (→ Terraform-modul i Fase C) | | `deep-dream` | Strategisk visjon — aldri deploy herfra | --- @@ -34,7 +34,7 @@ cd ~/OSVauco # Steg 2: Kopier og rediger .env cp .env.example .env nano .env -# Fyll ut: BILLING_ACCOUNT_ID og ALERT_EMAIL +# Fyll ut: BILLING_ACCOUNT_ID, ALERT_EMAIL, GITHUB_APP_INSTALLATION_ID # Alle andre verdier er ferdig-forhåndsutfylt # Steg 3: Installer Python-avhengigheter @@ -96,9 +96,14 @@ bash infrastructure/03-teardown.sh ``` [ ] B1 — bash infrastructure/02-deploy.sh (IAP på opax.vauco.no) -[ ] B2 — bash infrastructure/06-cicd-setup.sh - OQ-04: GitHub OAuth må settes opp manuelt i GCP Console - https://console.cloud.google.com/cloud-build/triggers +[ ] B2 — Opprett GitHub PAT og legg i Secret Manager: + gcloud secrets create github-token --data-file=<(echo -n "ghp_TOKEN") + Finn GITHUB_APP_INSTALLATION_ID: + https://github.com/settings/installations → Cloud Build-appen → ID i URL + Fyll inn GITHUB_APP_INSTALLATION_ID i .env +[ ] B3 — bash infrastructure/06-cicd-setup.sh + OQ-04: LØST — Cloud Build 2nd gen, ingen manuell OAuth i Console + Bruker: gcloud builds connections create github (programmatisk) ``` --- @@ -108,9 +113,15 @@ bash infrastructure/03-teardown.sh **Mål: Ny kunde onboardet på 30 minutter | Tid: Ukentlig arbeid** ``` -[ ] C1 — Pakk `vauco-bootstrap` som onboardingprodukt +[ ] C1 — Pakk `vauco-bootstrap` som Terraform-modul for kunde-onboarding + Ressurser per kunde: Cloud Run, Artifact Registry, Cloud Build 2nd gen, + IAP, budsjett-alert, Service Account + Terraform-variabler: customer_id, customer_project_id, customer_region + State-backend: GCS bucket (TF_STATE_BUCKET i .env) [ ] C2 — Pakk `vauco-os` som kundeflate -[ ] C3 — Første kunde: Medioteq (europe-north1, separat GCP-prosjekt) +[ ] C3 — Første kunde: Medioteq + Region: europe-north1, separat GCP-prosjekt + Kjør: terraform apply -var="customer_id=medioteq" ``` --- @@ -125,18 +136,20 @@ bash infrastructure/03-teardown.sh | `03-teardown.sh` | Riv ned Cloud Run | Klar | | `04-observability-setup.sh` | Monitoring + alerting | Klar | | `05-cloudrun-deploy.sh` | ADK-agent til Cloud Run | Klar | -| `06-cicd-setup.sh` | GitHub → Cloud Build | Klar | +| `06-cicd-setup.sh` | GitHub → Cloud Build **2nd gen** | **Oppdatert** | | `07-rag-setup.sh` | RAG Engine corpus + fallback | Oppdatert | | `08-memorybank-setup.sh` | Memory Bank + auto-install | Oppdatert | +| `09-cost-check.sh` | Kostnadsoversikt + Artifact Registry | Klar | --- ## BEKREFTET GA-API -| API | Status | Bekreftet fra | -|-----|--------|---------------| +| API | Status | +|-----|--------| | `google.adk.Agent` (ikke LlmAgent) | Bekreftet GA-API | | `load_memory_tool` | Bekreftet fra adk-python samples | +| Cloud Build 2nd gen (`cloudbuildv2`) | Bekreftet GA — programmatisk GitHub-kobling | | CMEK ikke for RAG Engine | Ikke støttet (OQ-03) | | CI/CD `--no-traffic` | Manuell trafikkbytte — HITL | | Idempotente scripts | Trygt å kjøre flere ganger | @@ -159,12 +172,12 @@ Ikke bygg kost-analyse-system nå — spør agenten når GCP er oppe. ## KJENTE HULL -| ID | Hva | Workaround | +| ID | Hva | Workaround / Status | |---|---|---| | OQ-01 | Memory Bank — ingen gcloud CLI | Python SDK only | | OQ-02 | RAG Engine regional availability | Auto-fallback til us-east1 | | OQ-03 | CMEK ikke for RAG Engine | VPC-SC only | -| OQ-04 | Cloud Build GitHub OAuth | Manuelt i Console | +| OQ-04 | Cloud Build GitHub OAuth | **LØST** — 2nd gen programmatisk connection | | OQ-05 | gcloud alpha monitoring ustabil | Fallback til true | | OQ-06 | Memory Bank auto-discovery | Eksplisitt env var | | OQ-07 | Monitoring email flag-format | Teste i dev | @@ -172,5 +185,27 @@ Ikke bygg kost-analyse-system nå — spør agenten når GCP er oppe. --- +## TERRAFORM-VEIKART (Fase C) + +Terraform introduseres **ikke** for nåværende infra — gcloud-scripts er tilstrekkelig +når vi opererer med ett GCP-prosjekt. Terraform blir relevant ved kunde-onboarding: + +| Når | Hva | +|---|---| +| Fase C: Medioteq | `vauco-bootstrap` → Terraform-modul | +| Per kunde | `terraform apply -var="customer_id=X"` oppretter isolert GCP-miljø | +| Ressurser per modul | Cloud Run, Cloud Build 2nd gen connection, IAP, budsjett, SA | +| State-backend | GCS bucket (`TF_STATE_BUCKET`) — én bucket, én state-fil per kunde | +| Fase D | Terraform Cloud for sentralisert state og CI/CD på tvers av kunder | + +Terraform-ressurser som er aktuelle: +- `google_cloudbuildv2_connection` — programmatisk GitHub-kobling per kunde +- `google_cloudbuildv2_repository` — repo-link +- `google_cloudbuild_trigger` — push-til-main trigger +- `google_billing_budget` — budsjett-alert per kunde +- `google_cloud_run_v2_service` — Cloud Run-tjeneste + +--- + *OSVauco-NMTMD-GCOS | propane-will-491900-m5 | us-central1* *GitHub: chrischristiansen-glitch/OSVauco*