{"id":36616539,"url":"https://github.com/pelotech/jsonnet-controller","last_synced_at":"2026-01-12T09:12:29.361Z","repository":{"id":39718870,"uuid":"374209912","full_name":"pelotech/jsonnet-controller","owner":"pelotech","description":"A fluxcd controller for managing manifests declared in jsonnet","archived":false,"fork":false,"pushed_at":"2023-03-10T22:59:49.000Z","size":758,"stargazers_count":66,"open_issues_count":9,"forks_count":3,"subscribers_count":10,"default_branch":"main","last_synced_at":"2024-11-15T00:57:22.643Z","etag":null,"topics":["fluxcd","jsonnet","kubecfg","kubernetes","tanka"],"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/pelotech.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":"2021-06-05T20:51:12.000Z","updated_at":"2024-10-26T11:11:42.000Z","dependencies_parsed_at":"2024-06-19T00:25:36.477Z","dependency_job_id":"85cf45bf-30f1-4c83-adad-6932bf806975","html_url":"https://github.com/pelotech/jsonnet-controller","commit_stats":null,"previous_names":["pelotech/kubecfg-operator"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/pelotech/jsonnet-controller","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelotech%2Fjsonnet-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelotech%2Fjsonnet-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelotech%2Fjsonnet-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelotech%2Fjsonnet-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pelotech","download_url":"https://codeload.github.com/pelotech/jsonnet-controller/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pelotech%2Fjsonnet-controller/sbom","scorecard":{"id":726905,"data":{"date":"2025-08-11","repo":{"name":"github.com/pelotech/jsonnet-controller","commit":"7828024e1136e5771f98a54f8d6dab1965c66de0"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.9,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/19 approved changesets -- score normalized to 0","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":"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":"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":"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":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: 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":"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":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/codeql-analysis.yml:29","Info: jobLevel 'actions' permission set to 'read': .github/workflows/codeql-analysis.yml:28","Warn: no topLevel permission defined: .github/workflows/codeql-analysis.yml:1","Warn: no topLevel permission defined: .github/workflows/controller-images.yaml:1","Warn: no topLevel permission defined: .github/workflows/release-artifacts.yaml:1","Warn: no topLevel permission defined: .github/workflows/unit-tests.yaml:1","Info: no jobLevel write permissions found"],"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.0.9 not signed: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45602893","Warn: release artifact v0.0.8 not signed: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45404170","Warn: release artifact v0.0.7 not signed: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45219422","Warn: release artifact v0.0.6 not signed: https://api.github.com/repos/pelotech/jsonnet-controller/releases/44956834","Warn: release artifact v0.0.5 not signed: https://api.github.com/repos/pelotech/jsonnet-controller/releases/44919139","Warn: release artifact v0.0.9 does not have provenance: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45602893","Warn: release artifact v0.0.8 does not have provenance: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45404170","Warn: release artifact v0.0.7 does not have provenance: https://api.github.com/repos/pelotech/jsonnet-controller/releases/45219422","Warn: release artifact v0.0.6 does not have provenance: https://api.github.com/repos/pelotech/jsonnet-controller/releases/44956834","Warn: release artifact v0.0.5 does not have provenance: https://api.github.com/repos/pelotech/jsonnet-controller/releases/44919139"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:42: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql-analysis.yml:71: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/codeql-analysis.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/controller-images.yaml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/controller-images.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/controller-images.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/controller-images.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/controller-images.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/controller-images.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/controller-images.yaml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/controller-images.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-artifacts.yaml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/release-artifacts.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-artifacts.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/release-artifacts.yaml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-artifacts.yaml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/release-artifacts.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yaml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/unit-tests.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yaml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/unit-tests.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/unit-tests.yaml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/pelotech/jsonnet-controller/unit-tests.yaml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:25: pin your Docker image by updating gcr.io/distroless/static:nonroot to gcr.io/distroless/static:nonroot@sha256:cdf4daaf154e3e27cfffc799c16f343a384228f38646928a1513d925f473cb46","Info:   0 out of  10 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   4 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"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":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 11 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"}},{"name":"Vulnerabilities","score":0,"reason":"16 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2023-2048 / GHSA-6xv5-86q9-7xr8","Warn: Project is vulnerable to: GO-2022-1071 / GHSA-f4p5-x4vc-mh4v","Warn: Project is vulnerable to: GO-2024-2947 / GHSA-v6v8-xj6m-xwqh","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq","Warn: Project is vulnerable to: GO-2022-0962 / GHSA-7hfp-qfw3-5jxh","Warn: Project is vulnerable to: GO-2022-1165 / GHSA-53c4-hhmh-vw5q","Warn: Project is vulnerable to: GO-2022-1166 / GHSA-67fx-wx78-jx33","Warn: Project is vulnerable to: GO-2022-1167 / GHSA-6rx9-889q-vv2r","Warn: Project is vulnerable to: GO-2023-1547 / GHSA-pwcw-6f5g-gxf8","Warn: Project is vulnerable to: GO-2024-2554 / GHSA-v53g-5gjp-272r","Warn: Project is vulnerable to: GO-2024-2575 / GHSA-r53h-jv2g-vpx6","Warn: Project is vulnerable to: GO-2025-3601 / GHSA-4hfp-h4cw-hj8p","Warn: Project is vulnerable to: GO-2025-3602 / GHSA-5xqw-8hwv-wg92","Warn: Project is vulnerable to: GO-2025-3802 / GHSA-557j-xg8c-q2mm","Warn: Project is vulnerable to: GHSA-9h84-qmv7-982p","Warn: Project is vulnerable to: GHSA-f9f8-9pmf-xv68"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T13:05:31.533Z","repository_id":39718870,"created_at":"2025-08-22T13:05:31.533Z","updated_at":"2025-08-22T13:05:31.533Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28337655,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T06:09:07.588Z","status":"ssl_error","status_checked_at":"2026-01-12T06:05:18.301Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["fluxcd","jsonnet","kubecfg","kubernetes","tanka"],"created_at":"2026-01-12T09:12:27.496Z","updated_at":"2026-01-12T09:12:29.355Z","avatar_url":"https://github.com/pelotech.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# jsonnet-controller\n\nA fluxcd controller for managing manifests declared in jsonnet.\n\nKubecfg (and its internal libraries) as well as Tanka-style directories with a `main.jsonnet` are supported.\n\n---\n\n[![Tests](https://github.com/pelotech/jsonnet-controller/actions/workflows/unit-tests.yaml/badge.svg)](https://github.com/pelotech/jsonnet-controller/actions/workflows/unit_tests.yaml)\n[![Build](https://github.com/pelotech/jsonnet-controller/actions/workflows/controller-images.yaml/badge.svg)](https://github.com/pelotech/jsonnet-controller/actions/workflows/build_images.yaml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pelotech/jsonnet-controller)](https://goreportcard.com/report/github.com/pelotech/jsonnet-controller)\n\nThis project is in very early stages proof-of-concept still. So expect bugs. But please feel free to open an Issue if you spot any :smile:.\n\n- [Quickstart](#quickstart)\n  - [Installing](#installing)\n    - [Flux2](#using-flux)\n    - [Kubectl](#using-kubectl)\n    - [Kubecfg](#using-kubecfg)\n    - [CLI](#using-the-konfig-cli)\n    - [Kustomize](#using-kustomize)\n  - [Examples](#examples)\n- [Development](#development)\n\n## Quickstart\n\nAPI Documentation is available [here](doc/konfigurations.md#konfigurationspec).\n\n### Installing\n\nThere are multiple ways to install the `jsonnet-controller`.\n\n_NOTE: To set up Flux Alerts from Konfigurations you will need to patch the enum in the Alerts CRD.\nThere is a [patch](config/notification-alerts-patch.json) included in this repository that can do this for you. You can apply it directly or include the [yaml](config/notification-alerts-patch.yaml) version in `gotk-patch.yaml` with your `flux bootstrap`.\nYou can also add something like the following to your cluster's `kustomization.yaml`:_\n\n```yaml\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nresources:\n- gotk-components.yaml\n- gotk-sync.yaml\npatchesJson6902:\n- target:\n    group: apiextensions.k8s.io\n    version: v1\n    kind: CustomResourceDefinition\n    name: alerts.notification.toolkit.fluxcd.io\n  path: 'alerts-crd-patch.yaml' # The downloaded patch in your flux repository\n\n```\n\n#### Using Flux\n\nIf you have an existing flux2 setup on your cluster, you can add the `jsonnet-controller` to the Flux control-plane easily with the following commands:\n\n```bash\n# Create a GitRepository source for this repository\nflux create source git jsonnet-controller --url=https://github.com/pelotech/jsonnet-controller --branch=main\n\n# Create a Kustomization for the jsonnet-controller. \n# By default it will install to the flux-system namespace.\n# You can set interval and other options as you please.\nflux create kustomization jsonnet-controller \\\n        --source=GitRepository/jsonnet-controller \\\n        --path=\"./config/default\" \\\n        --prune=true \\\n        --interval=5m \\\n        --validation=client\n```\n\nYou may want to patch the output to pin the image at a specific version. The kustomize manifests in the repository point at `latest`.\n\n#### Using `kubectl`\n\n```bash\nexport VERSION=v0.0.9\n\nkubectl apply -f https://github.com/pelotech/jsonnet-controller/releases/download/${VERSION}/jsonnet-controller.yaml\n\n# To apply a manifest with the latest changes.\n#   kubectl apply -f https://github.com/pelotech/jsonnet-controller/raw/main/pkg/cmd/manifest.yaml\n\n# Apply the patch to the Flux Alerts CRD to allow alerts from Konfigurations.\n# This step is optional, but required for all installation methods at the moment\n# if desired.\nkubectl patch crd alerts.notification.toolkit.fluxcd.io --type json \\\n  --patch-file \u003c(curl -sL https://github.com/pelotech/jsonnet-controller/raw/main/config/notification-alerts-patch.json)\n```\n\nYou can also use the manifest from the `main` branch to deploy the `latest` tag.\n\n#### Using [`kubecfg`](https://github.com/bitnami/kubecfg/releases)\n\nThere is a `kubecfg` manifest located [here](config/jsonnet/jsonnet-controller.jsonnet). You can either invoke it directly, or import it to make your own modifications. You will need to clone the repository first.\n\n```bash\ngit clone https://github.com/pelotech/jsonnet-controller \u0026\u0026 cd jsonnet-controller\n\nkubecfg update config/jsonnet/jsonnet-controller.jsonnet\n# To install a specific version of the controller\nkubecfg update --tla-str version=${VERSION} config/jsonnet/jsonnet-controller.jsonnet\n```\n\n#### Using the `konfig` CLI.\n\nThere is an experimental CLI included with this project, that among other things, can install the jsonnet-controller into a cluster. The feature is available since `v0.0.5`.\nTo install, just download the latest CLI from the [releases](https://github.com/pelotech/jsonnet-controller/releases) page and run:\n\n```bash\nkonfig install\n```\n\nUse the `--kubeconfig` flag to specify a kubeconfig different then `~/.kube/config`.\n\n#### Using `kustomize`\n\nKubebuilder generates `kustomize` manifests with the project. You can use them by cloning the repository down and executing the following:\n\n```bash\ngit clone https://github.com/pelotech/jsonnet-controller \u0026\u0026 cd jsonnet-controller\n\ncd config/default\n## This is the current value, but if you want to change the image\nkubectl kustomize edit set image controller=ghcr.io/pelotech/jsonnet-controller:latest\n## Deploy\nkubectl kustomize | kubectl apply -f -\n```\n\nUsing `kustomize` you will want to tie any additional cluster permissions necessary to the created manager role.\nThe other installation methods by default make the manager a cluster-admin.\n\n### Examples\n\nFirst (at the moment this is optional), define a `GitRepository` source for your `Konfiguration`:\n\n```yaml\n# config/samples/jsonnet-controller-git-repository.yaml\napiVersion: source.toolkit.fluxcd.io/v1beta1\nkind: GitRepository\nmetadata:\n  name: jsonnet-samples\n  namespace: flux-system\nspec:\n  interval: 30s\n  ref:\n    branch: main\n  url: https://github.com/pelotech/jsonnet-controller\n```\n\nFinally, create a `Konfiguration` for your application:\n\n```yaml\n# config/samples/whoami-source-controller-konfiguration.yaml\napiVersion: jsonnet.io/v1beta1\nkind: Konfiguration\nmetadata:\n  name: whoami\nspec:\n  interval: 30s\n  path: config/jsonnet/whoami-tla.jsonnet\n  prune: true\n  variables:\n    tlaStr:\n      name: 'whoami'\n    tlaCode:\n      port: '8080'\n  sourceRef:\n    kind: GitRepository\n    name: jsonnet-samples\n    namespace: flux-system\n```\n\nThis may change, but for now you can choose to skip the `sourceRef` and supply a path to a remote file over HTTP(S).\nThe file will be checked for changes at the provided interval.\n\n```yaml\napiVersion: jsonnet.io/v1beta1\nkind: Konfiguration\nmetadata:\n  name: whoami\nspec:\n  interval: 30s\n  path: https://raw.githubusercontent.com/pelotech/jsonnet-controller/main/config/jsonnet/whoami-tla.jsonnet\n  prune: true\n  variables:\n    tlaStr:\n      name: 'whoami'\n    tlaCode:\n      port: '8080'\n```\n\nYou can watch the status of the `Konfiguration` with `kubectl`:\n\n```bash\n# Available names and shortnames are konfiguration(s), konfig(s), konf(s)\n$ kubectl get konfig\nNAME     READY   STATUS                                                            AGE\nwhoami   True    Applied revision: main/0bceb3d69b046f51565a345f3105febbd7be62bd   1m32s\n\n$ kubectl get konfig -o wide\nNAME     READY   STATUS                                                            AGE    CURRENTREVISION                                 LASTATTEMPTEDREVISION\nwhoami   True    Applied revision: main/0bceb3d69b046f51565a345f3105febbd7be62bd   1m38s   main/0bceb3d69b046f51565a345f3105febbd7be62bd   main/0bceb3d69b046f51565a345f3105febbd7be62bd\n```\n\nSee the [samples](config/samples) directory for more examples.\n\n## Development\n\n### Building\n\nYou can use the `Makefile` to perform any build operations:\n\n```bash\n# After code changes to the API make sure you run deep-copy code and manifest\n# generation\nmake generate manifests\n\n## Below steps are only if you wish to build your own image. You can also download\n## from the public repository.\n\n# Builds the docker image\nmake docker-build\n\n# Builds the docker image with a custom tag\nmake docker-build IMG=my.repo.com/jsonnet-controller:latest\n\n# Push the docker image (also accepts the IMG argument)\nmake docker-push\n```\n\n### Local Testing\n\nThe instructions below assume you are using [`k3d`](https://k3d.io) for running a local kubernetes cluster. The instructions will work mostly the same for `kind`, `minikube`, etc. as well.\n\nThe most accurate installation manifest is the [jsonnet](config/jsonnet/jsonnet-controller.jsonnet) file. \nYou may also use the `kubebuilder` generated Kustomize manifests, but you will need to bind `cluster-admin` privileges to the manager yourself.\n\nTo use the `jsonnet` you will need to install [`kubecfg`](https://github.com/bitnami/kubecfg/releases).\n\n```bash\n# Make a test cluster\nk3d cluster create\n\n# Install flux\nflux install\n\n# Import the built image into the cluster if you did not push it\n# to a repository. Replace the image name with any overrides you did.\n# You can skip this step if you wish to pull the image from the public\n# repository.\nk3d image import ghcr.io/pelotech/jsonnet-controller:latest\n\n# Deploy the manager and CRDs to the cluster using kubecfg.\nkubecfg update config/jsonnet/jsonnet-controller.jsonnet\n```\n\nThere are also `Makefile` helpers to do the equivalent of all of the above:\n\n```bash\nmake cluster flux-install docker-load deploy\n#       |           |          |         |\n#   Create Cluster  |          |         |\n#              Install Flux    |         |\n#                          Load Image    |\n#                                 Deploy Controller and CRDs\n```\n\n---\n\n## TODO\n\nThese are features and other tasks that need to be completed before an initial release will be ready.\n\n- [ ] Unit and E2E Tests\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpelotech%2Fjsonnet-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpelotech%2Fjsonnet-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpelotech%2Fjsonnet-controller/lists"}