Skip to content

Latest commit

 

History

History
48 lines (39 loc) · 2.55 KB

project-structure.md

File metadata and controls

48 lines (39 loc) · 2.55 KB

cndi project structure 📂

When cndi create is called it bootstraps the following files and folders:

  1. a cndi_config.yaml - this file is the core of your CNDI project, for more details we have a dedicated cndi_config Guide. In short, it contains all of the ingredients for your project. It describes the hardware you will use, the software you will install, and how it should be configured. If you understand this file, you understand CNDI.

  2. a .env file which contains all of your sensitive values that CNDI will use, this includes secret values to be used in your cluster, and credentials to be used during deployment consumed by cndi run. The syntax of this file is sometimes refered to as dotenv.

  3. a ./README.md file that explains how you can use your new project repository, with information about your Template and where it is being deployed

  4. a .github/workflows folder, with a GitHub Action Workflow inside. The workflow is mostly just wrapping the cndi run command from the cndi binary executable. As such, if you use a different CI system, you can call the cndi run command there instead. The workflow is configured to run on every push to the main branch.

  5. a cndi/terraform folder, containing files that CNDI has generated for terraform which describe the infrastructure to be deployed, which CNDI will apply automatically when cndi run is executed.

  6. a cndi/cluster_manifests folder, containing Kubernetes manifests that will be applied by ArgoCD in your new cluster when it is up and running. This includes manifests like the 'Ingress', likely already present the cluster_manifests section of your cndi_config.yaml.

  7. a cndi/cluster_manifests/applications folder, which contains a folder for each Application defined in the applications section of your cndi_config.yaml alongside a number of core applications like cert-manager, external-dns, reloader, and nginx-ingress

  8. a .gitginore file to ensure secret values never get published as source files to your repo