{"id":23428889,"url":"https://github.com/blendle/kubecrt","last_synced_at":"2026-02-25T20:31:58.045Z","repository":{"id":46930604,"uuid":"89132935","full_name":"blendle/kubecrt","owner":"blendle","description":"Convert Helm charts to Kubernetes resources.","archived":false,"fork":false,"pushed_at":"2023-03-07T02:59:09.000Z","size":83,"stargazers_count":115,"open_issues_count":8,"forks_count":11,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-12T20:34:00.642Z","etag":null,"topics":["helm-charts","helm-plugins","kubernetes"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blendle.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-04-23T10:08:45.000Z","updated_at":"2024-08-12T19:29:19.000Z","dependencies_parsed_at":"2024-06-18T22:36:40.682Z","dependency_job_id":"2d88b16b-1fcf-4a17-a698-8cf7c9e7bae1","html_url":"https://github.com/blendle/kubecrt","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/blendle/kubecrt","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blendle%2Fkubecrt","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blendle%2Fkubecrt/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blendle%2Fkubecrt/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blendle%2Fkubecrt/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blendle","download_url":"https://codeload.github.com/blendle/kubecrt/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blendle%2Fkubecrt/sbom","scorecard":{"id":243189,"data":{"date":"2025-08-11","repo":{"name":"github.com/blendle/kubecrt","commit":"84ecbcfd325597e368cca640b734fcae3232b37d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":4,"reason":"Found 7/17 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: ISC License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.9.2 not signed: https://api.github.com/repos/blendle/kubecrt/releases/46897330","Warn: release artifact v0.9.1 not signed: https://api.github.com/repos/blendle/kubecrt/releases/46470972","Warn: release artifact v0.9.0 not signed: https://api.github.com/repos/blendle/kubecrt/releases/9808624","Warn: release artifact v0.8.0 not signed: https://api.github.com/repos/blendle/kubecrt/releases/9807676","Warn: release artifact v0.7.0 not signed: https://api.github.com/repos/blendle/kubecrt/releases/9114435","Warn: release artifact v0.9.2 does not have provenance: https://api.github.com/repos/blendle/kubecrt/releases/46897330","Warn: release artifact v0.9.1 does not have provenance: https://api.github.com/repos/blendle/kubecrt/releases/46470972","Warn: release artifact v0.9.0 does not have provenance: https://api.github.com/repos/blendle/kubecrt/releases/9808624","Warn: release artifact v0.8.0 does not have provenance: https://api.github.com/repos/blendle/kubecrt/releases/9807676","Warn: release artifact v0.7.0 does not have provenance: https://api.github.com/repos/blendle/kubecrt/releases/9114435"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"16 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0411 / GHSA-3839-6r69-m497 / GHSA-xg2h-wx96-xgxr","Warn: Project is vulnerable to: GO-2023-2048 / GHSA-6xv5-86q9-7xr8","Warn: Project is vulnerable to: GO-2022-0229 / GHSA-cjjc-xp8v-855w","Warn: Project is vulnerable to: GO-2020-0012 / GHSA-ffhg-7mh4-33c4","Warn: Project is vulnerable to: GO-2021-0227 / GHSA-3vm4-22fp-5rfm","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2021-0061 / GHSA-r88r-gmrh-7j83","Warn: Project is vulnerable to: GO-2022-0956 / GHSA-6q6q-88xp-6f2r","Warn: Project is vulnerable to: GO-2020-0036 / GHSA-wxc4-f4m6-wwqv","Warn: Project is vulnerable to: GO-2022-0965 / GHSA-74fp-r6jw-h4mp","Warn: Project is vulnerable to: GO-2024-2748 / GHSA-33c5-9fx5-fvjm"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T07:00:00.979Z","repository_id":46930604,"created_at":"2025-08-17T07:00:00.979Z","updated_at":"2025-08-17T07:00:00.979Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29838064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T19:08:47.527Z","status":"ssl_error","status_checked_at":"2026-02-25T18:59:04.705Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["helm-charts","helm-plugins","kubernetes"],"created_at":"2024-12-23T07:15:03.045Z","updated_at":"2026-02-25T20:31:58.014Z","avatar_url":"https://github.com/blendle.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kubecrt\n\nConvert Helm charts to Kubernetes resources.\n\n## Description\n\nkubecrt allows you to define your application's Kubernetes infrastructure based\non a single configuration file.\n\nThe configuration file contains your application name, and namespace (both can\nalso be set using CLI arguments), and you provide a list of charts that you want\nto install, optionally providing override values for those charts.\n\nWhen running `kubecrt`, you provide it your project's configuration file, and in\nturn, it returns you the parsed Kubernetes resource files generated by the\ncharts.\n\nThis allows you to use Helm Charts without actually using Helm, and instead\nusing regular `kubectl` to deploy and manage your resources.\n\nThe configuration file you feed into kubecrt will be processed using the epp\ntemplating tool, allowing you to inject variables at runtime, based on your own\nconditional logic (production vs staging, etc...).\n\n## Installation\n\n```\nbrew tap blendle/blendle\nbrew install kubecrt\n```\n\n## Usage\n\nSee `kubecrt --help`\n\n```\nkubecrt - convert Helm charts to Kubernetes resources\n\nGiven a charts.yml file, compile all the charts with\nthe provided template variables and return the\nresulting Kubernetes resource files to STDOUT, or\nwrite them to a provided file.\n\nDoing this, you can use Kubernetes charts, without\nhaving to use Helm locally, or Tiller on the server.\n\nUsage:\n  kubecrt [options] CHARTS_CONFIG\n  kubecrt -h | --help\n  kubecrt --version\n  kubecrt --example-config\n\nWhere CHARTS_CONFIG is the location of the YAML file\ncontaining the Kubernetes Charts configuration.\n\nArguments:\n  CHARTS_CONFIG                    Charts configuration file\n\nOptions:\n  -h, --help                       Show this screen\n  --version                        Show version\n  -n NS, --namespace=NS            Set the .Release.Namespace chart variable,\n                                   used by charts during compilation\n  -a NAME, --name=NAME             Set the .Release.Name chart variable, used by\n                                   charts during compilation\n  -o PATH, --output=PATH           Write output to a file, instead of STDOUT\n  -r NAME=URL, --repo=NAME=URL,... List of NAME=URL pairs of repositories to add\n                                   to the index before compiling charts config\n  -p DIR, --partials-dir=DIR       Path from which to load partial templates\n                                   [default: config/deploy/partials]\n  -j, --json                       Print resources formatted as JSON instead of\n                                   YAML. Each resource is printed on a single\n                                   line.\n  --example-config                 Print an example charts.yaml, including\n                                   extended documentation on the tunables\n```\n\n## Charts Configuration File\n\nSee `kubecrt --example-config`\n\n```yaml\n# apiVersion defines the version of the charts.yaml structure. Currently,\n# only \"v1\" is supported.\napiVersion: v1\n\n# name is the .Release.Name template value that charts can use in their\n# templates, which can be overridden by the \"--name\" CLI flag. If omitted,\n# \"--name\" is required.\nname: my-bundled-apps\n\n# namespace is the .Release.Namespace template value that charts can use in\n# their templates. Note that since kubecrt does not communicate with\n# Kubernetes in any way, it is up to you to also use this namespace when\n# doing kubectl apply [...]. Can be overridden using \"--namespace\".  If omitted,\n# \"--namespace\" is required.\nnamespace: apps\n\n# charts is an array of charts you want to compile into Kubernetes resource\n# files.\n#\n# A single chart might be used to deploy something simple, like a memcached pod,\n# or something complex, like a full web app stack with HTTP servers, databases,\n# caches, and so on.\ncharts:\n\n# A Chart can either be in the format REPO/NAME, or a PATH to a local chart.\n#\n# If using REPO/NAME, kubecrt knows by-default where to locate the \"stable\"\n# repository, all other repositories require the \"repo\" configuration (see\n# below).\n- stable/factorio:\n    # values is a map of key/value pairs used when compiling the chart. This\n    # uses the same format as in regular chart \"values.yaml\" files.\n    #\n    # see: https://git.io/v9Tyr\n    values:\n      resources:\n        requests:\n          memory: 1024Mi\n          cpu: 750m\n      factorioServer:\n        # charts.yaml supports the same templating as chart templates do,\n        # using the \"sprig\" library.\n        #\n        # see: https://masterminds.github.io/sprig/\n        name: \u003e\n          {{ env \"MY_SERVER_NAME\" | default \"hello world!\" }}\n\n- stable/minecraft:\n    # version is a semantic version constraint.\n    #\n    # see: https://github.com/Masterminds/semver#basic-comparisons\n    version: ~\u003e 0.1.0\n    values:\n      minecraftServer:\n        difficulty: hard\n\n- opsgoodness/prometheus-operator:\n    # repo is the location of a repositry, if other than \"stable\". This is\n    # the URL you would normally add using \"helm repo add NAME URL\".\n    repo: http://charts.opsgoodness.com\n    values:\n      sendAnalytics: false\n\n# For the above charts, see here for the default configurations:\n#\n#   * stable/factorio: https://git.io/v9Tyr\n#   * stable/minecraft: https://git.io/v9Tya\n#   * opsgoodness/prometheus-operator: https://git.io/v9SAY\n```\n\n## Partial Templates\n\nYou can optionally split your `charts.yml` file into multiple chunks, by using\n_partial templates_. This works almost the same way as Helm's support for these\nin charts. See the [Helm documentation][docs] for more details.\n\nTo use these partials, you have to set the `--partials-dir` flag when calling\n`kubecrt`, pass it the path to your partials directory, and then use those\npartials in your `charts.yml`.\n\nExample:\n\n**charts.yml**:\n\n```yaml\napiVersion: v1\nname: my-bundled-apps\nnamespace: apps\ncharts:\n- stable/factorio:\n    values:\n      resources:\n{{ include \"factorio/resources\" . | indent 8 }}\n```\n\n**partials/factorio/resources.yml**\n\n```yaml\n{{- define \"factorio/resources\" -}}\nrequests:\n  memory: 1024Mi\n  cpu: 750m\n{{- end -}}\n```\n\nYou can then run this as follows:\n\n```\nkubecrt --partials-dir ./partials charts.yml\n```\n\nAnd the result is a fully-parsed charts printed to stdout.\n\nSome notes:\n\n* you can use subfolders to organise your partials\n* each named `define` has to be uniquely named, or risk being overwritten\n* you can define multiple `define` blocks in a single file\n* the files don't need to be yaml files, you can use any content you need\n\n[docs]: https://github.com/kubernetes/helm/blob/master/docs/chart_template_guide/named_templates.md\n\n## Releasing new version\n\n```\nmake (major|minor|patch)\ngit push --tags\nmake dist\nopen _dist/\n```\n\nNext, go to the [GitHub releases](https://github.com/blendle/kubecrt/releases)\npage, and edit the tag you just push:\n\n* Release title: vx.x.x\n* Describe this release: short description of important changes\n* Attach binaries: drop the files created in `_dist` here\n\nClick \"Update release\".\n\nDon't forget to update the Homebrew formula, located at\n[blendle/homebrew-blendle][tap].\n\n[tap]: https://github.com/blendle/homebrew-blendle\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblendle%2Fkubecrt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblendle%2Fkubecrt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblendle%2Fkubecrt/lists"}