diff --git a/README.md b/README.md index 0727622..b560f46 100644 --- a/README.md +++ b/README.md @@ -98,23 +98,23 @@ This repository contains the complete GitOps configuration for our Kubernetes cl │ ├── overlays/ # Per-cluster overrides (Kustomize) │ │ ├── upc-dev/ # UpCloud Dev (uses base as-is) │ │ ├── upc-prod/ # UpCloud Prod (patches value paths) -│ │ ├── aws-dev/ # AWS EKS Dev -│ │ ├── aws-prod/ # AWS EKS Prod +│ │ ├── eks-dev/ # AWS EKS Dev +│ │ ├── eks-prod/ # AWS EKS Prod │ │ ├── aks-dev/ # Azure AKS Dev │ │ ├── aks-prod/ # Azure AKS Prod -│ │ ├── gcp-dev/ # GCP GKE Dev -│ │ └── gcp-prod/ # GCP GKE 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 -│ ├── aws-dev/ # AWS EKS Dev -│ ├── aws-prod/ # AWS EKS Prod +│ ├── eks-dev/ # AWS EKS Dev +│ ├── eks-prod/ # AWS EKS Prod │ ├── aks-dev/ # Azure AKS Dev │ ├── aks-prod/ # Azure AKS Prod -│ ├── gcp-dev/ # GCP GKE Dev -│ └── gcp-prod/ # GCP GKE Prod +│ ├── gke-dev/ # GCP GKE Dev +│ └── gke-prod/ # GCP GKE Prod │ ├── apps/ # Business Applications │ ├── mcp10x.yaml @@ -373,7 +373,7 @@ kubectl patch application myapp -n argocd \ ## 📖 Key Concepts ### 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 Applications reference both: diff --git a/_app-of-apps-aws-dev.yaml b/_app-of-apps-eks-dev.yaml similarity index 95% rename from _app-of-apps-aws-dev.yaml rename to _app-of-apps-eks-dev.yaml index fa364c8..f40e164 100644 --- a/_app-of-apps-aws-dev.yaml +++ b/_app-of-apps-eks-dev.yaml @@ -20,7 +20,7 @@ spec: source: repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git targetRevision: HEAD - path: infra/overlays/aws-dev + path: infra/overlays/eks-dev destination: server: https://kubernetes.default.svc namespace: default diff --git a/_app-of-apps-aws-prod.yaml b/_app-of-apps-eks-prod.yaml similarity index 95% rename from _app-of-apps-aws-prod.yaml rename to _app-of-apps-eks-prod.yaml index 9922276..29337cb 100644 --- a/_app-of-apps-aws-prod.yaml +++ b/_app-of-apps-eks-prod.yaml @@ -20,7 +20,7 @@ spec: source: repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git targetRevision: HEAD - path: infra/overlays/aws-prod + path: infra/overlays/eks-prod destination: server: https://kubernetes.default.svc namespace: default diff --git a/_app-of-apps-gcp-dev.yaml b/_app-of-apps-gke-dev.yaml similarity index 95% rename from _app-of-apps-gcp-dev.yaml rename to _app-of-apps-gke-dev.yaml index d3ed8f7..faf753c 100644 --- a/_app-of-apps-gcp-dev.yaml +++ b/_app-of-apps-gke-dev.yaml @@ -20,7 +20,7 @@ spec: source: repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git targetRevision: HEAD - path: infra/overlays/gcp-dev + path: infra/overlays/gke-dev destination: server: https://kubernetes.default.svc namespace: default diff --git a/_app-of-apps-gcp-prod.yaml b/_app-of-apps-gke-prod.yaml similarity index 95% rename from _app-of-apps-gcp-prod.yaml rename to _app-of-apps-gke-prod.yaml index 51b3b90..874cebd 100644 --- a/_app-of-apps-gcp-prod.yaml +++ b/_app-of-apps-gke-prod.yaml @@ -20,7 +20,7 @@ spec: source: repoURL: ssh://git@git.forteapps.net:2222/Forte/launchpad.git targetRevision: HEAD - path: infra/overlays/gcp-prod + path: infra/overlays/gke-prod destination: server: https://kubernetes.default.svc namespace: default diff --git a/clusters/aws-dev.yaml b/clusters/eks-dev.yaml similarity index 95% rename from clusters/aws-dev.yaml rename to clusters/eks-dev.yaml index 02f3034..55ffa95 100644 --- a/clusters/aws-dev.yaml +++ b/clusters/eks-dev.yaml @@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com dotaiUiDomain: kubemcpui.example.com letsencryptEmail: admin@example.com # <- adjust trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR -cloudProvider: aws +cloudProvider: eks diff --git a/clusters/aws-prod.yaml b/clusters/eks-prod.yaml similarity index 95% rename from clusters/aws-prod.yaml rename to clusters/eks-prod.yaml index c5973f9..8dcfc90 100644 --- a/clusters/aws-prod.yaml +++ b/clusters/eks-prod.yaml @@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com dotaiUiDomain: kubemcpui.example.com letsencryptEmail: admin@example.com # <- adjust trustedIPs: "10.0.0.0/8" # <- adjust to your VPC CIDR -cloudProvider: aws +cloudProvider: eks diff --git a/clusters/gcp-dev.yaml b/clusters/gke-dev.yaml similarity index 95% rename from clusters/gcp-dev.yaml rename to clusters/gke-dev.yaml index 43f3861..2bd2801 100644 --- a/clusters/gcp-dev.yaml +++ b/clusters/gke-dev.yaml @@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com dotaiUiDomain: kubemcpui.example.com 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 -cloudProvider: gcp +cloudProvider: gke diff --git a/clusters/gcp-prod.yaml b/clusters/gke-prod.yaml similarity index 95% rename from clusters/gcp-prod.yaml rename to clusters/gke-prod.yaml index ec814f7..7d8740f 100644 --- a/clusters/gcp-prod.yaml +++ b/clusters/gke-prod.yaml @@ -7,4 +7,4 @@ dotaiDomain: kubemcp.example.com dotaiUiDomain: kubemcpui.example.com 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 -cloudProvider: gcp +cloudProvider: gke diff --git a/docs/GITOPS-ARCHITECTURE.md b/docs/GITOPS-ARCHITECTURE.md index 3105321..b199cc8 100644 --- a/docs/GITOPS-ARCHITECTURE.md +++ b/docs/GITOPS-ARCHITECTURE.md @@ -134,12 +134,12 @@ launchpad/ │ ├── overlays/ # Per-cluster Kustomize overrides │ │ ├── upc-dev/ # UpCloud Dev (uses base as-is) │ │ ├── upc-prod/ # UpCloud Prod (patches value paths) -│ │ ├── aws-dev/ # AWS EKS Dev -│ │ ├── aws-prod/ # AWS EKS Prod +│ │ ├── eks-dev/ # AWS EKS Dev +│ │ ├── eks-prod/ # AWS EKS Prod │ │ ├── aks-dev/ # Azure AKS Dev │ │ ├── aks-prod/ # Azure AKS Prod -│ │ ├── gcp-dev/ # GCP GKE Dev -│ │ └── gcp-prod/ # GCP GKE Prod +│ │ ├── gke-dev/ # GCP GKE Dev +│ │ └── gke-prod/ # GCP GKE Prod │ ├── dashboards/ # Grafana dashboard ConfigMaps │ └── values/ # Helm value overrides for infra │ ├── base/ # Cloud-agnostic shared values @@ -283,7 +283,7 @@ app-repository/ ### 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/) │ ├── cluster-resources-application diff --git a/docs/OPERATIONS-RUNBOOK.md b/docs/OPERATIONS-RUNBOOK.md index 8d0f101..586a806 100644 --- a/docs/OPERATIONS-RUNBOOK.md +++ b/docs/OPERATIONS-RUNBOOK.md @@ -55,8 +55,8 @@ git clone https://git.forteapps.net/Forte/launchpad cd launchpad # 2. Run bootstrap script with cluster target -# Available clusters: upc-dev, upc-prod, aws-dev, aws-prod, -# aks-dev, aks-prod, gcp-dev, gcp-prod +# Available clusters: upc-dev, upc-prod, eks-dev, eks-prod, +# aks-dev, aks-prod, gke-dev, gke-prod ./bootstrap.sh upc-dev # Cluster config is loaded from clusters/.yaml @@ -1276,9 +1276,9 @@ spec: - ❌ Other persistent volumes (Prometheus, Loki, Tempo data) **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) -- GCP: `scripts/gitea-backup-gcp.sh` (gsutil + GCS) +- GCP: `scripts/gitea-backup-gke.sh` (gsutil + GCS) ### 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` **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 -- **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: - 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 | | **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 diff --git a/docs/REFERENCE.md b/docs/REFERENCE.md index 50ba6b3..029cdda 100644 --- a/docs/REFERENCE.md +++ b/docs/REFERENCE.md @@ -21,7 +21,7 @@ |-----------|-------| | **Provider** | Multi-cloud (UpCloud, AWS EKS, Azure AKS, GCP GKE) | | **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 | | **Ingress Controller** | Traefik v2 | | **Certificate Management** | Cert-Manager + Let's Encrypt | diff --git a/infra/overlays/gcp-dev/kustomization.yaml b/infra/overlays/eks-dev/kustomization.yaml similarity index 68% rename from infra/overlays/gcp-dev/kustomization.yaml rename to infra/overlays/eks-dev/kustomization.yaml index 491065e..c8690bf 100644 --- a/infra/overlays/gcp-dev/kustomization.yaml +++ b/infra/overlays/eks-dev/kustomization.yaml @@ -4,32 +4,32 @@ resources: - ../../base patches: -# Traefik: swap upc-dev → gcp-dev +# Traefik: swap upc-dev → eks-dev - target: kind: Application name: traefik patch: | - op: replace 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: kind: Application name: gitea patch: | - op: replace 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: kind: Application name: opencost patch: | - op: replace 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 # when deploying to this cluster (these are deployment-specific, not cloud-specific) diff --git a/infra/overlays/gcp-prod/kustomization.yaml b/infra/overlays/eks-prod/kustomization.yaml similarity index 67% rename from infra/overlays/gcp-prod/kustomization.yaml rename to infra/overlays/eks-prod/kustomization.yaml index 9971aa9..7ab683d 100644 --- a/infra/overlays/gcp-prod/kustomization.yaml +++ b/infra/overlays/eks-prod/kustomization.yaml @@ -4,32 +4,32 @@ resources: - ../../base patches: -# Traefik: swap upc-dev → gcp-prod +# Traefik: swap upc-dev → eks-prod - target: kind: Application name: traefik patch: | - op: replace 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: kind: Application name: gitea patch: | - op: replace 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: kind: Application name: opencost patch: | - op: replace 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 # when deploying to this cluster (these are deployment-specific, not cloud-specific) diff --git a/infra/overlays/aws-dev/kustomization.yaml b/infra/overlays/gke-dev/kustomization.yaml similarity index 68% rename from infra/overlays/aws-dev/kustomization.yaml rename to infra/overlays/gke-dev/kustomization.yaml index 4be71fc..147bb76 100644 --- a/infra/overlays/aws-dev/kustomization.yaml +++ b/infra/overlays/gke-dev/kustomization.yaml @@ -4,32 +4,32 @@ resources: - ../../base patches: -# Traefik: swap upc-dev → aws-dev +# Traefik: swap upc-dev → gke-dev - target: kind: Application name: traefik patch: | - op: replace 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: kind: Application name: gitea patch: | - op: replace 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: kind: Application name: opencost patch: | - op: replace 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 # when deploying to this cluster (these are deployment-specific, not cloud-specific) diff --git a/infra/overlays/aws-prod/kustomization.yaml b/infra/overlays/gke-prod/kustomization.yaml similarity index 67% rename from infra/overlays/aws-prod/kustomization.yaml rename to infra/overlays/gke-prod/kustomization.yaml index ce22faf..d040c85 100644 --- a/infra/overlays/aws-prod/kustomization.yaml +++ b/infra/overlays/gke-prod/kustomization.yaml @@ -4,32 +4,32 @@ resources: - ../../base patches: -# Traefik: swap upc-dev → aws-prod +# Traefik: swap upc-dev → gke-prod - target: kind: Application name: traefik patch: | - op: replace 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: kind: Application name: gitea patch: | - op: replace 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: kind: Application name: opencost patch: | - op: replace 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 # when deploying to this cluster (these are deployment-specific, not cloud-specific) diff --git a/infra/values/aws-dev/gitea-values.yaml b/infra/values/eks-dev/gitea-values.yaml similarity index 100% rename from infra/values/aws-dev/gitea-values.yaml rename to infra/values/eks-dev/gitea-values.yaml diff --git a/infra/values/aws-dev/opencost-values.yaml b/infra/values/eks-dev/opencost-values.yaml similarity index 100% rename from infra/values/aws-dev/opencost-values.yaml rename to infra/values/eks-dev/opencost-values.yaml diff --git a/infra/values/aws-dev/traefik-values.yaml b/infra/values/eks-dev/traefik-values.yaml similarity index 100% rename from infra/values/aws-dev/traefik-values.yaml rename to infra/values/eks-dev/traefik-values.yaml diff --git a/infra/values/aws-prod/gitea-values.yaml b/infra/values/eks-prod/gitea-values.yaml similarity index 100% rename from infra/values/aws-prod/gitea-values.yaml rename to infra/values/eks-prod/gitea-values.yaml diff --git a/infra/values/aws-prod/opencost-values.yaml b/infra/values/eks-prod/opencost-values.yaml similarity index 100% rename from infra/values/aws-prod/opencost-values.yaml rename to infra/values/eks-prod/opencost-values.yaml diff --git a/infra/values/aws-prod/traefik-values.yaml b/infra/values/eks-prod/traefik-values.yaml similarity index 100% rename from infra/values/aws-prod/traefik-values.yaml rename to infra/values/eks-prod/traefik-values.yaml diff --git a/infra/values/gcp-dev/gitea-values.yaml b/infra/values/gke-dev/gitea-values.yaml similarity index 100% rename from infra/values/gcp-dev/gitea-values.yaml rename to infra/values/gke-dev/gitea-values.yaml diff --git a/infra/values/gcp-dev/opencost-values.yaml b/infra/values/gke-dev/opencost-values.yaml similarity index 100% rename from infra/values/gcp-dev/opencost-values.yaml rename to infra/values/gke-dev/opencost-values.yaml diff --git a/infra/values/gcp-dev/traefik-values.yaml b/infra/values/gke-dev/traefik-values.yaml similarity index 100% rename from infra/values/gcp-dev/traefik-values.yaml rename to infra/values/gke-dev/traefik-values.yaml diff --git a/infra/values/gcp-prod/gitea-values.yaml b/infra/values/gke-prod/gitea-values.yaml similarity index 100% rename from infra/values/gcp-prod/gitea-values.yaml rename to infra/values/gke-prod/gitea-values.yaml diff --git a/infra/values/gcp-prod/opencost-values.yaml b/infra/values/gke-prod/opencost-values.yaml similarity index 100% rename from infra/values/gcp-prod/opencost-values.yaml rename to infra/values/gke-prod/opencost-values.yaml diff --git a/infra/values/gcp-prod/traefik-values.yaml b/infra/values/gke-prod/traefik-values.yaml similarity index 100% rename from infra/values/gcp-prod/traefik-values.yaml rename to infra/values/gke-prod/traefik-values.yaml diff --git a/scripts/gitea-backup-aws.sh b/scripts/gitea-backup-eks.sh old mode 100755 new mode 100644 similarity index 93% rename from scripts/gitea-backup-aws.sh rename to scripts/gitea-backup-eks.sh index ebf0894..c4c5c02 --- a/scripts/gitea-backup-aws.sh +++ b/scripts/gitea-backup-eks.sh @@ -8,9 +8,9 @@ set -euo pipefail # For AWS, S3_ENDPOINT is typically https://s3..amazonaws.com # # Usage: -# ./scripts/gitea-backup-aws.sh list # list all backups -# ./scripts/gitea-backup-aws.sh download # download a backup to current dir -# ./scripts/gitea-backup-aws.sh download latest # download the most recent backup +# ./scripts/gitea-backup-eks.sh list # list all backups +# ./scripts/gitea-backup-eks.sh download # download a backup to current dir +# ./scripts/gitea-backup-eks.sh download latest # download the most recent backup NAMESPACE="gitea" SECRET="gitea-backup-s3" diff --git a/scripts/gitea-backup-gcp.sh b/scripts/gitea-backup-gke.sh old mode 100755 new mode 100644 similarity index 94% rename from scripts/gitea-backup-gcp.sh rename to scripts/gitea-backup-gke.sh index 54fb7ef..bfed6b6 --- a/scripts/gitea-backup-gcp.sh +++ b/scripts/gitea-backup-gke.sh @@ -9,9 +9,9 @@ set -euo pipefail # (alternatively, use Workload Identity and omit the key) # # Usage: -# ./scripts/gitea-backup-gcp.sh list # list all backups -# ./scripts/gitea-backup-gcp.sh download # download a backup -# ./scripts/gitea-backup-gcp.sh download latest # download the most recent backup +# ./scripts/gitea-backup-gke.sh list # list all backups +# ./scripts/gitea-backup-gke.sh download # download a backup +# ./scripts/gitea-backup-gke.sh download latest # download the most recent backup NAMESPACE="gitea" SECRET="gitea-backup-gcs"