Need Advice: Bitbucket Helm Repo Structure for Multi-Service K8s Project + Shared Infra (ArgoCD, Vault, Cert-Manager, etc.)

Hey everyone

I’m looking for some advice on how to organize our **Helm charts and Bitbucket repos** for a growing **Kubernetes** setup.

---

### Current setup

We currently have **one main Bitbucket repo** that contains everything —
about **30 microservices** **and** several **infra-related services** (like ArgoCD, Vault, Cert-Manager, etc.).

For our **application layer**, we have a **common base Helm chart** that’s used only for microservices.
It defines shared Kubernetes objects like Deployments, Services, ConfigMaps, and Secrets. We dont have different repo for each microservice.

Here’s a simplified view of the repo structure:

```
app/
├── project-argocd/
│   ├── charts/
│   └── values.yaml 
├── project-vault/
│   ├── charts/
│   └── values.yaml
│
├── project-chart/               # Base chart used only for microservices
│   ├── basechart/
│   │   ├── templates/
│   │   └── Chart.yaml
│   ├── templates/
│   ├── Chart.yaml               # Defines multiple services as dependencies using basechart
│   └── values/
│       ├── cluster1/
│       │   ├── service1/
│       │   │   └── values.yaml
│       │   └── service2/
│       │       └── values.yaml
│       └── values.yaml
│
│       # Each values file under 'values/' is synced to clusters via ArgoCD
│       # using an ApplicationSet for automated multi-cluster deployments
```

---

The following **infra services** are also in the same repo right now:

* **ArgoCD**
* **HashiCorp Vault**
* **Cert-Manager**
* **Project Contour (Ingress)**
* *(and other cluster-level tools like k3s, Longhorn, etc.)*

These are **not tied to the application project** — they’re shared and deployed across **multiple clusters and environments**.

---

### Questions

1. Should I move these shared infra components into a **separate “infra” Bitbucket repo** (including their Helm charts, Terraform, and Ansible configs)?
2. For GitOps with **ArgoCD**, would it make more sense to split things like this:

   * **“apps” repo** → all microservices + base Helm chart
   * **“infra” repo** → cluster-level services (ArgoCD, Vault, Cert-Manager, Longhorn, etc.)
3. How do other teams handle **shared Helm dependencies** like this base chart across multiple services or clusters?

---

Disclaimer: use ai to generate reddit post. for solving grammar error and ease of understanding.

Posted Nov 1, 2025, 1:11 PM UTC

10
Loading comments…