Skip to content

Latest commit

 

History

History
61 lines (53 loc) · 2.3 KB

README.md

File metadata and controls

61 lines (53 loc) · 2.3 KB

This Repo

This monorepository is part of my Bachelor's Thesis. It holds different configuration files all related to Kubernetes, ArgoCD, Terraform and Crossplane. Its primary use is to compare Crossplane and Terraform by implementing the same EKS Setup with each of them. The Setups then point to the directories in this Repository via ArgoCD Applications.

It also has an Implementation of a 'Tenant'-Ressource for Kubernetes in Crossplane. This ressource contains all the ressources to enable a team to deploy into a specific namespace on a cluster.

This repo can also serve as an example for using Crossplane, Terraform and ArgoCD.

This is the directory structure:

.
├── clustertools
│   ├── crossplane
│   │   └── xrs
│   │       ├── eks_setup
│   │       └── tenant
│   └── external-secrets
├── remote_repos
│   ├── remote_repo_team_1
│   │   ├── base
│   │   └── overlays
│   │       ├── dev
│   │       └── prod
│   └── remote_repo_team_2
│       ├── base
│       └── overlays
│           ├── dev
│           └── prod
├── root
│   ├── base
│   └── overlays
│       ├── dev
│       └── prod
├── tenants
└── terraform
          ├── terraform_my_eks
          │   └── argocd_config
          └── workspaces
              ├── int
              └── prod

The Terraform directory contains the EKS Setup in Terraform.

The root directory contains 2 ArgoCD ApplicationSets further configured by kustomize. One ApplicationSet applies the resources of the clustertools folder, the other will create the applications based on the config files in the tenants folder. They again point to this same repo and the folder remote_repos.

Under clustertools/crossplane/xrs/eks_setup a Crossplane Composite Resource is defined and composed. This XR describes the same resources as the Terraform Setup.

The Tenant ressource lies in clustertools/crossplane/xrs/tenant.

On a high level, the folders point to each other via ArgoCD Applications like so:

(terraform|crossplane) -> root -> clustertools
(terraform|crossplane) -> root -> tenants -> remote_repos