Architectural Overview¶
See below diagram with an architectural overview of CloudKnit.
Environment Definition¶
It allows you to define entire Environment. We currently support easy to use YAML format for the environment definition.
See example below:
Environment Definition
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: git@github.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: git@github.com: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: git@github.com:helm/examples.git
path: charts/hello-world
variables:
- name: environment
value: prod-blue
Intermediate Language¶
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¶
ArgoCD is used to watch Environment Definition & Intermediate Language Github repositories.
Argo Workflow¶
Argo Workflow is used to run each component of the environment in the correct order and provides features like manual approval/cost estimates etc.