|
1 | 1 | # helm-deno |
2 | 2 |
|
3 | | -> **⚠️ Work in progress, breaking changes are to be expected ⚠️** |
4 | | -> There is also no documentation yet but we'll write some in upcoming weeks |
5 | | -
|
6 | 3 | helm-deno allows write helm charts with JavaScript and TypeScript |
7 | 4 |
|
| 5 | +## ️Project status: Alpha️ |
| 6 | + |
| 7 | +Project currently in its early stage. Breaking changes are to be expected. Please read [changelog](https://github.com/CSSSR/helm-deno/releases) before upgrade. |
| 8 | + |
| 9 | +- [Known bugs](https://github.com/CSSSR/helm-deno/issues?q=is%3Aopen+is%3Aissue+label%3A%22issue+is+bug%22) |
| 10 | +- [Missign features](https://github.com/CSSSR/helm-deno/issues?q=is%3Aopen+is%3Aissue+label%3A%22priority+4+%28must%29%22) |
| 11 | +- [Expected breaking changes](https://github.com/CSSSR/helm-deno/issues?q=is%3Aopen+is%3Aissue+label%3A%22issue+is+breaking+suggestion%22+label%3A%22priority+4+%28must%29%22) |
| 12 | + |
| 13 | +## Features |
| 14 | + |
| 15 | +- Write charts in JavaScript and TypeScript |
| 16 | +- Easy to extend with deno modules |
| 17 | +- Can be used with helm-secrets, helm-diff and helm-push |
| 18 | + |
| 19 | +## What deno is? |
| 20 | + |
| 21 | +Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Learn more on [Deno official website](https://deno.land). |
| 22 | + |
| 23 | +## Installation |
| 24 | + |
| 25 | +```sh |
| 26 | +helm plugin install https://github.com/CSSSR/helm-deno |
| 27 | +``` |
| 28 | + |
| 29 | +There is no need to install Deno, it will be installed automatically. |
| 30 | + |
| 31 | +## Getting started |
| 32 | + |
| 33 | +```sh |
| 34 | +helm deno create chart-name # TODO: currently does not work (issue #10) |
| 35 | +``` |
| 36 | + |
| 37 | +It will create a directory structure that looks |
| 38 | +something like this: |
| 39 | + |
| 40 | +``` |
| 41 | +chart-name/ |
| 42 | +├── .helmignore # Contains patterns to ignore when packaging Helm charts. |
| 43 | +├── Chart.yaml # Information about your chart |
| 44 | +├── values.yaml # The default values for your templates |
| 45 | +└── deno-templates/ # The template files |
| 46 | + ├── mod.ts |
| 47 | + └── resources/ |
| 48 | + ├── deployment.ts |
| 49 | + ├── service.ts |
| 50 | + └── ingress.ts |
| 51 | +``` |
| 52 | + |
| 53 | +Render templates and print the result |
| 54 | + |
| 55 | +```sh |
| 56 | +helm deno template my-release chart-name/ |
| 57 | +``` |
| 58 | + |
| 59 | +## Use cases |
| 60 | + |
| 61 | +We have written this plugin because we wasn't happy with default helm's templates system: Go templates. There is some of things which wasn't possible with it or was too complex to deal with. |
| 62 | + |
| 63 | +**Working with data structures, not templates.** Programming languages are much more suitable for working with data such as kubernetes objects. And using functions instead of `define` and `template` is so much simpler. |
| 64 | +**Modules.** Deno has a big set of [standard](https://deno.land/std) and [third-party](https://deno.land/x) modules. Publishing your own modules is as easy as pushing file to git repository or serving static files. |
| 65 | +**Type System and static analysis.** Types for your chart values is a good documentaion which is always up-to-date. You are also safe from errors like typos and using variables that do not exist. |
| 66 | +**Ability to work with file system and network.** You can replace kubernetes operators or helm plugins with just a function. For example, decode a sops-encrypted file or fetch secrets from Hashicorp Vault. |
| 67 | + |
8 | 68 | ## Current limitations |
9 | 69 |
|
10 | 70 | - Does not support passing options via equal sign `--values=values-file.yaml` |
11 | 71 | - Require strict order of command-line arguments: `helm deno <secrets> <diff> upgrade/template/install [RELEASE] [CHART] <flags>` |
12 | | -- helm-deno was not tested on Windows but it should probably works |
| 72 | +- Does not support `--reuse-values` |
| 73 | +- Slower that go templates |
| 74 | +- Possible have bugs: doesn't have much tests yet |
| 75 | +- Was not tested on Windows but it should probably works |
0 commit comments