{"id":29203534,"url":"https://github.com/kubernauts/parameterizer","last_synced_at":"2025-07-02T14:10:41.308Z","repository":{"id":80170324,"uuid":"122828914","full_name":"kubernauts/parameterizer","owner":"kubernauts","description":"The babelfish of Kubernetes app lifecycle management","archived":false,"fork":false,"pushed_at":"2018-04-27T08:42:14.000Z","size":397,"stargazers_count":35,"open_issues_count":2,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-28T18:29:28.032Z","etag":null,"topics":["application","crd","helm","installer","ksonnet","kubernetes","operator"],"latest_commit_sha":null,"homepage":"","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/kubernauts.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":"2018-02-25T11:13:57.000Z","updated_at":"2023-02-22T03:24:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"79d1bac1-382e-47c4-bbd9-fab4c4604fd5","html_url":"https://github.com/kubernauts/parameterizer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kubernauts/parameterizer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernauts%2Fparameterizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernauts%2Fparameterizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernauts%2Fparameterizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernauts%2Fparameterizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kubernauts","download_url":"https://codeload.github.com/kubernauts/parameterizer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kubernauts%2Fparameterizer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263154352,"owners_count":23422011,"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":["application","crd","helm","installer","ksonnet","kubernetes","operator"],"created_at":"2025-07-02T14:10:40.297Z","updated_at":"2025-07-02T14:10:41.268Z","avatar_url":"https://github.com/kubernauts.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Parameterizer\n[![Go Report Card](https://goreportcard.com/badge/github.com/kubernauts/parameterizer)](https://goreportcard.com/report/github.com/kubernauts/parameterizer)\n[![godoc](https://godoc.org/github.com/kubernauts/parameterizer?status.svg)](https://godoc.org/github.com/kubernauts/parameterizer)\n\n`Parameterizer` is a command line tool and Kubernetes operator for handling application lifecycle management, generically.\n\n**Currently tested and works only with Kubernetes 1.9**\n\nJust like `Ingress` allows to generically define how traffic is routed to Kubernetes services, with different backends (NGINX, HAProxy) providing the functionality, the `Parameterizer` resource defines a sequence of commands applied to an app definition input (directory or registry such as [Quay.io](https://quay.io/application/) or [Kubestack](https://www.kubestack.com/)), turning Kubernetes application definitions (e.g. expressed in [Helm templates](https://github.com/kubernetes/helm/blob/master/docs/chart_template_guide/functions_and_pipelines.md), [ksonnet](https://ksonnet.io/docs/concepts), [kapitan](https://github.com/deepmind/kapitan), etc.) along with user-defined parameters into a parameterized Kubernetes YAML manifest.\n\nThis parameterized YAML manifest defines the necessary deployments, services, etc. for the app and can, for example, be used in a `kubectl apply` command to create the resources or via Helms' [Tiller](https://docs.helm.sh/glossary/#tiller), [appr](https://github.com/app-registry/appr), or other installers/ALM tools.\n\nThe overall `Parameterizer` architecture is as follows:\n\n![Parameterizer architecture](img/parameterizer-architecture.png)\n\n## Install\n\nFor now we do not provide binaries so you'll need to have [Go](https://golang.org/dl/) installed to use the `krm` CLI tool. We've been testing it using `go1.9.2 darwin/amd64` and `go version go1.10 darwin/amd64`. \n\nTo build `krm` from source, do the following:\n\n```\n$ go get github.com/kubernauts/parameterizer/cli/krm\n```\n\nNote that if your `$GOPATH/bin` is in your `$PATH` then now you can use `krm` from everywhere. If not, you can 1) do a `cd $GOPATH/src/github.com/kubernauts/parameterizer/cmd` followed by a `go build` and use it from this directory, or 2) run it using `$GOPATH/bin/krm`.\n\n## Use\n\nIn general, the workflow would be something like:\n\n1. the application author creates the `Parametrizer` manifest along with its package such as a `helm-chart.yaml`.\n1. the operator can then take the `Parametrizer` resource and deploy the application with the installer or deploy manager she wants (e.g. `kubectl`).\n1. in addition to above, the operator can create a new `Parametrizer` resource to chain additional transformations and/or or compose dependencies.\n\nFor example, if you have the following `Parameterizer` resource in a file `kubeless.yaml` ([source](examples/kubeless.yaml)):\n\n```yaml\nkind: Parameterizer\napiVersion: kubernetes.sh/v1alpha1\nmetadata:\n  name: install-kubeless\nspec:\n  resources:\n  - name: kubeless-jsonnet\n    source:\n      fetch:\n        urls:\n          - https://raw.githubusercontent.com/kubeless/kubeless/master/kubeless.jsonnet\n          - https://raw.githubusercontent.com/kubeless/kubeless/master/kubeless-non-rbac.jsonnet\n        dest: /resources\n    volumeMounts:\n      - name: kubeless-input\n        mountPath: /resources\n\n  volumes:\n  - name: kubeless-input\n    emptyDir: {medium: \"\"}\n\n  transformations:\n  - container:\n      name: ksonnet\n      image: quay.io/ant31/ksonnet\n      command:\n        - kubecfg\n        - show\n        - -o\n        - yaml\n        - /resources/kubeless.jsonnet\n      volumeMounts:\n        - name: kubeless-input\n          mountPath: /resources\n```\n\nYou can apply the parameters and install the app like so:\n\n```\n$ krm expand kubeless.yaml | kubectl apply -f -\n```\n\n## Test\n\nFor now, just the simple unit-level test in Go (that is, no integration tests yet):\n\n```\n$ cd $GOPATH/src/github.com/kubernauts/parameterizer/pkg/parameterizer\n$ go test\nPASS\nok      github.com/kubernauts/parameterizer/pkg/parameterizer   0.007s\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernauts%2Fparameterizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkubernauts%2Fparameterizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkubernauts%2Fparameterizer/lists"}