{"id":48229072,"url":"https://github.com/controlplaneio-fluxcd/d1-apps","last_synced_at":"2026-04-04T19:29:11.499Z","repository":{"id":223460151,"uuid":"759753741","full_name":"controlplaneio-fluxcd/d1-apps","owner":"controlplaneio-fluxcd","description":"Example repository for GitOps-driven application delivery with Flux","archived":false,"fork":false,"pushed_at":"2026-03-23T08:22:40.000Z","size":170,"stargazers_count":9,"open_issues_count":1,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-03-24T05:50:16.629Z","etag":null,"topics":["fluxcd","gitops"],"latest_commit_sha":null,"homepage":"https://control-plane.io/enterprise-for-flux-cd/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/controlplaneio-fluxcd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-19T09:18:38.000Z","updated_at":"2026-03-23T08:22:43.000Z","dependencies_parsed_at":"2024-04-24T00:28:05.968Z","dependency_job_id":"dda4df0e-06c2-42be-8bb2-a713888d628d","html_url":"https://github.com/controlplaneio-fluxcd/d1-apps","commit_stats":null,"previous_names":["controlplaneio-fluxcd/d1-apps"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/controlplaneio-fluxcd/d1-apps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controlplaneio-fluxcd%2Fd1-apps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controlplaneio-fluxcd%2Fd1-apps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controlplaneio-fluxcd%2Fd1-apps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controlplaneio-fluxcd%2Fd1-apps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/controlplaneio-fluxcd","download_url":"https://codeload.github.com/controlplaneio-fluxcd/d1-apps/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/controlplaneio-fluxcd%2Fd1-apps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31410680,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fluxcd","gitops"],"created_at":"2026-04-04T19:29:11.262Z","updated_at":"2026-04-04T19:29:11.490Z","avatar_url":"https://github.com/controlplaneio-fluxcd.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# d1-apps\n\n\u003e [!NOTE]\n\u003e This repository is part of the reference architecture for the\n\u003e [ControlPlane Enterprise for Flux CD](https://github.com/controlplaneio-fluxcd/distribution).\n\u003e\n\u003e The `d1` reference architecture comprised of\n\u003e [d1-fleet](https://github.com/controlplaneio-fluxcd/d1-fleet),\n\u003e [d1-infra](https://github.com/controlplaneio-fluxcd/d1-infra) and\n\u003e [d1-apps](https://github.com/controlplaneio-fluxcd/d1-infra)\n\u003e is a set of best practices and production-ready examples for using Flux\n\u003e to manage the continuous delivery of Kubernetes infrastructure and\n\u003e applications on multi-cluster multi-tenant environments.\n\n## Scope and Access Control\n\nThis repository is managed by the dev teams who are responsible for\nthe delivery of applications to the Kubernetes cluster fleet.\n\nThis repository is used to define the application components such as:\n\n- Flux HelmRepositories (pointing to the application Helm charts in container registries)\n- Flux HelmReleases for the applications with custom configuration per environment\n\nThis repository is reconciled on the cluster fleet by Flux as the **namespace admin**\nand can't contain Kubernetes cluster-wide definitions such as CRDs, Cluster Roles, Namespaces, etc.\n\nThe platform team that manages the [d1-fleet repository](https://github.com/controlplaneio-fluxcd/d1-fleet)\nis responsible for assigning the namespaces to the dev teams and configuring Flux with the\nnecessary RBAC to reconcile the `d1-apps` repository across the cluster fleet.\n\nThe platform team is also responsible for setting up any cluster-wide resources that the applications\ndepend on, such as CRD controllers, Ingress classes, Storage classes, etc. The cluster components\nmanaged by the platform team are defined in the\n[d1-infra repository](https://github.com/controlplaneio-fluxcd/d1-infra).\n\nAccess to this repository is restricted to the dev teams and the\n[Flux bot account](https://github.com/controlplaneio-fluxcd/d1-fleet?tab=readme-ov-file#create-a-github-account-for-flux).\nThe Flux bot should be the only account with direct push access to the `main` branch.\n\n## Repository Structure\n\nThis repository contains the following directories:\n\n- The **components** dir contains Flux HelmReleases that define how the applications\n  are deployed to the cluster fleet and which configuration should be used for each environment.\n- The **update** dir contains the Flux policies for automating the application's\n  version updates of the OCI charts referred in Helm releases.\n\nThe application components are grouped by namespace, and are defined in a directory with the following structure:\n\n```sh\n./components/\n└── namespace\n    ├── base\n    │   ├── kustomization.yaml\n    │   └── release1.yaml\n    │   └── release2.yaml\n    ├── production\n    │   ├── kustomization.yaml\n    │   ├── release1-values.yaml\n    │   └── release2-values.yaml\n    └── staging\n        ├── kustomization.yaml\n        ├── release1-values.yaml\n        └── release2-values.yaml\n```\n\nEach namespace is independently reconciled on clusters and can\ncontain multiple HelmReleases with custom configuration per environment.\n\n## Continuous Delivery\n\nTo prevent reconciliation errors due to malformed YAML manifests or invalid Kubernetes definitions,\nchanges to the `main` branch should be made through pull requests. On pull requests, a GitHub Action\nruns that downloads the Flux OpenAPI schemas, and validates the custom resources and the kustomize\noverlays using `kubeconform`.\n\nChanges to the `main` branch are automatically reconciled by Flux on the staging cluster.\n\nAfter the changes are reconciled on staging, the dev team can promote the changes\nto the production clusters by merging the `main` branch into the `production` branch.\n\n## Helm Release Automation\n\nThe staging cluster runs the Flux image automation controllers which automatically\nupdate the HelmRelease definitions with the latest chart version.\n\nThe update policies are defined in the `./update` directory:\n\n```shell\n./update/\n├── backend-memcached.yaml\n├── backend-redis.yaml\n├── frontend-podinfo.yaml\n└── kustomization.yaml\n```\n\nWhen a new chart version is pushed to the container registry, and if it matches the semver policy,\nFlux will update the HelmRelease YAML definitions and will push the changes to the `main` branch.\nThen it will upgrade the Helm releases to the new version to the staging cluster.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontrolplaneio-fluxcd%2Fd1-apps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontrolplaneio-fluxcd%2Fd1-apps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontrolplaneio-fluxcd%2Fd1-apps/lists"}