{"id":19372637,"url":"https://github.com/hasura/kubeformation","last_synced_at":"2026-03-16T20:32:44.804Z","repository":{"id":69180992,"uuid":"129933962","full_name":"hasura/kubeformation","owner":"hasura","description":"Create declarative cluster specifications for your managed Kubernetes vendor (GKE, AKS)","archived":false,"fork":false,"pushed_at":"2019-04-03T10:04:58.000Z","size":240,"stargazers_count":85,"open_issues_count":6,"forks_count":3,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-02T17:51:14.377Z","etag":null,"topics":["aks","azure","azure-resource-manager","declarative","gke","google-cloud","google-deployment-manager","kubernetes","templates"],"latest_commit_sha":null,"homepage":"https://kubeformation.sh","language":"Go","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/hasura.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-04-17T16:26:57.000Z","updated_at":"2025-02-16T06:35:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"fc6ceab5-3c6c-4079-883b-affaed352d80","html_url":"https://github.com/hasura/kubeformation","commit_stats":{"total_commits":75,"total_committers":3,"mean_commits":25.0,"dds":0.36,"last_synced_commit":"6745ae32c2ee589e7291f08147d380696be67956"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasura%2Fkubeformation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasura%2Fkubeformation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasura%2Fkubeformation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hasura%2Fkubeformation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hasura","download_url":"https://codeload.github.com/hasura/kubeformation/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250470902,"owners_count":21435859,"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":["aks","azure","azure-resource-manager","declarative","gke","google-cloud","google-deployment-manager","kubernetes","templates"],"created_at":"2024-11-10T08:24:36.143Z","updated_at":"2026-03-16T20:32:44.763Z","avatar_url":"https://github.com/hasura.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kubeformation\n\nCreate declarative specifications for your managed Kubernetes cloud vendor (GKE, AKS).\n\n[![GoDoc](https://godoc.org/github.com/hasura/kubeformation?status.svg)](https://godoc.org/github.com/hasura/kubeformation)\n[![Chat on Discord](https://img.shields.io/discord/407792526867693568.svg?logo=discord)](https://discord.gg/TEPDKXe)\n[![Follow on Twitter](https://img.shields.io/twitter/follow/kubeformation.svg?style=social\u0026logo=twitter)](https://twitter.com/intent/follow?screen_name=kubeformation)\n\n![Kubeformation Diagram](assets/kubeformation-diagram.png)\n\n## Motivation\n\nWith Kubernetes, it becomes possible to start making everything about your\napplication declarative. As cloud vendors start providing managed Kubernetes\nservices, provisioning a Kubernetes cluster via the vendor’s API becomes\ndeclarative as well.\n\nKubeformation is a simple web UI and CLI that helps you create “Google\nDeployment manager” or “Azure Resoure Manager” templates which are a _little_\npainful to create by hand.\n\nOnce you have this file, you can run your cloud vendor CLI on it to provision\nyour cluster. You can edit this file to add vendor specific configuration too.\n\n## Usage\n\n- Write cluster spec. [[docs]](docs/spec/v1.md)\n- Use the `kubeformation` CLI to generate template. [[docs]](docs/cli/kubeformation.md)\n- Follow provider specific instructions to create the cluster. [[docs]](docs/providers/providers.md)\n\n## Example\n\nHere's a spec that defines a Kubernetes cluster: `cluster.yaml`\n\n```yaml\nversion: v1\nname: cluster-name\nprovider: gke\nk8sVersion: \"1.9\"\nnodePools:\n- name: db-pool\n  type: n1-standard-1\n  size: 1\n  labels:\n    app: postgres\n- name: backend-pool\n  type: n1-standard-2\n  size: 2\n  labels:\n    app: backend\nvolumes:\n- name: postgres\n  size: 10\n```\n\n`kubeformation` can read this file and generate [Google Cloud Deployment\nManager](https://cloud.google.com/deployment-manager/) template, which can then\nbe used with `gcloud` command to create the GKE cluster. This is a declarative\ntemplate that can be used to further do create or modify the cluster.\n\n```bash\n$ kubeformation -f cluster.yaml -o templates\n```\n\nThen, use `gcloud` CLI to create the deployment. [[docs]](docs/providers/gke.md)\n\n```bash\n$ gcloud deployment-manager deployments create my-cluster --config templates/gke-cluster.yaml\n```\n\n**NOTE**: `kubeformation` is exclusively meant for managed Kubernetes providers. The\nfollowing providers are currently supported:\n\n1. Google Kubernetes Engine (GKE)\n2. Azure Container Service (AKS)\n\n## Installation\n\nDownload CLI for your platform from the [releases\npage](https://github.com/hasura/kubeformation/releases), add it to `PATH` and give\nexecute permissions.\n\n```bash\n$ chmod +x kubeformation\n```\n\n## Docs\n\nRead complete docs [here](docs/README.md).\n\n## FAQ\n\n- Why cloud provider specific information, such as zone/region/location etc.\n  does not appear in the cluster spec? \n  - The purpose of Kubeformation is to bootstrap a cloud provider specific\n    template that you can later modify according to your needs.\n\n## Roadmap\n\nKubeformation is open to evolution. Current goal is to support all managed\nKubernetes vendors that support declarative specification.\n\n- EKS support ([#10](https://github.com/hasura/kubeformation/issues/10))\n- Other providers ([#11](https://github.com/hasura/kubeformation/issues/11))\n\n## Contributing\n\nKubeformation is an open source project licensed under [Apache\n2.0](https://github.com/hasura/kubeformation/blob/master/LICENSE). Checkout the\n[contributing\nguide](https://github.com/hasura/kubeformation/blob/master/CONTRIBUTING.md) to\nget started. \n\n## Maintainers\n\nCurrent maintainers: [@shahidh_k](https://twitter.com/shahidh_k),\n[@arvishankar](https://twitter.com/arvishankar),\n[@JaisonTitus](https://twitter.com/JaisonTitus). \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhasura%2Fkubeformation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhasura%2Fkubeformation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhasura%2Fkubeformation/lists"}