Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

## Добавление нового приложения

Expand Down
21 changes: 2 additions & 19 deletions clusters/dev/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -58,9 +43,7 @@ patches:
singleBinary:
replicas: 1
persistence:
enabled: true
storageClass: longhorn
size: 5Gi
enabled: false
resources:
requests:
cpu: 100m
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 1 addition & 11 deletions tenants/product-team/apps/chat/overlays/dev/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand All @@ -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
15 changes: 14 additions & 1 deletion tests/test_dev_contract.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
Loading