diff --git a/README.md b/README.md index 25e0597..d566f3f 100644 --- a/README.md +++ b/README.md @@ -77,10 +77,14 @@ Git Push → ArgoCD → Sync Applications → Kubernetes | AutoK8sPilot | Read-only CrewAI наблюдатель за Kubernetes | `clusters/dev` — основной entrypoint приложения. Он включает FastAPI, CrewAI, -PostgreSQL, Loki, Grafana и Vector. Приложения используют Vector как единственную +Loki, Grafana и Vector. Приложения используют Vector как единственную OTLP-точку: логи маршрутизируются в Loki, а трейсы доступны в структурированном output Vector для точечной отладки. Отдельный Jaeger в dev не разворачивается. -`clusters/smoke` остаётся сокращённым CI-профилем и не заменяет dev. +Секреты приложения подаются средой деплоя, а локальный dev-runtime использует +SQLite и ephemeral Loki storage: root не применяет CR до установки их операторов +и не поднимает неиспользуемые платные компоненты. Дополнительные platform-модули +остаются доступными в `platform/`, но подключаются отдельным профилем. `clusters/smoke` +остаётся сокращённым CI-профилем и не заменяет dev. ## Добавление нового приложения diff --git a/clusters/dev/kustomization.yaml b/clusters/dev/kustomization.yaml index 798a773..b440d3e 100644 --- a/clusters/dev/kustomization.yaml +++ b/clusters/dev/kustomization.yaml @@ -6,21 +6,6 @@ kind: Kustomization resources: # Core - namespaces must be created first - ../../platform/core/namespaces - # Security - - ../../platform/infrastructure/security/sealed-secrets/base - - ../../platform/infrastructure/security/reflector/base - - ../../platform/infrastructure/security/external-secrets/base - # Networking - - ../../platform/infrastructure/networking/nginx/base - - ../../platform/infrastructure/networking/cert-manager/base - - ../../platform/infrastructure/networking/external-dns/base - # Storage - - ../../platform/infrastructure/storage/longhorn/base - # Database - - ../../platform/infrastructure/database/pgo/base - - ../../platform/infrastructure/database/cloudnative-pg/base - # AI Platform - - ../../platform/infrastructure/ai-platform/open-webui/base # Observability - ../../platform/observability/monitoring/loki - ../../platform/observability/monitoring/grafana @@ -45,7 +30,7 @@ patches: value: tenants/product-team/apps/crewai/overlays/dev - op: replace path: /spec/source/targetRevision - value: v1.4.1 + value: v1.4.2 - target: kind: Application name: loki @@ -58,9 +43,7 @@ patches: singleBinary: replicas: 1 persistence: - enabled: true - storageClass: longhorn - size: 5Gi + enabled: false resources: requests: cpu: 100m diff --git a/platform/observability/opentelemetry/collector/otel-collector/application.yaml b/platform/observability/opentelemetry/collector/otel-collector/application.yaml index eb41e2b..2a29cb5 100644 --- a/platform/observability/opentelemetry/collector/otel-collector/application.yaml +++ b/platform/observability/opentelemetry/collector/otel-collector/application.yaml @@ -15,7 +15,7 @@ spec: valueFiles: - $values/platform/observability/opentelemetry/collector/otel-collector/values.yaml - repoURL: https://github.com/justgithubaccount/app-poly-gitops-k8s - targetRevision: v1.4.1 + targetRevision: v1.4.2 ref: values destination: name: CLUSTER diff --git a/tenants/product-team/apps/chat/overlays/dev/kustomization.yaml b/tenants/product-team/apps/chat/overlays/dev/kustomization.yaml index 95dcf67..ae231b4 100644 --- a/tenants/product-team/apps/chat/overlays/dev/kustomization.yaml +++ b/tenants/product-team/apps/chat/overlays/dev/kustomization.yaml @@ -3,10 +3,6 @@ kind: Kustomization resources: - ../../base - # - postgres-cluster.yaml # Crunchy PGO - disabled, using CloudNativePG instead - - cnpg-cluster.yaml - - openrouter-secrets.yaml - - github-secrets.yaml patches: - target: @@ -35,7 +31,7 @@ patches: cpu: 100m memory: 256Mi ingress: - enabled: true + enabled: false host: chat-dev.syncjob.ru env: OTEL_EXPORTER_OTLP_ENDPOINT: http://vector-gateway.observability.svc.cluster.local:4318 @@ -46,9 +42,3 @@ patches: defaultModel: gpt-4o-mini postgresSecretRefName: "" openrouterSecretRefName: chat-openrouter - extraEnv: - - name: DATABASE_URL - valueFrom: - secretKeyRef: - name: chat-db-cnpg-app - key: uri diff --git a/tests/test_dev_contract.sh b/tests/test_dev_contract.sh index 78ff3cb..a6dc83b 100755 --- a/tests/test_dev_contract.sh +++ b/tests/test_dev_contract.sh @@ -16,7 +16,7 @@ kubectl kustomize \ grep -q 'name: chat-api' "${rendered_dev}" grep -q 'name: crewai' "${rendered_dev}" grep -q 'path: tenants/product-team/apps/crewai/overlays/dev' "${rendered_dev}" -grep -Fq 'targetRevision: v1.4.1' "${rendered_dev}" +grep -Fq 'targetRevision: v1.4.2' "${rendered_dev}" if grep -q 'image: cr.jaegertracing.io/jaegertracing/jaeger:' "${rendered_dev}"; then echo 'dev includes a redundant Jaeger backend instead of using Vector' >&2 exit 1 @@ -51,11 +51,24 @@ fi # A clean dev cluster must not depend on a SealedSecret encrypted for another cluster. grep -q 'type: filesystem' "${rendered_dev}" +grep -q 'persistence:' "${rendered_dev}" +grep -q 'enabled: false' "${rendered_dev}" if grep -q 'name: loki-s3-secret' "${rendered_dev}"; then echo 'dev Loki still depends on the old cluster-bound S3 secret' >&2 exit 1 fi +# Root must contain only resources the base Kubernetes API and Argo CD can apply. +if grep -Eq '^kind: (Certificate|ClusterIssuer|SealedSecret|Cluster)$' "${rendered_dev}"; then + echo 'dev root contains a custom resource before its operator CRD exists' >&2 + exit 1 +fi +if grep -Eq '^ name: (longhorn|cloudnative-pg|pgo-operator|external-dns|cert-manager)$' \ + "${rendered_dev}"; then + echo 'dev includes platform components not required by the application runtime' >&2 + exit 1 +fi + if grep -Eq 'targetRevision: (main|[0-9a-f]{40})' "${rendered_dev}"; then echo 'dev environment contains a floating branch or opaque commit revision' >&2 exit 1