{"id":13572579,"url":"https://github.com/cloudknit-io/cloudknit","last_synced_at":"2025-04-04T10:31:04.322Z","repository":{"id":62973552,"uuid":"309465342","full_name":"cloudknit-io/cloudknit","owner":"cloudknit-io","description":"Self-service management of complex Cloud Environments","archived":false,"fork":false,"pushed_at":"2025-01-24T04:01:52.000Z","size":112309,"stargazers_count":96,"open_issues_count":1,"forks_count":6,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-01-24T05:17:37.780Z","etag":null,"topics":["aws","cloud","cloud-native","devops","environment-as-code","infrastructure","infrastructure-as-code","kubernetes","terraform"],"latest_commit_sha":null,"homepage":"https://cloudknit.io","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudknit-io.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":"CODEOWNERS","security":null,"support":null,"governance":null}},"created_at":"2020-11-02T18:50:32.000Z","updated_at":"2025-01-24T04:01:57.000Z","dependencies_parsed_at":"2023-07-22T06:48:33.823Z","dependency_job_id":"f24779ae-a2da-4b7e-990a-819eed9b0cbc","html_url":"https://github.com/cloudknit-io/cloudknit","commit_stats":{"total_commits":1908,"total_committers":17,"mean_commits":"112.23529411764706","dds":0.7510482180293501,"last_synced_commit":"9ba5f826ad878e196afc2a0cd40c972db3df43eb"},"previous_names":["compuzest/zlifecycle-il-operator"],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudknit-io%2Fcloudknit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudknit-io%2Fcloudknit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudknit-io%2Fcloudknit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudknit-io%2Fcloudknit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudknit-io","download_url":"https://codeload.github.com/cloudknit-io/cloudknit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247160318,"owners_count":20893808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["aws","cloud","cloud-native","devops","environment-as-code","infrastructure","infrastructure-as-code","kubernetes","terraform"],"created_at":"2024-08-01T14:01:27.321Z","updated_at":"2025-04-04T10:30:59.294Z","avatar_url":"https://github.com/cloudknit-io.png","language":"TypeScript","readme":"# CloudKnit: An Open Source Solution for Managing Cloud Environments\n\nCloudKnit is an open-source `progressive delivery platform` for managing cloud environments. It enables organizations to **Define** entire environments in a declarative way, **Provision** them, **Detect** and **Reconcile** Drift, and **Teardown** environments when no longer needed. It also comes with dashboards to help visualize environments and observe them.\n\nCloudKnit is based on a concept called [Environment as Code](https://www.cloudknit.io/blog/from-infrastructure-as-code-to-environment-as-code). Some people have started calling it Declarative Pipelines.\n\n\u003e *Note: We are not a big fan of using Pipeline and Declarative together as Pipeline to us means a sequence of steps which conflicts with what Declarative means.*\n\nEnvironment as Code (EaC) is an abstraction over cloud-native tools that provides a declarative way of defining entire environments. It has a Control Plane that manages the state of the environment, including resource dependencies, and drift detection and reconciliation.\n\n![Where CloudKnit connects with existing tools](/assets/images/existing-tools.png)\n*\u003ccenter\u003eDiagram 1: Where does CloudKnit fit in with existing tools\u003c/center\u003e*\n\n## Table of Contents\n\n* [Why we built CloudKnit](#why-we-built-cloudknit)\n* [Other Challenges](#other-challenges)\n* [Demo](#demo)\n* [How does CloudKnit work?](#how-does-cloudknit-work)\n* [Environment Visibility \u0026 Workflow](#environment-visibility--workflow)\n* [Conclusion](#conclusion)\n\n## Why we built CloudKnit\n\nExisting automation tools like Terraform, Pulumi, and Helm allow us to automate the provisioning of cloud environments, but as those environments become more complex and teams look for advanced use cases, existing tools fall short. These tools are great at managing individual components within an environment (like networking or RDS), but engineering teams need an entire environment with various components like the one shown below [See diagram 2] to run their business applications.\n\nThis causes teams to do one of the following:\n\n* **Hand-roll complex pipelines:** Pipeline code is imperative \u0026 needs to manage the logic to provision the various components in the correct order, handle failures and tear down unused resources. We have seen teams write hundreds of lines of unmaintainable pipeline code. This causes a maintenance nightmare.\n* **Build in-house solution on top of automation tools:** Companies spend a lot of time and money managing in-house solutions instead of building business features.\n\nCloudKnit makes it easy for Engineering teams to manage complex environments and provides out-of-the-box solution for use cases like ephemeral environments, environment blueprints, cloning environments, promoting changes across environments, and more.\n\n![Example Environment](/assets/images/environment.jpeg)\n*\u003ccenter\u003eDiagram 2: Example Environment\u003c/center\u003e*\n\n## Other Challenges\n\nThere are other challenges that teams face as their environments become more complex.\n\n* Environment Replication is a pain\n* Not easy to Visualize/Understand Environments\n* Drift Detection for the entire environment is difficult\n* Not straightforward to Promote changes across environments\n\n## Demo\n\nPlease see CloudKnit demo below:\n\n[\u003cimg src=\"/assets/images/ck-demo-banner.png\" width=\"100%\"\u003e](https://youtu.be/yUPJj3MJmqs \"CloudKnit Demo: 55\")\n\n## How does CloudKnit work?\n\n![CloudKnit](/assets/images/cloudknit.jpeg)\n*\u003ccenter\u003eDiagram 3: CloudKnit\u003c/center\u003e*\n\nEnvironment management with CloudKnit is divided into 4 stages:\n\n### 1. Define\n\nThis stage allows you to define an entire environment. We currently support easy to use YAML format for the environment definition.\n\nSee example below:\n\n\u003cdetails\u003e\n  \u003csummary\u003eEnvironment Definition\u003c/summary\u003e\n\n```yaml\napiVersion: stable.cloudknit.io/v1\nkind: Environment\nmetadata:\n  name: zmart-payment-prod-blue\n  namespace: zmart-config\nspec:\n  teamName: payment\n  envName: prod-blue\n  teardown: false\n  autoApprove: false\n  components:\n\n    - name: networking\n      type: terraform\n      autoApprove: true\n      module:\n        source: git@github.com:terraform-aws-modules/terraform-aws-vpc.git\n      variablesFile:\n        path: \"prod-blue/vars/networking.tfvars\"\n      outputs:\n        - name: vpc_id\n\n    - name: platform-eks\n      type: terraform\n      dependsOn: [networking]\n      module:\n        source: git@github.com:terraform-aws-modules/terraform-aws-eks.git\n      variables:\n        - name: vpc_id\n          valueFrom: networking.vpc_id\n      variablesFile:\n        path: \"prod-blue/vars/platform-eks.tfvars\"\n\n    - name: website\n      type: helm #Native support for helm charts coming soon\n      dependsOn: [platform-eks]\n      source:\n        repo: git@github.com:helm/examples.git\n        path: charts/hello-world\n      variables:\n        - name: environment\n          value: prod-blue\n```\n\u003c/details\u003e\n\n### 2. Provision\n\nCloudKnit Control Plane running in Kubernetes uses the Environment definition \u0026 runs various Components (Terraform, Helm Charts, etc.) in the right order. It also provides Visibility \u0026 Workflow while Provisioning the environment.\n\n### 3. Detect Drift + Reconciliation\n\nLike Kubernetes does drift detection for k8s apps \u0026 reconciles them to match the desired state in source control, CloudKnit does drift detection for the entire environment (infra + apps) \u0026 reconciles them.\n\nNote: In case of Infrastructure as Code (IaC), CloudKnit provides an ability to see the plan \u0026 get manual approval before running the IaC to make sure it doesn't destroy any resources you don't want to, especially in Production environments.\n\n### 4. Teardown\n\nYou might want to teardown environments when they are not used to save costs. CloudKnit provides a single line change using flag `teardown` in the Environment YAML. Once `teardown` flag is set to true and definition is pushed to Source Control, CloudKnit picks up the change and tears the environment down by destroying individual components in the correct order.\n\n## Environment Visibility \u0026 Workflow\n\nCloudKnit also provides visibility into your environments and an optimal GitOps workflow with useful information on the UI like estimated costs/status etc. Check diagram 4 below for an example environment in CloudKnit UI.\n\n![Environment Visibility](/assets/images/env.png)\n*\u003ccenter\u003eDiagram 4: Environment Visibility\u003c/center\u003e*\n\n## Conclusion\n\nWe hope that by open-sourcing CloudKnit early, we can form a close-knit open-source community around it to make managing cloud environments easy.\n\nFor a deeper dive into CloudKnit, see the [architectural overview](https://docs.cloudknit.io/concepts/architectural_overview), our [documentation](https://docs.cloudknit.io), and the [GitHub repo](https://github.com/cloudknit-io/cloudknit).\n\n#### Terminologies\n\n*Components: A logical grouping of 1 or more Infrastructure Resources or Applications that get provisioned together. For example, Networking is an Infrastructure Component with various Infrastructure resources like Virtual Private Cloud(VPC), Subnets, Internet Gateways, Route Tables, etc.*\n\n*Environment: A logical grouping of all the Components needed to run business applications. The grouping includes components like networking, eks, database, k8s apps, etc.*\n","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudknit-io%2Fcloudknit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudknit-io%2Fcloudknit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudknit-io%2Fcloudknit/lists"}