Skip to content

Commit 9d21b2c

Browse files
authored
Add a plugin description in README (#11)
1 parent bbd8f3e commit 9d21b2c

File tree

1 file changed

+67
-4
lines changed

1 file changed

+67
-4
lines changed

README.md

Lines changed: 67 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,75 @@
11
# helm-deno
22

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-
63
helm-deno allows write helm charts with JavaScript and TypeScript
74

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+
868
## Current limitations
969

1070
- Does not support passing options via equal sign `--values=values-file.yaml`
1171
- 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

Comments
 (0)