{"id":13451686,"url":"https://github.com/ksonnet/ksonnet","last_synced_at":"2025-10-21T19:54:22.057Z","repository":{"id":53349280,"uuid":"107161514","full_name":"ksonnet/ksonnet","owner":"ksonnet","description":"A CLI-supported framework that streamlines writing and deployment of Kubernetes configurations to multiple clusters.","archived":true,"fork":false,"pushed_at":"2019-02-21T02:05:58.000Z","size":28197,"stargazers_count":1163,"open_issues_count":150,"forks_count":173,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-01-14T19:14:06.750Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ksonnet.io/","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/ksonnet.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2017-10-16T17:39:25.000Z","updated_at":"2025-01-03T21:46:33.000Z","dependencies_parsed_at":"2022-09-13T02:40:28.958Z","dependency_job_id":null,"html_url":"https://github.com/ksonnet/ksonnet","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksonnet%2Fksonnet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksonnet%2Fksonnet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksonnet%2Fksonnet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ksonnet%2Fksonnet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ksonnet","download_url":"https://codeload.github.com/ksonnet/ksonnet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234425910,"owners_count":18830816,"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":[],"created_at":"2024-07-31T07:00:59.210Z","updated_at":"2025-09-27T09:32:05.675Z","avatar_url":"https://github.com/ksonnet.png","language":"Go","readme":"# ksonnet\n\n**The team behind ksonnet is stepping back from the project. As a result, work on ksonnet will end and the GitHub repositories will be archived. You can read more about our decision [here.](https://blogs.vmware.com/cloudnative/2019/02/05/welcoming-heptio-open-source-projects-to-vmware/)**\n\n[**Official Site**](https://ksonnet.io/)\n\n[![Build Status](https://travis-ci.org/ksonnet/ksonnet.svg?branch=master)](https://travis-ci.org/ksonnet/ksonnet)\n[![Go Report Card](https://goreportcard.com/badge/github.com/ksonnet/ksonnet)](https://goreportcard.com/report/github.com/ksonnet/ksonnet)\n\n\n*ksonnet* is a framework for writing, sharing, and deploying Kubernetes application manifests. With its CLI, you can generate a complete application from scratch in only a few commands, or manage a complex system at scale.\n\nSpecifically, ksonnet allows you to:\n* **Reuse** common manifest patterns (within your app or from external libraries)\n* **Customize** manifests directly with powerful object concatenation syntax\n* **Deploy** app manifests to multiple environments\n* **Diff** across environments to compare two running versions of your app\n* **Track** the entire state of your app configuration in version controllable files\n\nAll of this results in a more iterative process for developing manifests, one that can be supplemented by continuous integration (CI).\n\n## Install\n\nThe ksonnet CLI, `ks`, can be installed in three different ways. Choose the method that best matches your setup:\n\n### Homebrew on macOS\n\nIf you are using [Homebrew](https://brew.sh/) on macOS, you can install `ks` with the following command:\n\n```\nbrew install ksonnet/tap/ks\n```\n\n### Download a prebuilt binary for your OS\n\nSee the [releases page](https://github.com/ksonnet/ksonnet/releases) to download the latest released binary.\n\n### Build a docker image\n\nA docker image can be built and used similarly to our manual build [as seen here](/docs/docker-image-build.md) \n\n### Manually build and install\n\nYou can download and manually build from source by following [these instructions](/docs/build-install.md).\n\n## Run through an example\n\nHere we provide some commands that show some basic ksonnet features in action. You can run these commands to deploy and update a basic web app UI, via a Kubernetes Service and Deployment. This app is shown below:\n\n\u003cp align=\"center\"\u003e\n\u003cimg alt=\"guestbook screenshot\" src=\"/docs/img/guestbook.png\" style=\"width:60% !important;\"\u003e\n\u003c/p\u003e\n\nNote that we will not be implementing the entire app in this example, so the buttons will not work!\n\n**Minimal explanation is provided here, and only basic ksonnet features are shown---this is intended to be a quick demonstration.** If you are interested in learning more, see [Additional Documentation](#additional-documentation).\n\n### Prerequisites\n* *You should have access to an up-and-running Kubernetes cluster — **supported versions are 1.7 (default) and 1.8 (beta)**.*\n\n  If you do not have a cluster, [choose a setup solution](https://kubernetes.io/docs/setup/) from the official Kubernetes docs.\n\n* *You should have `kubectl` installed.* If not, follow the instructions for [installing via Homebrew (MacOS)](https://kubernetes.io/docs/tasks/tools/install-kubectl/#install-with-homebrew-on-macos) or [building the binary (Linux)](https://kubernetes.io/docs/tasks/tools/install-kubectl/#tabset-1).\n\n* *Your `$KUBECONFIG` should specify a valid `kubeconfig` file*, which points at the cluster you want to use for this demonstration.\n\n### Commands\n\nStart by creating your app directory. **If you are running Kubernetes 1.8.x, you'll need to add `--api-spec=version:v1.8.0` to the end of the following command**:\n```bash\n# The ks-example app directory is created at the current path, and the\n# app itself references your current cluster using $KUBECONFIG\nks init ks-example\n```\n\nYou can copy and paste the commands below to deploy the web app UI:\n\n```bash\n# 'ks' commands should be run within a ksonnet app directory\ncd ks-example\n\n# Autogenerate a basic manifest\nks generate deployed-service guestbook-ui \\\n  --image gcr.io/heptio-images/ks-guestbook-demo:0.1 \\\n  --type ClusterIP\n\n# Deploy your manifest to your cluster\nks apply default\n```\n\nNow there should be a Deployment and Service running on your cluster! Try accessing the `guestbook-ui` service in your browser. (How you do this may depend on your cluster setup).\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ci\u003eIf you are unsure what to do, we suggest using \u003ccode\u003ekubectl proxy\u003c/code\u003e.\u003c/i\u003e\u003c/summary\u003e\n\u003cpre\u003e\n# Set up an API proxy so that you can access the 'guestbook-ui' service locally\nkubectl proxy \u003e /dev/null \u0026\nPROXY_PID=$!\nQUICKSTART_NAMESPACE=$(kubectl get svc guestbook-ui -o jsonpath=\"{.metadata.namespace}\")\nGUESTBOOK_SERVICE_URL=http://localhost:8001/api/v1/proxy/namespaces/$QUICKSTART_NAMESPACE/services/guestbook-ui\nopen $GUESTBOOK_SERVICE_URL\n\u003c/pre\u003e\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n*(Remember, the buttons won't work in this example.)*\n\nNow let's try upgrading the container image to a new version:\n\n```bash\n# Bump the container image to a different version\nks param set guestbook-ui image gcr.io/heptio-images/ks-guestbook-demo:0.2\n\n# View updated param values\nks param list\n\n# Update your cluster with your latest changes\nks apply default\n\n```\n\nCheck out the webpage again in your browser (force-refresh to update the javascript). Notice that it looks different! Clean up:\n\n```bash\n# Teardown\nks delete default\n\n# There should be no guestbook service left running\nkubectl get svc guestbook-ui\n```\n\n*(If you ended up copying and pasting the `kubectl proxy` code above, make sure to clean up that process with `kill -9 $PROXY_PID`).*\n\nNow, even though you've made modifications to the Guestbook app and removed it from your cluster, ksonnet still tracks all your manifests locally:\n\n```bash\n# View all expanded manifests (YAML)\nks show default\n```\n\nIf you're still wondering how ksonnet differs from existing tools, the [tutorial](https://ksonnet.io/docs/tutorial) shows you how to use other ksonnet features to implement the rest of the Guestbook app (and yes, the buttons will work!).\n\n## Additional documentation\n\nksonnet is a feature-rich framework. To learn more about how to integrate it into your workflow, check out the resources below:\n\n* **[Tutorial](https://ksonnet.io/docs/tutorial)** - What can I build with ksonnet and why? This finishes the Guestbook app from the [example](#run-through-an-example) above.\n\n* **[Interactive tour of ksonnet](https://ksonnet.io/tour/welcome)** - How do `ks` commands work under the hood?\n\n* **[CLI Reference](/docs/cli-reference#command-line-reference)** - What ksonnet commands are available, and how do I use them?\n\n* **[Concept Reference](/docs/concepts.md)** - What do all these special ksonnet terms mean (e.g. *prototypes*) ?\n\n* **[Design Docs](/design)** - What are the detailed design specs, and what's next on the feature roadmap?\n\n\n## Troubleshooting\n\nIf you encounter any problems that the documentation does not address, [file an issue](https://github.com/ksonnet/ksonnet/issues).\n\n## Contributing\n\nThanks for taking the time to join our community and start contributing!\n\n#### Before you start\n\n* Please familiarize yourself with the [Code of\nConduct](CODE-OF-CONDUCT.md) before contributing.\n* Read the contribution guidelines in [CONTRIBUTING.md](CONTRIBUTING.md).\n* There is a [mailing list](https://groups.google.com/forum/#!forum/ksonnet) or the #ksonnet channel on [Slack](http://kubernetes.slack.com/messages/ksonnet) if you want to interact with\nother members of the community.\n\n#### Pull requests\n\n* We welcome pull requests. Feel free to dig through the [issues](https://github.com/ksonnet/ksonnet/issues) and jump in.\n\n## Changelog\n\nSee [the list of releases](https://github.com/ksonnet/ksonnet/releases) to find out about feature changes.\n","funding_links":[],"categories":["Tools","Go","Configuration Management","Kubernetes","Configuration \u0026 Policy Automation"],"sub_categories":["Configuration"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksonnet%2Fksonnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fksonnet%2Fksonnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fksonnet%2Fksonnet/lists"}