Skip to content

Conversation

@justgithubaccount
Copy link
Owner

Summary

  • Add 4 environments: dev, tst, stg, prd with proper cluster destinations
  • Implement multi-source ApplicationSet with Helm + GitOps values
  • Configure Image Updater for dev environment only (writes to overlays/dev/values.yaml)
  • Add tenants: product-team, data-team, ml-team with namespace isolation
  • Add CI/CD workflows: validate (matrix for all envs) + release (semantic-release)
  • Fix nginx ingress structure and dev bootstrap repository

Changes

Clusters

  • clusters/tst/, clusters/stg/ - new environments
  • clusters/prd/ - activated
  • clusters/dev/bootstrap.yaml - fixed repository URL

Tenants

  • tenants/product-team/ - namespace.yaml, resource-quota.yaml, chat app overlays
  • tenants/data-team/, tenants/ml-team/ - new teams

GitOps

  • platform/gitops/appsets/tenant-apps.yaml - split into dev (with Image Updater) and non-dev
  • Multi-source: Helm repo + GitOps values via $values ref
  • goTemplate enabled for proper variable interpolation

CI/CD

  • .github/workflows/validate.yaml - matrix for dev/tst/stg/prd
  • .github/workflows/release.yaml - semantic-release workflow
  • .releaserc.json - semantic-release config

Test plan

  • Verify kustomize renders for all environments
  • Apply ApplicationSets to test cluster
  • Verify Image Updater detects dev application
  • Test multi-source values merge

🤖 Generated with Claude Code

justgithubaccount and others added 16 commits December 5, 2025 09:38
Add test environment configuration:
- kustomization.yaml with all platform resources
- destination.yaml for tst-cluster
- bootstrap.yaml for ArgoCD root app

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add staging environment configuration:
- kustomization.yaml with all platform resources
- destination.yaml for stg-cluster
- bootstrap.yaml for ArgoCD root app

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Activate production environment configuration:
- Replace commented kustomization.yaml with working config
- Update destination.yaml for prd-cluster
- Update bootstrap.yaml with full ArgoCD Application spec
- Tenant chat-api commented out (enable when ready for production)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add tenant infrastructure:
- namespace.yaml for chat-api namespace with labels
- resource-quota.yaml with CPU/memory/storage limits
- base/kustomization.yaml to bundle tenant resources

Fix chat app structure:
- Remove secrets from base/kustomization.yaml
- Create overlays/dev/kustomization.yaml with base + secrets

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add placeholder structure for future Dify deployment:
- base/kustomization.yaml (commented out)
- base/application.yaml template (commented out)
- README.md with TODO tasks and links

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add release.yaml:
- Semantic-release workflow for automated versioning
- Triggers on push to main (excluding markdown and validate.yaml)
- Uses .releaserc.json configuration

Update validate.yaml:
- Add tst, stg, prd environments to matrix
- All 4 environments now validated on PRs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Update tenants-project.yaml:
- Add destinations for tst-cluster, stg-cluster, prd-cluster
- Add namespaceResourceWhitelist for common K8s resources
- Keep existing in-cluster destination for dev

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Fix kustomize validation error by moving ingress YAML files
from overlays/ to base/ directory. Kustomize doesn't allow
referencing files outside the base directory.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add data-team tenant structure:
- namespace.yaml with team labels
- resource-quota.yaml (8/16 CPU, 16/32Gi memory, 100Gi storage)
- base/kustomization.yaml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add ml-team tenant structure:
- namespace.yaml with team labels
- resource-quota.yaml (16/32 CPU, 32/64Gi memory, 200Gi storage)
- base/kustomization.yaml

Higher resource limits for ML workloads (GPU training, inference).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Fix dev bootstrap.yaml:
- Change repoURL from app-release.git to app-poly-gitops-k8s.git
- Update path from platform/core/cluster-bootstrap to clusters/dev
- Add labels, finalizers, project, syncPolicy
- Use destination.name: in-cluster instead of server URL

Now consistent with tst/stg/prd bootstrap configurations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add Helm values for chat-api across all environments:

dev (2 replicas, 1Gi):
- host: chat-dev.syncjob.ru

tst (1 replica, 512Mi):
- host: chat-tst.syncjob.ru

stg (2 replicas, 1Gi):
- host: chat-stg.syncjob.ru

prd (3 replicas, 2Gi):
- host: chat.syncjob.ru

Create kustomization.yaml for tst/stg/prd overlays.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Replace simple list generator with matrix generator for multi-env support.

Matrix generates 4 Applications automatically:
- product-team-chat-dev → in-cluster
- product-team-chat-tst → tst-cluster
- product-team-chat-stg → stg-cluster
- product-team-chat-prd → prd-cluster

Features:
- Multi-source: Helm chart + GitOps values
- Dynamic path: tenants/{{team}}/apps/{{app}}/overlays/{{env}}
- Environment-specific values from overlays
- Labels for filtering (team, app, env)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Split tenant-apps into tenant-apps-dev (with Image Updater) and tenant-apps (tst/stg/prd)
- Enable goTemplate for proper variable interpolation
- Image Updater writes to tenants/.../overlays/dev/values.yaml
- Remove legacy base/application.yaml (now managed by ApplicationSet)
- Remove legacy clusters/dev/chat-values.yaml

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Skip ArgoCD, cert-manager, and sealed-secrets CRDs that don't have
built-in schemas in kubeconform.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@justgithubaccount justgithubaccount merged commit 723b0b0 into main Dec 5, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants