See below diagram with an architectural overview of CloudKnit.
It allows you to define entire Environment. We currently support easy to use YAML format for the environment definition.
See example below:
apiVersion: stable.cloudknit.com/v1 kind: Environment metadata: name: zmart-payment-prod-blue namespace: zmart-config spec: teamName: payment envName: prod-blue components: - name: networking type: terraform autoApprove: true module: source: email@example.com:terraform-aws-modules/terraform-aws-vpc.git variablesFile: path: "prod-blue/vars/networking.tfvars" outputs: - name: vpc_id - name: platform-eks type: terraform dependsOn: [networking] module: source: firstname.lastname@example.org:terraform-aws-modules/terraform-aws-eks.git variables: - name: vpc_id valueFrom: networking.vpc_id variablesFile: path: "prod-blue/vars/platform-eks.tfvars" - name: website type: helm #Native support for helm chart coming soon dependsOn: [platform-eks] source: repo: email@example.com:helm/examples.git path: charts/hello-world variables: - name: environment value: prod-blue
Intermediate Language consists of code generated by k8s operator based on the Environment Definition. Generated code consists of ArgoCD, Argo Workflow & Terraform/Helm code.
ArgoCD is used to watch Environment Definition & Intermediate Language Github repositories.
Argo Workflow is used to run each component of the environment in the correct order and provides features like manual approval/cost estimates etc.