# Automated Helm Chart Generator This is a relatively simplistic Python app to simplify creating a Helm Chart more easily. Keep in mind, this is fairly opinionated and simplistic in it's implementation. This is on purpose. This largely developed for my own use rather than general applicability. ## Getting Started In general, there are 3 steps to run this automatation: 1. Run the appropriate installer script (technically this isn't required as you could just run the Python script directly but is for convenience) 2. Create and customize a `input.json` file that has the inputs for the script 3. Run the script ### On Windows Run the followng ```PowerShell .\install.ps1 ``` Next copy the `input.example.json` into the folder you want (replacing `` with the appropriate path) and rename it `input.json`. You'll also probably want to customize this file (though not technically required) ```PowerShell Copy-Item input.example.json \input.json ``` Then in the directory you want ```PowerShell create-helm-chart ``` ### On Mac/Linux (Uses Bash) Run the followng ```sh ./install.sh ``` Next copy the `input.example.json` into the folder you want (replacing `` with the appropriate path) and rename it `input.json`. You'll also probably want to customize this file (though not technically required) ```sh cp ./input.example.json /input.json ``` Then in the directory you want ```sh create-helm-chart ``` ## Inputs File (`input.json`) The most basic version is below. Note values between `<>` should be replaced with appropriate values. ```json { "chart": { "apiVersion": "v1", "appVersion": "1.0.0", "description": "A Helm chart for deploying .", "homepage": "", "maintainers": [ { "name": "", "email": "" } ], "name": "", "sources": [ "" ], "version": "1.0.0" }, "image": { "repository": "/", "pullPolicy": "IfNotPresent" }, "ingress": { "hostname": "" } } ``` ### Database (Postgres) To add a Postgres database include the following in the `inputs.json` file and fill out the values. ```json { "db": { "name": "", "host": "", "user": "", "password": "" } } ``` ### Secrets Vault (Hashicorp Vault) To add a Hashicorp secrets vault include the following in the `inputs.json` file and fill out the values ```json { "vault": { "image": { "repository": "", "tag": "" }, "hostname": "", "storageClass": "" } } ``` ### NoSQL Storage (Mongo) To add a Mongo instance include the following in the `inputs.json` file and fill out the values. ```json { "nosql": { "dbName": "", "user": "", "password": "", "tables": { "": { "name": "
", "value": "" } } } } ``` ### Cache Database (Redis) To add a Redis instance include the following in the `inputs.json` file and fill out the values. ```json { "cache": { "password": "" } } ``` ### OAuth To add the OAuth variables include the following in the `inputs.json` file and fill out the values. ```json { "oauth": { "baseAppUrl": "", "appAbbreviation": "", "appName": "", "serviceName": "", "devPort": "" } } ``` ### Third Party Services ```json { "thirdPartyServices": { "openai": { "apiKey": "" }, "stripe": { "publicKey": "", "secretKey": "", "testPublicKey": "", "testSecretKey": "" } } } ``` ### Extra/Other Environment Variables ```json { "extraEnvVars": { "": { "type": "Secret", "name": "{{ .Release.Name }}-", "key": "", "description": "", "value": "" }, "": { "type": "ConfigMap", "name": "{{ .Release.Name }}-", "key": "", "description": "", "value": "" }, "": "''" } } ``` ### Helm Resitry (for pushing) ```json { "registry": "" } ```