Compare commits
118 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d33b6a9c3 | |||
| 0036d986a8 | |||
| 70dab12b05 | |||
| 47e9619ae2 | |||
| 2e09a2d404 | |||
| 9e9254a466 | |||
| 539217c3f2 | |||
| 80cf435486 | |||
| 0d7980d105 | |||
| f280596ddb | |||
| 65dc795cd6 | |||
| 237dc0ff90 | |||
| 788cc8f4f4 | |||
| 4def4d2ed7 | |||
| 7d1e2d4665 | |||
| 417185d567 | |||
| 03e60a3512 | |||
| 2135580210 | |||
| 37a38a1179 | |||
| 4ca9039686 | |||
| 6a9eadbde8 | |||
| f19f7c9237 | |||
| 5a459d486e | |||
| 31fb476a78 | |||
| a088425b70 | |||
| b3b3edf82c | |||
| 308755a4b3 | |||
| db6afaf180 | |||
| 5a2f9a1b88 | |||
| 1c6f18b67c | |||
| 7132f5000e | |||
| b4100bd456 | |||
| fff117a500 | |||
| 03c75fc4cd | |||
| df73c4bdc0 | |||
| 6a7de704f2 | |||
| be8bbd2c12 | |||
| c469ab44b0 | |||
| 290c8b91f8 | |||
| a776bae4bd | |||
| 7405ce27dd | |||
| 1281e8ef37 | |||
| c497c54e8e | |||
| b57459cf85 | |||
| e8dd213685 | |||
| 1d879c82f9 | |||
| 94c8265475 | |||
| 17d7c4a655 | |||
| f3dba72c5d | |||
| cc9c9049eb | |||
| 9f6c5105af | |||
| 45e502d74d | |||
| 167d893233 | |||
| 8b9ffee242 | |||
| 4069e255a8 | |||
| 3b1f498616 | |||
| cc47bf6b9f | |||
| c1d61398f0 | |||
| ece4a8d199 | |||
| 03c47ad109 | |||
| 3095741590 | |||
| d7ba859e61 | |||
| 07eb9b7051 | |||
| a911ff64c3 | |||
| 9e13560e5e | |||
| 3d84acb278 | |||
| fde81c6ec6 | |||
| 8648269e55 | |||
| 84fe4cbe7c | |||
| 38158be0a8 | |||
| 202e84badc | |||
| a6df75de93 | |||
| 4f4f544100 | |||
| 8d4b6493a0 | |||
| 8505481291 | |||
| 65598c9297 | |||
| 3f0f70699b | |||
| 06522b2f19 | |||
| 4c65035485 | |||
| 84f4bebc08 | |||
| 5394b2c714 | |||
| c4e586a7be | |||
| 1fa070b041 | |||
| 9c905355e3 | |||
| 6b1115ec28 | |||
| 2fb276a62c | |||
| 3efe1b68ef | |||
| 5df104beec | |||
| 0ecfee3cf8 | |||
| c88938adb5 | |||
| d05a16840e | |||
| d7c7242aa1 | |||
| 3bf9fa7837 | |||
| d2596568f2 | |||
| 2a3539350b | |||
| f97b613c12 | |||
| 9c7db11470 | |||
| 723072bd1e | |||
| 046b78446b | |||
| 56a1b49d10 | |||
| d557eb1865 | |||
| a51ed84124 | |||
| 73e253a579 | |||
| d7c1341eab | |||
| eed53006c1 | |||
| 395ca70c2a | |||
| ea04ec20c9 | |||
| 03a0d7c9ae | |||
| 72a65f0e06 | |||
| 44fc242ae8 | |||
| b2f601e950 | |||
| f8b17cc030 | |||
| 6639d0e3ff | |||
| 4485731ab5 | |||
| 439b8516f0 | |||
| 0eccd2d439 | |||
| 3e1029a557 | |||
| 61c2801e0a |
@@ -0,0 +1,2 @@
|
||||
# Force LF line endings for shell scripts
|
||||
*.sh text eol=lf
|
||||
@@ -0,0 +1,47 @@
|
||||
name: AI Code Review
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [ labeled, synchronize ]
|
||||
|
||||
jobs:
|
||||
ai-review:
|
||||
if: >-
|
||||
(github.event.action == 'synchronized' && contains(toJSON(github.event.pull_request.labels), 'ai-review')) || contains(toJSON(gitea.event.changes.added_labels), 'ai-review')
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
AI_REVIEW_CONFIG_FILE_YAML: ./shared-prompts/iac/.ai-review.yaml
|
||||
# VCS configuration
|
||||
VCS__PROVIDER: GITEA
|
||||
VCS__PIPELINE__OWNER: ${{ github.repository_owner }}
|
||||
VCS__PIPELINE__REPO: ${{ github.event.repository.name }}
|
||||
VCS__PIPELINE__PULL_NUMBER: ${{ github.event.pull_request.number }}
|
||||
VCS__HTTP_CLIENT__API_URL: https://git.forteapps.net/api/v1
|
||||
VCS__HTTP_CLIENT__API_TOKEN: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
# Review — disable fallback to see real Gitea API errors
|
||||
REVIEW__INLINE_COMMENT_FALLBACK: "false"
|
||||
# LLM configuration
|
||||
LLM__PROVIDER: CLAUDE
|
||||
LLM__META__MODEL: claude-sonnet-4-20250514
|
||||
LLM__META__MAX_TOKENS: "4096"
|
||||
LLM__HTTP_CLIENT__API_URL: https://api.anthropic.com
|
||||
LLM__HTTP_CLIENT__API_TOKEN: ${{ secrets.ANTHROPIC_API_KEY }}
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.AI_REVIEW_TOKEN }}
|
||||
|
||||
- name: Run inline review
|
||||
uses: docker://nikitafilonov/ai-review:v0.64.0
|
||||
with:
|
||||
args: ai-review run-inline
|
||||
|
||||
- name: Run summary review
|
||||
uses: docker://nikitafilonov/ai-review:v0.64.0
|
||||
with:
|
||||
args: ai-review run-summary
|
||||
@@ -1,34 +0,0 @@
|
||||
name: Deploy Gitea Pages
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main ]
|
||||
paths:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
|
||||
jobs:
|
||||
build-and-deploy:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt-get update -qq
|
||||
apt-get install -y -qq python3-pip
|
||||
pip3 install --break-system-packages mkdocs mkdocs-material
|
||||
|
||||
- run: mkdocs build
|
||||
|
||||
- name: Deploy to Gitea Pages
|
||||
run: |
|
||||
cd site
|
||||
git init
|
||||
git config user.name "gitea-actions"
|
||||
git config user.email "actions@forteapps.net"
|
||||
git add .
|
||||
git commit -m "Deploy docs"
|
||||
git push --force "https://x-token:${{ secrets.GITEA_TOKEN }}@git.forteapps.net/Forte/launchpad.git" HEAD:gitea-pages
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "shared-prompts"]
|
||||
path = shared-prompts
|
||||
url = https://git.forteapps.net/Forte/ai-review-prompts.git
|
||||
@@ -1,7 +0,0 @@
|
||||
standards_version: "2025.1"
|
||||
last_configured: "2026-04-04"
|
||||
components:
|
||||
github-pages: "2025.1"
|
||||
github-pages-generator: "mkdocs"
|
||||
github-pages-source: "docs/"
|
||||
github-pages-theme: "material"
|
||||
@@ -1,9 +1,9 @@
|
||||
# Kubernetes Cluster - GitOps Configuration
|
||||
|
||||
> **Kubernetes cluster bootstrapping and GitOps configuration repository** using ArgoCD for UpCloud Managed Kubernetes
|
||||
> **Kubernetes cluster bootstrapping and GitOps configuration repository** using ArgoCD for multi-cloud Kubernetes (UpCloud, AWS EKS, Azure AKS, GCP GKE)
|
||||
|
||||
[](https://argoproj.github.io/cd/)
|
||||
[](https://upcloud.com/)
|
||||
[]()
|
||||
|
||||
---
|
||||
|
||||
@@ -57,7 +57,7 @@ This repository contains the complete GitOps configuration for our Kubernetes cl
|
||||
|
||||
### What's Inside
|
||||
|
||||
- **Infrastructure Applications**: Traefik, Cert-Manager, Kyverno, Prometheus, Grafana, Loki, Tempo, Sealed Secrets
|
||||
- **Infrastructure Applications**: Traefik, Cert-Manager, Kyverno, Prometheus, Grafana, Loki, Tempo, Sealed Secrets, Homepage (platform dashboard)
|
||||
- **Business Applications**: MCP10X, MusicMan, Dot-AI Stack, ArgoCD MCP
|
||||
- **Policies**: Kyverno security policies for secret management, namespace controls, pod verification
|
||||
- **Monitoring**: Full observability stack with metrics, logs, traces, and alerting
|
||||
@@ -83,26 +83,52 @@ This repository contains the complete GitOps configuration for our Kubernetes cl
|
||||
├── bootstrap.sh # Cluster initialization script
|
||||
├── _app-of-apps.yaml # Root ArgoCD Application (App-of-Apps pattern)
|
||||
│
|
||||
├── infra/ # Infrastructure ArgoCD Applications
|
||||
│ ├── enterprise-apps.yaml # Manages all apps in apps/ folder
|
||||
│ ├── traefik-application.yaml
|
||||
│ ├── cert-manager-application.yaml
|
||||
│ ├── kyverno.yaml
|
||||
│ ├── prometheus.yaml
|
||||
│ ├── grafana.yaml
|
||||
│ ├── loki.yaml
|
||||
│ ├── tempo.yaml
|
||||
│ ├── fluent-bit.yaml
|
||||
│ ├── trivy.yaml
|
||||
│ ├── sealedsecrets.yaml
|
||||
│ ├── renovate.yaml
|
||||
├── infra/ # Infrastructure ArgoCD Applications (Kustomize multi-cluster)
|
||||
│ ├── base/ # Base ArgoCD Application manifests (one dir per component)
|
||||
│ │ ├── kustomization.yaml # Aggregates all component subdirectories
|
||||
│ │ ├── traefik-application/
|
||||
│ │ │ ├── kustomization.yaml
|
||||
│ │ │ └── traefik-application.yaml
|
||||
│ │ ├── keycloak/
|
||||
│ │ │ ├── kustomization.yaml
|
||||
│ │ │ └── keycloak.yaml
|
||||
│ │ ├── grafana/
|
||||
│ │ ├── prometheus/
|
||||
│ │ ├── ... # Each component in its own subdirectory
|
||||
│ │ └── secrets/
|
||||
│ ├── overlays/ # Per-cluster overrides (Kustomize)
|
||||
│ │ ├── upc-dev/ # UpCloud Dev — includes all base components
|
||||
│ │ ├── upc-prod/ # UpCloud Prod — all components + patches
|
||||
│ │ ├── aks-dev/ # Azure AKS Dev — selective components only
|
||||
│ │ ├── aks-prod/ # Azure AKS Prod
|
||||
│ │ ├── eks-dev/ # AWS EKS Dev
|
||||
│ │ ├── eks-prod/ # AWS EKS Prod
|
||||
│ │ ├── gke-dev/ # GCP GKE Dev
|
||||
│ │ └── gke-prod/ # GCP GKE Prod
|
||||
│ ├── dashboards/ # Grafana dashboard ConfigMaps
|
||||
│ └── values/ # Helm value overrides
|
||||
│ ├── base/ # Shared cloud-agnostic values
|
||||
│ ├── upc-dev/ # UpCloud Dev (storage, LB, pricing)
|
||||
│ ├── upc-prod/ # UpCloud Prod
|
||||
│ ├── eks-dev/ # AWS EKS Dev
|
||||
│ ├── eks-prod/ # AWS EKS Prod
|
||||
│ ├── aks-dev/ # Azure AKS Dev
|
||||
│ ├── aks-prod/ # Azure AKS Prod
|
||||
│ ├── gke-dev/ # GCP GKE Dev
|
||||
│ └── gke-prod/ # GCP GKE Prod
|
||||
│
|
||||
├── apps/ # Business Applications
|
||||
│ ├── mcp10x.yaml
|
||||
│ ├── musicman.yaml
|
||||
│ ├── dot-ai-stack.yaml
|
||||
│ └── argo-mcp.yaml
|
||||
├── apps/ # Business Applications (Kustomize, same pattern as infra)
|
||||
│ ├── base/ # One subdirectory per app
|
||||
│ │ ├── kustomization.yaml
|
||||
│ │ ├── musicman/
|
||||
│ │ ├── mcp10x/
|
||||
│ │ ├── dot-ai-stack/
|
||||
│ │ ├── ts-mcp/
|
||||
│ │ └── argo-mcp/
|
||||
│ └── overlays/ # Per-cluster: cherry-pick or include all
|
||||
│ ├── upc-dev/ # All apps
|
||||
│ ├── upc-prod/ # All apps + patches
|
||||
│ └── aks-dev/ # Selective apps only
|
||||
│
|
||||
├── cluster-resources/ # Cluster-wide Kubernetes resources
|
||||
│ ├── letsencrypt-issuer.yaml
|
||||
@@ -140,12 +166,12 @@ This repository contains the complete GitOps configuration for our Kubernetes cl
|
||||
|------------|---------|-----------|-----------|
|
||||
| **[launchpad](https://git.forteapps.net/Forte/launchpad)** (this repo) | ArgoCD Applications, cluster resources | Platform / DevOps engineers | ✅ Often |
|
||||
| **[forte-helm](https://git.forteapps.net/Forte/forte-helm)** | Generic Helm chart templates | Platform engineers | ❌ Rarely |
|
||||
| **[helm-values](ssh://git@git.forteapps.net:2222/Forte/helm-prod-values.git)** | App-specific configuration & versions | Developers / CI pipelines | ✅ Sometimes |
|
||||
| **[helm-prod-values](ssh://git@git.forteapps.net:2222/Forte/helm-prod-values.git)** | App-specific configuration & versions | Developers / CI pipelines | ✅ Sometimes |
|
||||
|
||||
### GitOps Workflow
|
||||
|
||||
```
|
||||
Developer commits code → CI/CD builds image → Updates helm-values → ArgoCD syncs → Deployed to cluster
|
||||
Developer commits code → CI/CD builds image → Updates helm-prod-values → ArgoCD syncs → Deployed to cluster
|
||||
```
|
||||
|
||||
**Learn more**: [GitOps Architecture - GitOps Workflow](docs/GITOPS-ARCHITECTURE.md#gitops-workflow)
|
||||
@@ -160,7 +186,7 @@ Developer commits code → CI/CD builds image → Updates helm-values → ArgoCD
|
||||
|
||||
**Quick version**:
|
||||
1. Create `apps/myapp.yaml` (ArgoCD Application manifest)
|
||||
2. Create `helm-values/myapp/values.yaml` (configuration)
|
||||
2. Create `helm-prod-values/myapp/values.yaml` (configuration)
|
||||
3. Create sealed secrets if needed
|
||||
4. Commit and push - ArgoCD auto-syncs!
|
||||
|
||||
@@ -169,8 +195,8 @@ Developer commits code → CI/CD builds image → Updates helm-values → ArgoCD
|
||||
**See detailed guide**: [Developer Guide - Updating an Existing Application](docs/DEVELOPER-GUIDE.md#updating-an-existing-application)
|
||||
|
||||
**Quick version**:
|
||||
- **Update code**: Push to app repo → CI/CD updates image tag in helm-values
|
||||
- **Update config**: Edit `helm-values/myapp/values.yaml` → commit → push
|
||||
- **Update code**: Push to app repo → CI/CD updates image tag in helm-prod-values
|
||||
- **Update config**: Edit `helm-prod-values/myapp/values.yaml` → commit → push
|
||||
|
||||
### Manage Secrets
|
||||
|
||||
@@ -198,7 +224,7 @@ git push
|
||||
|
||||
**Quick version**:
|
||||
```yaml
|
||||
# In helm-values/myapp/values.yaml
|
||||
# In helm-prod-values/myapp/values.yaml
|
||||
|
||||
# Token-based auth (simple)
|
||||
auth:
|
||||
@@ -337,7 +363,6 @@ kubectl patch application myapp -n argocd \
|
||||
| **Fluent-Bit** | Log shipping | `monitoring` | DaemonSet |
|
||||
| **OpenCost** | Cost monitoring | `monitoring` | 1 |
|
||||
| **Renovate** | Dependency updates | `renovate` | CronJob |
|
||||
| **Trivy** | Vulnerability scanning | `trivy-system` | 1 |
|
||||
|
||||
**Full specs**: [Technical Reference - Infrastructure Components](docs/REFERENCE.md#infrastructure-components)
|
||||
|
||||
@@ -355,12 +380,12 @@ kubectl patch application myapp -n argocd \
|
||||
## 📖 Key Concepts
|
||||
|
||||
### App-of-Apps Pattern
|
||||
`_app-of-apps.yaml` is the root Application that manages all other Applications in `infra/`. Each YAML in `infra/` becomes a child Application managed by ArgoCD.
|
||||
`_app-of-apps-{cluster}.yaml` is the root Application that manages all other Applications in `infra/`. Each component in `infra/base/` lives in its own subdirectory (e.g., `infra/base/grafana/`). Overlays can either include **all** components (via `../../base`) or **cherry-pick** specific ones (via `../../base/grafana`, `../../base/prometheus`, etc.). Per-cluster patches swap Helm value file paths. Supported clusters: `upc-dev`, `upc-prod`, `eks-dev`, `eks-prod`, `aks-dev`, `aks-prod`, `gke-dev`, `gke-prod`.
|
||||
|
||||
### Multi-Source Pattern
|
||||
Applications reference both:
|
||||
1. **Helm charts** from `forte-helm` (templates)
|
||||
2. **Values** from `helm-values` (configuration)
|
||||
2. **Values** from `helm-prod-values` (configuration)
|
||||
|
||||
This separates reusable templates from environment-specific config.
|
||||
|
||||
@@ -429,7 +454,7 @@ Applications deploy in order using `argocd.argoproj.io/sync-wave`:
|
||||
### Adding a New Application
|
||||
1. Read [Developer Guide - Deploying Your First Application](docs/DEVELOPER-GUIDE.md#deploying-your-first-application)
|
||||
2. Create ArgoCD Application manifest in `apps/`
|
||||
3. Create Helm values in `helm-values/`
|
||||
3. Create Helm values in `helm-prod-values/`
|
||||
4. Create sealed secrets if needed
|
||||
5. Commit and push - ArgoCD handles the rest!
|
||||
|
||||
@@ -452,16 +477,14 @@ Documentation lives in `docs/`. To update:
|
||||
## 📝 Notes
|
||||
|
||||
### Current Environment
|
||||
- **Provider**: UpCloud Managed Kubernetes
|
||||
- **Provider**: Multi-cloud (UpCloud, AWS EKS, Azure AKS, GCP GKE)
|
||||
- **Active clusters**: UpCloud (upc-dev, upc-prod)
|
||||
- **Environment**: Production (internal use only)
|
||||
- **Cluster**: Single cluster
|
||||
- **Auth**: Disabled for ArgoCD (internal access)
|
||||
- **Backup**: None (cluster rebuildable via GitOps)
|
||||
- **Backup**: Gitea daily backup to S3-compatible storage
|
||||
|
||||
### Known Limitations
|
||||
- No automated backups (yet)
|
||||
- Secret rotation not automated
|
||||
- Single cluster (no multi-cluster setup)
|
||||
- DNS management is manual
|
||||
|
||||
**Future improvements**: See [Operations Runbook - Disaster Recovery](docs/OPERATIONS-RUNBOOK.md#disaster-recovery)
|
||||
@@ -479,8 +502,8 @@ Documentation lives in `docs/`. To update:
|
||||
- [Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets)
|
||||
|
||||
### Related Repositories
|
||||
- [forte-helm](https://github.com/fortedigital/forte-helm) - Helm chart templates
|
||||
- [helm-values](git@github.com:fortedigital/helm-values.git) - Application values
|
||||
- [forte-helm](https://git.forteapps.net/Forte/forte-helm) - Helm chart templates
|
||||
- [helm-prod-values](git@github.com:fortedigital/helm-prod-values.git) - Application values
|
||||
|
||||
---
|
||||
|
||||
@@ -498,7 +521,7 @@ Internal use only. Not for public distribution.
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-03-16
|
||||
**Last Updated**: 2026-04-22
|
||||
**Documentation Version**: 1.0.0
|
||||
|
||||
**🚀 Ready to get started? Check out the [Documentation Index](docs/README.md)!**
|
||||
|
||||
@@ -20,7 +20,7 @@ spec:
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra
|
||||
path: infra/overlays/aks-dev
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/aks-prod
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -1,33 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: network-policies
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: network-policies
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
app.kubernetes.io/managed-by: argocd
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "1"
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: cluster-resources/network
|
||||
|
||||
path: infra/overlays/eks-dev
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
allowEmpty: false
|
||||
|
||||
syncOptions:
|
||||
- Validate=true
|
||||
- ServerSideApply=true
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/eks-prod
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/gke-dev
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/gke-prod
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/upc-dev
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,32 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: monitoring
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "-1"
|
||||
---
|
||||
apiVersion: argoproj.io/v1alpha1
|
||||
kind: Application
|
||||
metadata:
|
||||
name: infrastructure-apps
|
||||
namespace: argocd
|
||||
labels:
|
||||
app.kubernetes.io/name: infrastructure-apps
|
||||
app.kubernetes.io/part-of: platform
|
||||
finalizers:
|
||||
- resources-finalizer.argocd.argoproj.io
|
||||
spec:
|
||||
project: default
|
||||
source:
|
||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
path: infra/overlays/upc-prod
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
namespace: default
|
||||
syncPolicy:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
@@ -0,0 +1,6 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- argo-mcp.yaml
|
||||
- argocdmcp-auth-oidc-sealed.yaml
|
||||
- argocd-mcp-credentials.yaml
|
||||
@@ -0,0 +1,18 @@
|
||||
# SealedSecret created after namespace (sync-wave: 0)
|
||||
apiVersion: bitnami.com/v1alpha1
|
||||
kind: SealedSecret
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: dot-ai-secrets
|
||||
namespace: dot-ai
|
||||
spec:
|
||||
encryptedData:
|
||||
anthropic-api-key: AgASIRVNs7kIvZ/XwFJ4j9TJ05TW4YlFNzi2lx+6URlvzjTkMignK+y4/HD3wTK37BkIonnOXf/DGJcMgqgxOrHBVu9tLkSamve5qgf+SOZ8jxaqpLX2e5hdmHrgMp7rVWKiOoxM+bvu8Gdve3eMwXX8Eazj7W7vi430LsvW4BmPrQp+A9SOP+hwMlV5r+P5pUogC3hddt5KoSwpgnpOb8fRGlLDpc548eDNBJrhsAZiiFqc8+CycHX6idxWzlWOTPR05LBs7YrTIP/LUXWdyq6UG8yB5D0c9JNndnGo6kSfJxdaxCNO7GhMAOmo4CitzYn/zhICwuHPLKwUYQBcEHVpFxgub0U9fY7s4i0SAH9aF1kk8yqHWaCicHzi6B3AxMZYr+knS5vVNB+uGZmSKgZ7QNE1bF6E4Gg5bXRwk7OVQhuJSBzxVNDoXoJ6stL8ejU+MP5FtI792FxZbNDImu3kqor/t9wB49ZeB9Ngks2yvtlSrQ3G2lxJaOgNBPmKYhAX95JFI3xUSHOMa18ftn+aXmEQTXOHtM/IT8A95gUvIKz8Hrt03CwgZ8E+3lcsjAVsfNjqn/erqV+xi93OYOL6o9ivmTIem3MzsqjKuQ57HKaghnd+Ygdt/WfotRBSgZtCweOkZBV0XKxI1RmCQXk6dce8x4T7FDEeaSQwkc4yZ77LfQJnyVgU1rds9Hqv0RbymHK8JCQEMMb6PcK+Ow068fdj4NP27HkuYMB5JdPp682KIRwGznN2d3+QPXRd/ZHshnixudY7CLirlZl9xD0HssfSBI+uCrFEAln8D93UYbn7trF5gkKWYQsQ07CVZ5Z1qXieqwJWjHRY+oY=
|
||||
auth-token: AgB65rUY3yJuTTLbGyrCtJPZp8UyEOr+kznSMGvUaZ9PoHq+kIEhazRdVKHa/WGvMWuc4x+XYRuIGj+2KiooyilUPrLcE3bz9fUOAFbRw3+iUh3WAgwK+f3eBUG6/0OoFw+GJ583IRidDW1t2BchMxSM1m+3vmQoF24qj7k9j/lWPsnX2IX3DhM0SomD1xmG+LsQMo2e4vQXB0BxhVDIQ621JTrvUPYzYx0NlPqZO/MtR1JWYS7WBTvegvgeBKLxfy9KLnqsuzu7rc2t9BYt7TRqvBg/prrKPdSV6Ei4GOZq+AcG15iOKXhsj8SxejPpM0QDemFTRQkdfz+k8ms4/SM0eylr5fEaa99TMTvjYGCfjJJyRcVm5Ef/XdmXiM3OI1u+9QNPiqXh1zmtp0yQMZ7nRE70kKQ2MHVhEmSUkBjovybIzLk4OL1v0FGDDqa1BN9KmNEBlo8H7DqXzfamVoNPyuuO625B3HgSeR3Udq8hngy9W/wiolmMNSc9C6vBA0HzE7Mkq79fHh/ruTi5zOJLfyEP7KQQqlNKfEtDFQfabaV9ERthQjuUs8ZIrdfCTOyQkrmmGY/sH5yodLRSYSEpHFrhPepwHS7lGzbVucW3Fn34D4OxJXyXQQObZKybLV7g6Oglf2Pdn11CEu/4+19RlykuOlm1dlj852a5NWWmmX319laLGlEd1BpG4cZyc9UZud68dGumwzrUupUMTLlJx8bR5rLgqaMpQMluwvq8MQbBXm4ySOcQ2jQhjw==
|
||||
openai-api-key: AgBc4cSrd0riSxKPrp7AqrNYMDAZJTe3aCjTOwEb5pS/KARkgoEGz+0ZhLXa2bcCsPlQzqRzZ1c1cUCnBACkp1xoMfhSOoIJUWJQHRgZx5kEDhNIE/M8PQe8es7jYsW7/ui6iK8uj3Ljk21r8l/ctnP/KiKyML4553el28Ya7XsPQynRvpVexFC4BoJw50nkauLnvl3in0cKmEVAkMWorUP3Etapaj4DWkCQQ22RPN0xGNo9yiIUEAVE+uTRFNKGEHMIvJzgB291FJQtG/WoN/Sy/DeoZkUYndA7CbfFgiz9sq3GqJwyqTM+Ikzw6VCQ3TVWYO/6+yaEzT1NZ/rw00YhDyFoH+yGTkX5lrSUo8lGf3T9OODTdSS1203xtj4dhGbY70sPGMxDfucnO6piVcuRfh9bWg1VX+MTjqpBQE1J0DKJanhoh6lKbPOJhRbi0TIoCz1a3btbbKLDq2YJl7FXA3QNdBsR4qVJ3xmgWlH/eTUskCE2YxDzHmkxgZN2mL22SfeUJYtDRswRG0UGc6pvg2xrR0iEDB0UbH4FQK46fWv8aiOejteLlAAyA9HNA8yi73rTEjq55wpO19/MYj+6oUGEHpFaJje77INTHAKpdbfkp8iKotNXFYLM2hsjyau+x/AFjg87kEdIUVVHHLVMDhOq6NO+foM0nFOIv4lr2Yjl15+ImMSTEfcBr+nWaomnb9G8i5ptqz9bMHbxAcHpzWUBH9SZhzrCWZNDzOm2X2K6mpXhg4WX7VJMoIJk/f+bxTTKnWBawdnpCdbdG5GYQh7usqjPuELFYRTsx+6Tqoddp4KIEyMMxO81XObiN5vEBg74ygunxrjKNg5FoOkUA79YvcGBVVU1FNRl3d8IslXFqhEOT35nxGBB0T7ZORii34tZ2E551NkIo1WbCwilD3Dlgw==
|
||||
ui-auth-token: AgDStP4jHhMehx/SAv5x2aQrJwChnWq8WhV/LVTSuuCSSy9kFQGa3Izyl21sMhLKUgrlS030GH50lbku+IY90S+MSBfaCq0Xb8qwohfH+qJulMRgljoU8r58/3ZsaBzbGJjiNMgBCwGlvuK85t3R3662ftwikahWqLfwAahi12L0llUDNyG9UB0Os3oR2CVAt83+YB07YspCWRzwuOz9D1SgOL/g/JF2hoL43pDD65BqYKdEuLFInJZx1Ul68V/FPmJK1gmJb/Kv8pgtk0sGTzxbbTdIQ1Ugf6+8//CWEq6GsMeEZG9VwExL/KYqobnbqd02FRgSSvWybhWLjiALLQvAFtce6FR6bur0rsariyogGjYCuXYdRnhf7QnB6NopwplhFP37Qf6E4q2pJTJ6Fzv0xq+XlfzNkn9Jvebrdkk/5CThW+wPAfx8r1VIySqBsYnPO/ZQDkfQ5ocX6fmzZ1iCg+0NI24k2YwCeMZtEAGpKEtejS0BLvqrilUG6Oz9sHCGHro4Bv5B/jzUjGbye0DSDj1f6c2RcpqMiUxfPvydJIcJGhrTx8sZS3qhEWME7kwjJCZpHEzfdv0weSJbgVGBSh9e1wjZxxeJGXuZKdFzdhpNEWP4uScGW0UnRDwxZzHMsLjS/W30mQmwmgJVTKdPl6VQrvdq7m4AC6+/d7iXlHazieC1KpBme4hWzO+/h7qRw1P5Va/ZWZtnGs8476J8hIojRtOJ/CdWwVLUa0gHo4CYnempIMwCIS3GtA==
|
||||
template:
|
||||
metadata:
|
||||
creationTimestamp: null
|
||||
name: dot-ai-secrets
|
||||
namespace: dot-ai
|
||||
@@ -27,29 +27,19 @@ metadata:
|
||||
spec:
|
||||
project: default
|
||||
|
||||
source:
|
||||
repoURL: ghcr.io/vfarcic/dot-ai-stack/charts
|
||||
sources:
|
||||
- repoURL: ghcr.io/vfarcic/dot-ai-stack/charts
|
||||
chart: dot-ai-stack
|
||||
targetRevision: "0.56.0"
|
||||
|
||||
helm:
|
||||
releaseName: dot-ai-stack
|
||||
values: |
|
||||
dot-ai:
|
||||
ingress:
|
||||
enabled: true
|
||||
className: traefik
|
||||
host: kubemcp.forteapps.net
|
||||
webUI:
|
||||
baseUrl: http://kubemcpui.forteapps.net
|
||||
dot-ai-ui:
|
||||
uiAuth:
|
||||
secretRef:
|
||||
name: dot-ai-secrets
|
||||
ingress:
|
||||
enabled: true
|
||||
className: traefik
|
||||
host: kubemcpui.forteapps.net
|
||||
valueFiles:
|
||||
- $values/infra/values/base/dot-ai-stack-values.yaml
|
||||
- $values/infra/values/upc-dev/dot-ai-stack-values.yaml
|
||||
|
||||
- repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||
targetRevision: HEAD
|
||||
ref: values
|
||||
|
||||
destination:
|
||||
server: https://kubernetes.default.svc
|
||||
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- dot-ai-stack.yaml
|
||||
- dot-ai-secrets.yaml
|
||||
@@ -0,0 +1,8 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- dot-ai-stack
|
||||
- mcp10x
|
||||
- musicman
|
||||
- ts-mcp
|
||||
- argo-mcp
|
||||
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- mcp10x.yaml
|
||||
- forte10x-app-credentials-sealed.yaml
|
||||
@@ -0,0 +1,5 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- musicman.yaml
|
||||
- musicman-credentials.yaml
|
||||
@@ -4,6 +4,8 @@ metadata:
|
||||
creationTimestamp: null
|
||||
name: musicman-credentials
|
||||
namespace: music-man
|
||||
annotations:
|
||||
argocd.argoproj.io/sync-wave: "12"
|
||||
spec:
|
||||
encryptedData:
|
||||
DATABASE_URL: AgBGLu8Rw9z9WMo3uX7fezN7tOVlEsmWtikFlyBxuSuQ1dCv6KTCePkwxJx4LuKvaHXlwdWl5yP8wQxMJP0BNJ1wewFb9zeUkP1YuCz4MrfuXq1zrecIr86R5hNbPiOb66e/4oOTCY/z3QREX9WjZdLJV/PCyBz8MP0D51pgWXpM6CBdhwpFbHSALyJk89+q44c9KkRxAUG2OLnesMeRe9nXJt5ariUCl9Qd2POIjx2hSNII1l0KbTcjI9hCf91DYM6poqKYYQUpnrjKv3LJwWS79I2b56+iTtroH3usIRgaiwgtFt2INm+8gwLBmC4xxKJ5VAjjYB/3dcN9XeboXvj0NB05P9jS3e77imUFANIB9coeaNlcvRWxwGCewYMp8+7RT7jPVA41/+aT/zT74tq9WhkKvgrr1It9/5fRnXtFEkhZg5bBcYCChzooarHkiwKlA3Wo0CrFsDPqy89oZrnwMRnVqKWBf79koZV4l7uCA0do9ojf55lTy8mt3mKQkwfqK9UdzZNbYzH0/Fk6gxlSxANOOqe7kt6VPywYUBnh6JS5U+kdTgNeSrFy/xqLFz28fXuikSJvLEouSFu66MeT+6uvYEmdfdLeh7quW/n+p7QTok3v3kRYJ/1Dl8ZtgvM7e8F/J5bLcacj394AJ/bBt+RIDa+XBjNNPrWKcWt/mkudZ25F/84G+hNxYQv7PIbhYfA1JTuHmQSoF+xah5QhKpyNpI3+knJmJj/4MhPKLnTuebg0xfbPevm2CU9fSa4sPIqmSvSGtqlXODvCfDSFEYzWfyfXV5Tys1NGAt04V8fl9A9UxULUm510NCeD0jzFeeYm3ZJiyavA5xF6hXCHoqLE
|
||||
@@ -36,13 +36,8 @@ spec:
|
||||
automated:
|
||||
prune: true
|
||||
selfHeal: true
|
||||
allowEmpty: false
|
||||
|
||||
syncOptions:
|
||||
- CreateNamespace=true
|
||||
- Validate=true
|
||||
- ServerSideApply=false
|
||||
- Replace=false
|
||||
retry:
|
||||
limit: 5
|
||||
backoff:
|
||||