{"id":23712161,"url":"https://github.com/digillect/sunstone","last_synced_at":"2025-09-03T17:33:25.079Z","repository":{"id":56230941,"uuid":"171911598","full_name":"Digillect/sunstone","owner":"Digillect","description":"Sunstone: Declarative language for Kubernetes resource manifests and Helm charts","archived":false,"fork":false,"pushed_at":"2023-03-17T02:04:46.000Z","size":191,"stargazers_count":10,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T19:22:10.635Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Digillect.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-21T17:03:42.000Z","updated_at":"2025-02-06T07:01:56.000Z","dependencies_parsed_at":"2023-02-17T11:35:28.112Z","dependency_job_id":null,"html_url":"https://github.com/Digillect/sunstone","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/Digillect/sunstone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Digillect%2Fsunstone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Digillect%2Fsunstone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Digillect%2Fsunstone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Digillect%2Fsunstone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Digillect","download_url":"https://codeload.github.com/Digillect/sunstone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Digillect%2Fsunstone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273481187,"owners_count":25113541,"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","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-12-30T19:57:29.775Z","updated_at":"2025-09-03T17:33:24.778Z","avatar_url":"https://github.com/Digillect.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sunstone\n\n[![ci](https://github.com/Digillect/sunstone/actions/workflows/ci.yml/badge.svg)](https://github.com/Digillect/sunstone/actions/workflows/ci.yml)\n\nDeclarative language for Kubernetes resource manifests and Helm charts.\n\n## Why\n\nWriting simple Kubernetes manifests is simple. Writing simple Helm charts is also simple. The moment\nyou find out that you are writing the same YAML with slight modifications for your twenty third microservice\nyou understand that you need more power Helm's Go templates can provide - enters Sunstone.\n\nSunstone is the addition to the Helm templates that do not allow you to create \"real\" macros or functions\nand where you have to write the same code with the different arguments over and over again and then, when refactoring,\nyou have to be very careful and not to forget to change all affected files. Sunstone saves the time and increases\nmanageability of the Kubernetes resource manifests by providing ability to setup common parameters for resource types,\nwrite macros that, when applied to resource, change several values at once and by organizing resources with\nscoping under the same name. Here is the example resource declaration that creates Hello World web server:\n\n```ruby\nR.deployment 'hello' do\n  container do\n    image 'tutum/hello-world'\n  end\nend\n```\n\nAnd here is the full chain of deployment, service and ingress that exposes that server to the world:\n\n```ruby\nR.scope 'hello' do\n  deployment do\n    match_labels component: 'hello'\n\n    container do\n      image 'tutum/hello-world'\n\n      expose_default_http_port\n    end\n  end\n\n  service do\n    match_labels component: 'hello'\n\n    expose_default_http_port\n  end\n\n  ingress do\n    add_service_rule 'hello.example.org'\n  end\nend\n```\n\nJust like [Ksonnet](https://ksonnet.io), which is unfortunately discontinued, Sunstone is the tool to make\ndeployment to Kubernetes fast, easy and manageable.\n\nMore examples can be found in the [Tutorial](examples/tutorial), documentation and API Reference\nis in [Wiki](https://github.com/Digillect/sunstone/wiki).\n\n## Installation\n\nOn MacOS Sunstone can be installed using Homebrew. First you'll need to install Digillect tap (if not already installed),\nand then Sunstone:\n\n```bash\n$ brew tap digillect/core\n...\n$ brew install sunstone\n``` \n\nThat will install latest stable version of Sunstone. If you wish to play with the bleeding edge version use `--HEAD` flag to brew:\n\n```bash\n$ brew install --HEAD sunstone\n```\n\n## Use Docker image\n\nDocker image contains bundled sunstone that runs in `/data` directory, so it is\nsimple to map your files and pickup results. This image is also a base for the\n[Sunstone/Helm/Kubectl image](https://github.com/Digillect/sunstone-helm-kubectl) that\nis suitable to use in your CI/CD pipelines.\n\n```bash\ndocker run -i --rm -v `PWD`:/data digillect/sunstone sunstone [flags]\n```\n\n## Usage\n\nRun `sunstone` to convert a directory with resource definitions into Kubernetes\nmanifests.\n\n`sunstone examples/tutorial/01_getting_started`\n\nConvert content of `examples/tutorial/01_getting_started` directory and output it to the\nstandard output as a YAML stream.\n\n`sunstone -o out.yaml examples/tutorial/01_getting_started`\n\nConvert input directory and output resources to the single YAML file `out.yaml`\n\nRun `sunstone --help` for the full list of options.\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/digillect/sunstone.\n\n## License\n\nSunstone is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigillect%2Fsunstone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdigillect%2Fsunstone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdigillect%2Fsunstone/lists"}