Main idea was to add secrets vault. However, ended up with quite a bit of refactoring and changes

This commit is contained in:
Alan Bridgeman 2025-02-12 13:04:52 -06:00
parent b7f67bec68
commit bb94a44877
9 changed files with 946 additions and 185 deletions

157
README.md
View file

@ -39,4 +39,161 @@ cp ./input.example.json <Folder for Helm Chart>/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 <service name>.",
"homepage": "<Helm Chart Homepage>",
"maintainers": [
{
"name": "<Author Name>",
"email": "<Author Email>"
}
],
"name": "<Helm Chart Name>",
"sources": [
"<Helm Chart Source>"
],
"version": "1.0.0"
},
"image": {
"repository": "<Registry URL (if applicable)>/<Image Name>",
"pullPolicy": "IfNotPresent"
},
"ingress": {
"hostname": "<DNS Name Where The App Will Be Hosted>"
}
}
```
### Database (Postgres)
To add a Postgres database include the following in the `inputs.json` file and fill out the values.
```json
{
"db": {
"name": "<Database Name>",
"host": "<Database Host>",
"user": "<Database User>",
"password": "<Database 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": "<Vault Image Repository>",
"tag": "<Vault Image Tag>"
},
"hostname": "<DNS Name where the vault will be hosted>",
"storageClass": "<Storage Class Name>"
}
}
```
### NoSQL Storage (Mongo)
To add a Mongo instance include the following in the `inputs.json` file and fill out the values.
```json
{
"nosql": {
"dbName": "<NoSQL Database Name>",
"user": "<NoSQL Database User>",
"password": "<NoSQL Database Password>",
"tables": {
"<Table Environment Variable Name>": {
"name": "<Table Intermediate Name (used in Helm template files)>",
"value": "<Actual Table Name>"
}
}
}
}
```
### Cache Database (Redis)
To add a Redis instance include the following in the `inputs.json` file and fill out the values.
```json
{
"cache": {
"password": "<Cache Password>"
}
}
```
### OAuth
To add the OAuth variables include the following in the `inputs.json` file and fill out the values.
```json
{
"oauth": {
"baseAppUrl": "<Base URL of the App>",
"appAbbreviation": "<App Abbreviation>",
"appName": "<App Name>",
"serviceName": "<Service Name>",
"devPort": "<Dev Port>"
}
}
```
### Third Party Services
```json
{
"thirdPartyServices": {
"openai": {
"apiKey": "<OpenAI API Key>"
},
"stripe": {
"publicKey": "<Stripe Public Key>",
"secretKey": "<Stripe Secret Key>",
"testPublicKey": "<Stripe Test Public Key>",
"testSecretKey": "<Stripe Test Secret Key>"
}
}
}
```
### Extra/Other Environment Variables
```json
{
"extraEnvVars": {
"<Sensitive Environment Variable Name>": {
"type": "Secret",
"name": "{{ .Release.Name }}-<Sensitive Value Name (ex. private-token, etc...)>",
"key": "<Key Used Within The Secret (ex. token, etc...)>",
"description": "<Description Of The Environment Variable>",
"value": "<Value for the Environment Variable>"
},
"<Configurable Environment Variable Name>": {
"type": "ConfigMap",
"name": "{{ .Release.Name }}-<Configurable Value Name (ex. external-service-host, etc...)>",
"key": "<Key Used Within The ConfigMap (ex. extern-host, etc...)>",
"description": "<Description Of The Environment Variable>",
"value": "<Value for the Environment Variable>"
},
"<Environment Variable Name>": "'<Quoted Value>'"
}
}
```
### Helm Resitry (for pushing)
```json
{
"registry": "<Helm Registry URL to publish to (if applicable)>"
}
```