feature/multi-cloud #14
18
README.md
18
README.md
@@ -98,23 +98,23 @@ This repository contains the complete GitOps configuration for our Kubernetes cl
|
|||||||
│ ├── overlays/ # Per-cluster overrides (Kustomize)
|
│ ├── overlays/ # Per-cluster overrides (Kustomize)
|
||||||
│ │ ├── upc-dev/ # UpCloud Dev (uses base as-is)
|
│ │ ├── upc-dev/ # UpCloud Dev (uses base as-is)
|
||||||
│ │ ├── upc-prod/ # UpCloud Prod (patches value paths)
|
│ │ ├── upc-prod/ # UpCloud Prod (patches value paths)
|
||||||
│ │ ├── aws-dev/ # AWS EKS Dev
|
│ │ ├── eks-dev/ # AWS EKS Dev
|
||||||
│ │ ├── aws-prod/ # AWS EKS Prod
|
│ │ ├── eks-prod/ # AWS EKS Prod
|
||||||
│ │ ├── aks-dev/ # Azure AKS Dev
|
│ │ ├── aks-dev/ # Azure AKS Dev
|
||||||
│ │ ├── aks-prod/ # Azure AKS Prod
|
│ │ ├── aks-prod/ # Azure AKS Prod
|
||||||
│ │ ├── gcp-dev/ # GCP GKE Dev
|
│ │ ├── gke-dev/ # GCP GKE Dev
|
||||||
│ │ └── gcp-prod/ # GCP GKE Prod
|
│ │ └── gke-prod/ # GCP GKE Prod
|
||||||
│ ├── dashboards/ # Grafana dashboard ConfigMaps
|
│ ├── dashboards/ # Grafana dashboard ConfigMaps
|
||||||
│ └── values/ # Helm value overrides
|
│ └── values/ # Helm value overrides
|
||||||
│ ├── base/ # Shared cloud-agnostic values
|
│ ├── base/ # Shared cloud-agnostic values
|
||||||
│ ├── upc-dev/ # UpCloud Dev (storage, LB, pricing)
|
│ ├── upc-dev/ # UpCloud Dev (storage, LB, pricing)
|
||||||
│ ├── upc-prod/ # UpCloud Prod
|
│ ├── upc-prod/ # UpCloud Prod
|
||||||
│ ├── aws-dev/ # AWS EKS Dev
|
│ ├── eks-dev/ # AWS EKS Dev
|
||||||
│ ├── aws-prod/ # AWS EKS Prod
|
│ ├── eks-prod/ # AWS EKS Prod
|
||||||
│ ├── aks-dev/ # Azure AKS Dev
|
│ ├── aks-dev/ # Azure AKS Dev
|
||||||
│ ├── aks-prod/ # Azure AKS Prod
|
│ ├── aks-prod/ # Azure AKS Prod
|
||||||
│ ├── gcp-dev/ # GCP GKE Dev
|
│ ├── gke-dev/ # GCP GKE Dev
|
||||||
│ └── gcp-prod/ # GCP GKE Prod
|
│ └── gke-prod/ # GCP GKE Prod
|
||||||
│
|
│
|
||||||
├── apps/ # Business Applications
|
├── apps/ # Business Applications
|
||||||
│ ├── mcp10x.yaml
|
│ ├── mcp10x.yaml
|
||||||
@@ -373,7 +373,7 @@ kubectl patch application myapp -n argocd \
|
|||||||
## 📖 Key Concepts
|
## 📖 Key Concepts
|
||||||
|
|
||||||
### App-of-Apps Pattern
|
### App-of-Apps Pattern
|
||||||
`_app-of-apps-{cluster}.yaml` is the root Application that manages all other Applications in `infra/`. Kustomize overlays in `infra/overlays/{cluster}/` render the base Applications with per-cluster patches (e.g., swapping value file paths). Supported clusters: `upc-dev`, `upc-prod`, `aws-dev`, `aws-prod`, `aks-dev`, `aks-prod`, `gcp-dev`, `gcp-prod`.
|
`_app-of-apps-{cluster}.yaml` is the root Application that manages all other Applications in `infra/`. Kustomize overlays in `infra/overlays/{cluster}/` render the base Applications with per-cluster patches (e.g., swapping value file paths). Supported clusters: `upc-dev`, `upc-prod`, `eks-dev`, `eks-prod`, `aks-dev`, `aks-prod`, `gke-dev`, `gke-prod`.
|
||||||
|
|
||||||
### Multi-Source Pattern
|
### Multi-Source Pattern
|
||||||
Applications reference both:
|
Applications reference both:
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ spec:
|
|||||||
source:
|
source:
|
||||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
path: infra/overlays/aws-dev
|
path: infra/overlays/eks-dev
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: default
|
namespace: default
|
||||||
@@ -20,7 +20,7 @@ spec:
|
|||||||
source:
|
source:
|
||||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
path: infra/overlays/aws-prod
|
path: infra/overlays/eks-prod
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: default
|
namespace: default
|
||||||
@@ -20,7 +20,7 @@ spec:
|
|||||||
source:
|
source:
|
||||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
path: infra/overlays/gcp-dev
|
path: infra/overlays/gke-dev
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: default
|
namespace: default
|
||||||
@@ -20,7 +20,7 @@ spec:
|
|||||||
source:
|
source:
|
||||||
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git
|
||||||
targetRevision: HEAD
|
targetRevision: HEAD
|
||||||
path: infra/overlays/gcp-prod
|
path: infra/overlays/gke-prod
|
||||||
destination:
|
destination:
|
||||||
server: https://kubernetes.default.svc
|
server: https://kubernetes.default.svc
|
||||||
namespace: default
|
namespace: default
|
||||||
@@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com
|
|||||||
dotaiUiDomain: kubemcpui.example.com
|
dotaiUiDomain: kubemcpui.example.com
|
||||||
letsencryptEmail: admin@example.com # <- adjust
|
letsencryptEmail: admin@example.com # <- adjust
|
||||||
trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR
|
trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR
|
||||||
cloudProvider: aws
|
cloudProvider: eks
|
||||||
@@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com
|
|||||||
dotaiUiDomain: kubemcpui.example.com
|
dotaiUiDomain: kubemcpui.example.com
|
||||||
letsencryptEmail: admin@example.com # <- adjust
|
letsencryptEmail: admin@example.com # <- adjust
|
||||||
trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR
|
trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR
|
||||||
cloudProvider: aws
|
cloudProvider: eks
|
||||||
@@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com
|
|||||||
dotaiUiDomain: kubemcpui.example.com
|
dotaiUiDomain: kubemcpui.example.com
|
||||||
letsencryptEmail: admin@example.com # <- adjust
|
letsencryptEmail: admin@example.com # <- adjust
|
||||||
trustedIPs: "10.0.0.0/8,35.191.0.0/16,130.211.0.0/22" # <- subnet CIDR + GCP health checks
|
trustedIPs: "10.0.0.0/8,35.191.0.0/16,130.211.0.0/22" # <- subnet CIDR + GCP health checks
|
||||||
cloudProvider: gcp
|
cloudProvider: gke
|
||||||
@@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com
|
|||||||
dotaiUiDomain: kubemcpui.example.com
|
dotaiUiDomain: kubemcpui.example.com
|
||||||
letsencryptEmail: admin@example.com # <- adjust
|
letsencryptEmail: admin@example.com # <- adjust
|
||||||
trustedIPs: "10.0.0.0/8,35.191.0.0/16,130.211.0.0/22" # <- subnet CIDR + GCP health checks
|
trustedIPs: "10.0.0.0/8,35.191.0.0/16,130.211.0.0/22" # <- subnet CIDR + GCP health checks
|
||||||
cloudProvider: gcp
|
cloudProvider: gke
|
||||||
@@ -134,12 +134,12 @@ launchpad/
|
|||||||
│ ├── overlays/ # Per-cluster Kustomize overrides
|
│ ├── overlays/ # Per-cluster Kustomize overrides
|
||||||
│ │ ├── upc-dev/ # UpCloud Dev (uses base as-is)
|
│ │ ├── upc-dev/ # UpCloud Dev (uses base as-is)
|
||||||
│ │ ├── upc-prod/ # UpCloud Prod (patches value paths)
|
│ │ ├── upc-prod/ # UpCloud Prod (patches value paths)
|
||||||
│ │ ├── aws-dev/ # AWS EKS Dev
|
│ │ ├── eks-dev/ # AWS EKS Dev
|
||||||
│ │ ├── aws-prod/ # AWS EKS Prod
|
│ │ ├── eks-prod/ # AWS EKS Prod
|
||||||
│ │ ├── aks-dev/ # Azure AKS Dev
|
│ │ ├── aks-dev/ # Azure AKS Dev
|
||||||
│ │ ├── aks-prod/ # Azure AKS Prod
|
│ │ ├── aks-prod/ # Azure AKS Prod
|
||||||
│ │ ├── gcp-dev/ # GCP GKE Dev
|
│ │ ├── gke-dev/ # GCP GKE Dev
|
||||||
│ │ └── gcp-prod/ # GCP GKE Prod
|
│ │ └── gke-prod/ # GCP GKE Prod
|
||||||
│ ├── dashboards/ # Grafana dashboard ConfigMaps
|
│ ├── dashboards/ # Grafana dashboard ConfigMaps
|
||||||
│ └── values/ # Helm value overrides for infra
|
│ └── values/ # Helm value overrides for infra
|
||||||
│ ├── base/ # Cloud-agnostic shared values
|
│ ├── base/ # Cloud-agnostic shared values
|
||||||
@@ -283,7 +283,7 @@ app-repository/
|
|||||||
### The App-of-Apps Pattern
|
### The App-of-Apps Pattern
|
||||||
|
|
||||||
```
|
```
|
||||||
_app-of-apps-{cluster}.yaml (Root, per cluster — e.g. upc-dev, aws-prod, gcp-dev)
|
_app-of-apps-{cluster}.yaml (Root, per cluster — e.g. upc-dev, eks-prod, gke-dev)
|
||||||
│
|
│
|
||||||
├── infrastructure-apps (manages infra/)
|
├── infrastructure-apps (manages infra/)
|
||||||
│ ├── cluster-resources-application
|
│ ├── cluster-resources-application
|
||||||
|
|||||||
@@ -55,8 +55,8 @@ git clone https://git.forteapps.net/Forte/launchpad
|
|||||||
cd launchpad
|
cd launchpad
|
||||||
|
|
||||||
# 2. Run bootstrap script with cluster target
|
# 2. Run bootstrap script with cluster target
|
||||||
# Available clusters: upc-dev, upc-prod, aws-dev, aws-prod,
|
# Available clusters: upc-dev, upc-prod, eks-dev, eks-prod,
|
||||||
# aks-dev, aks-prod, gcp-dev, gcp-prod
|
# aks-dev, aks-prod, gke-dev, gke-prod
|
||||||
./bootstrap.sh upc-dev
|
./bootstrap.sh upc-dev
|
||||||
|
|
||||||
# Cluster config is loaded from clusters/<cluster>.yaml
|
# Cluster config is loaded from clusters/<cluster>.yaml
|
||||||
@@ -1276,9 +1276,9 @@ spec:
|
|||||||
- ❌ Other persistent volumes (Prometheus, Loki, Tempo data)
|
- ❌ Other persistent volumes (Prometheus, Loki, Tempo data)
|
||||||
|
|
||||||
**Per-cloud backup scripts** (manual restore helpers):
|
**Per-cloud backup scripts** (manual restore helpers):
|
||||||
- UpCloud/AWS: `scripts/gitea-backup.sh` / `scripts/gitea-backup-aws.sh` (MinIO CLI, S3-compatible)
|
- UpCloud/AWS: `scripts/gitea-backup.sh` / `scripts/gitea-backup-eks.sh` (MinIO CLI, S3-compatible)
|
||||||
- Azure: `scripts/gitea-backup-aks.sh` (Azure CLI + Blob Storage)
|
- Azure: `scripts/gitea-backup-aks.sh` (Azure CLI + Blob Storage)
|
||||||
- GCP: `scripts/gitea-backup-gcp.sh` (gsutil + GCS)
|
- GCP: `scripts/gitea-backup-gke.sh` (gsutil + GCS)
|
||||||
|
|
||||||
### Cluster Rebuild
|
### Cluster Rebuild
|
||||||
|
|
||||||
@@ -1527,9 +1527,9 @@ The repository supports multiple clusters across multiple clouds via Kustomize o
|
|||||||
- **upc-prod**: `infra/overlays/upc-prod/` — patches value file paths from `upc-dev` to `upc-prod`
|
- **upc-prod**: `infra/overlays/upc-prod/` — patches value file paths from `upc-dev` to `upc-prod`
|
||||||
|
|
||||||
**Cloud-ready templates (fill in `clusters/*.yaml` before use):**
|
**Cloud-ready templates (fill in `clusters/*.yaml` before use):**
|
||||||
- **aws-dev** / **aws-prod**: AWS EKS with NLB, gp3 storage, AWS CUR pricing
|
- **eks-dev** / **eks-prod**: AWS EKS with NLB, gp3 storage, AWS CUR pricing
|
||||||
- **aks-dev** / **aks-prod**: Azure AKS with Standard LB, managed-csi-premium storage
|
- **aks-dev** / **aks-prod**: Azure AKS with Standard LB, managed-csi-premium storage
|
||||||
- **gcp-dev** / **gcp-prod**: GCP GKE with L4 LB, premium-rwo storage
|
- **gke-dev** / **gke-prod**: GCP GKE with L4 LB, premium-rwo storage
|
||||||
|
|
||||||
Each cluster has its own:
|
Each cluster has its own:
|
||||||
- Root app-of-apps: `_app-of-apps-{cluster}.yaml`
|
- Root app-of-apps: `_app-of-apps-{cluster}.yaml`
|
||||||
@@ -1548,7 +1548,7 @@ Cloud-specific values handled per-cluster:
|
|||||||
| **Cost monitoring** | Custom pricing | AWS CUR | Azure Billing API | GCP Cloud Billing |
|
| **Cost monitoring** | Custom pricing | AWS CUR | Azure Billing API | GCP Cloud Billing |
|
||||||
| **Backup storage** | UpCloud S3-compat | AWS S3 (native) | Azure Blob Storage | GCS |
|
| **Backup storage** | UpCloud S3-compat | AWS S3 (native) | Azure Blob Storage | GCS |
|
||||||
|
|
||||||
To add a new cluster, create a new overlay directory (e.g., `infra/overlays/aws-staging/`) with patches that swap the value file paths, and a matching `clusters/aws-staging.yaml`.
|
To add a new cluster, create a new overlay directory (e.g., `infra/overlays/eks-staging/`) with patches that swap the value file paths, and a matching `clusters/eks-staging.yaml`.
|
||||||
|
|
||||||
### Blue-Green Deployments
|
### Blue-Green Deployments
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|-----------|-------|
|
|-----------|-------|
|
||||||
| **Provider** | Multi-cloud (UpCloud, AWS EKS, Azure AKS, GCP GKE) |
|
| **Provider** | Multi-cloud (UpCloud, AWS EKS, Azure AKS, GCP GKE) |
|
||||||
| **Active clusters** | UpCloud (upc-dev, upc-prod) |
|
| **Active clusters** | UpCloud (upc-dev, upc-prod) |
|
||||||
| **Cloud-ready templates** | AWS, Azure, GCP (dev + prod each) |
|
| **Cloud-ready templates** | EKS, AKS, GKE (dev + prod each) |
|
||||||
| **GitOps Tool** | ArgoCD |
|
| **GitOps Tool** | ArgoCD |
|
||||||
| **Ingress Controller** | Traefik v2 |
|
| **Ingress Controller** | Traefik v2 |
|
||||||
| **Certificate Management** | Cert-Manager + Let's Encrypt |
|
| **Certificate Management** | Cert-Manager + Let's Encrypt |
|
||||||
|
|||||||
@@ -4,32 +4,32 @@ resources:
|
|||||||
- ../../base
|
- ../../base
|
||||||
|
|
||||||
patches:
|
patches:
|
||||||
# Traefik: swap upc-dev → gcp-dev
|
# Traefik: swap upc-dev → eks-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: traefik
|
name: traefik
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-dev/traefik-values.yaml
|
value: $values/infra/values/eks-dev/traefik-values.yaml
|
||||||
|
|
||||||
# Gitea: swap upc-dev → gcp-dev
|
# Gitea: swap upc-dev → eks-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: gitea
|
name: gitea
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-dev/gitea-values.yaml
|
value: $values/infra/values/eks-dev/gitea-values.yaml
|
||||||
|
|
||||||
# OpenCost: swap upc-dev → gcp-dev
|
# OpenCost: swap upc-dev → eks-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: opencost
|
name: opencost
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-dev/opencost-values.yaml
|
value: $values/infra/values/eks-dev/opencost-values.yaml
|
||||||
|
|
||||||
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
||||||
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
||||||
@@ -4,32 +4,32 @@ resources:
|
|||||||
- ../../base
|
- ../../base
|
||||||
|
|
||||||
patches:
|
patches:
|
||||||
# Traefik: swap upc-dev → gcp-prod
|
# Traefik: swap upc-dev → eks-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: traefik
|
name: traefik
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-prod/traefik-values.yaml
|
value: $values/infra/values/eks-prod/traefik-values.yaml
|
||||||
|
|
||||||
# Gitea: swap upc-dev → gcp-prod
|
# Gitea: swap upc-dev → eks-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: gitea
|
name: gitea
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-prod/gitea-values.yaml
|
value: $values/infra/values/eks-prod/gitea-values.yaml
|
||||||
|
|
||||||
# OpenCost: swap upc-dev → gcp-prod
|
# OpenCost: swap upc-dev → eks-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: opencost
|
name: opencost
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/gcp-prod/opencost-values.yaml
|
value: $values/infra/values/eks-prod/opencost-values.yaml
|
||||||
|
|
||||||
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
||||||
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
||||||
@@ -4,32 +4,32 @@ resources:
|
|||||||
- ../../base
|
- ../../base
|
||||||
|
|
||||||
patches:
|
patches:
|
||||||
# Traefik: swap upc-dev → aws-dev
|
# Traefik: swap upc-dev → gke-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: traefik
|
name: traefik
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-dev/traefik-values.yaml
|
value: $values/infra/values/gke-dev/traefik-values.yaml
|
||||||
|
|
||||||
# Gitea: swap upc-dev → aws-dev
|
# Gitea: swap upc-dev → gke-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: gitea
|
name: gitea
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-dev/gitea-values.yaml
|
value: $values/infra/values/gke-dev/gitea-values.yaml
|
||||||
|
|
||||||
# OpenCost: swap upc-dev → aws-dev
|
# OpenCost: swap upc-dev → gke-dev
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: opencost
|
name: opencost
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-dev/opencost-values.yaml
|
value: $values/infra/values/gke-dev/opencost-values.yaml
|
||||||
|
|
||||||
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
||||||
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
||||||
@@ -4,32 +4,32 @@ resources:
|
|||||||
- ../../base
|
- ../../base
|
||||||
|
|
||||||
patches:
|
patches:
|
||||||
# Traefik: swap upc-dev → aws-prod
|
# Traefik: swap upc-dev → gke-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: traefik
|
name: traefik
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-prod/traefik-values.yaml
|
value: $values/infra/values/gke-prod/traefik-values.yaml
|
||||||
|
|
||||||
# Gitea: swap upc-dev → aws-prod
|
# Gitea: swap upc-dev → gke-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: gitea
|
name: gitea
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-prod/gitea-values.yaml
|
value: $values/infra/values/gke-prod/gitea-values.yaml
|
||||||
|
|
||||||
# OpenCost: swap upc-dev → aws-prod
|
# OpenCost: swap upc-dev → gke-prod
|
||||||
- target:
|
- target:
|
||||||
kind: Application
|
kind: Application
|
||||||
name: opencost
|
name: opencost
|
||||||
patch: |
|
patch: |
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /spec/sources/0/helm/valueFiles/1
|
path: /spec/sources/0/helm/valueFiles/1
|
||||||
value: $values/infra/values/aws-prod/opencost-values.yaml
|
value: $values/infra/values/gke-prod/opencost-values.yaml
|
||||||
|
|
||||||
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
# TODO: add patches for keycloak, grafana, secrets, enterprise-apps
|
||||||
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
# when deploying to this cluster (these are deployment-specific, not cloud-specific)
|
||||||
6
scripts/gitea-backup-aws.sh → scripts/gitea-backup-eks.sh
Executable file → Normal file
6
scripts/gitea-backup-aws.sh → scripts/gitea-backup-eks.sh
Executable file → Normal file
@@ -8,9 +8,9 @@ set -euo pipefail
|
|||||||
# For AWS, S3_ENDPOINT is typically https://s3.<region>.amazonaws.com
|
# For AWS, S3_ENDPOINT is typically https://s3.<region>.amazonaws.com
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./scripts/gitea-backup-aws.sh list # list all backups
|
# ./scripts/gitea-backup-eks.sh list # list all backups
|
||||||
# ./scripts/gitea-backup-aws.sh download <filename> # download a backup to current dir
|
# ./scripts/gitea-backup-eks.sh download <filename> # download a backup to current dir
|
||||||
# ./scripts/gitea-backup-aws.sh download latest # download the most recent backup
|
# ./scripts/gitea-backup-eks.sh download latest # download the most recent backup
|
||||||
|
|
||||||
NAMESPACE="gitea"
|
NAMESPACE="gitea"
|
||||||
SECRET="gitea-backup-s3"
|
SECRET="gitea-backup-s3"
|
||||||
6
scripts/gitea-backup-gcp.sh → scripts/gitea-backup-gke.sh
Executable file → Normal file
6
scripts/gitea-backup-gcp.sh → scripts/gitea-backup-gke.sh
Executable file → Normal file
@@ -9,9 +9,9 @@ set -euo pipefail
|
|||||||
# (alternatively, use Workload Identity and omit the key)
|
# (alternatively, use Workload Identity and omit the key)
|
||||||
#
|
#
|
||||||
# Usage:
|
# Usage:
|
||||||
# ./scripts/gitea-backup-gcp.sh list # list all backups
|
# ./scripts/gitea-backup-gke.sh list # list all backups
|
||||||
# ./scripts/gitea-backup-gcp.sh download <filename> # download a backup
|
# ./scripts/gitea-backup-gke.sh download <filename> # download a backup
|
||||||
# ./scripts/gitea-backup-gcp.sh download latest # download the most recent backup
|
# ./scripts/gitea-backup-gke.sh download latest # download the most recent backup
|
||||||
|
|
||||||
NAMESPACE="gitea"
|
NAMESPACE="gitea"
|
||||||
SECRET="gitea-backup-gcs"
|
SECRET="gitea-backup-gcs"
|
||||||
Reference in New Issue
Block a user