A commandline cli tool to fetch, merge and convert secrets and config maps in k8s to dot env property file.
npm install dotenv-from-k8sA commandline cli tool to fetch, merge and convert secrets and config maps in k8s to dot env property file.
In most frontend projects environment variables are built as part of docker build. This tool allows you to create a .env file from k8s secrets and config maps before doing a docker build. This way you can store your secrets in k8s secrets just like you would for a nodejs service.
This tool uses kubernetes apis via the official kubernetes client for javascript and
will use your currently configured kubectl to perform necessary api calls. So make sure you have configured your kubectl correctly before running this.
``sh`
npm install -g dotenv-from-k8s
`s
dotenv-from-k8s 1.4.0 - A commandline cli tool to fetch, merge and convert secrets and config maps in k8s to dot env property file.
USAGE
dotenv-from-k8s
OPTIONS
-i, --input Input configuration file optional default: false
-o, --out Output env file name, defaults to stdout optional default: false
-s, --secret
-c, --configmap
-n, --namespace
-x, --context
MORE INFO
Basic example:
---------------
dotenv-from-k8s -c api-config -o .env
or
dotenv-from-k8s -c api-config > .env
Advanced example:
----------------
dotenv-from-k8s -s api-secrets -s api-secrets2 -c api-config -c api-config2 -n default > .env
Config file example: namespace: default EOL dotenv-from-k8s -i env-from.yaml -o .env namespace: default EOL dotenv-from-k8s -i env-from.yaml -o .env -h, --help Display help
--------------------
cat > env-from.yaml <
envFrom:
- secretRef:
name: app-secrets
- configMapRef:
name: app-config
Config file example with overrides:
-----------------------------------
cat > env-from.yaml <
envFrom:
- secretRef:
name: app-secrets
- configMapRef:
name: app-config
overrides:
HELLO: WORLD
ANOTHER_KEY: ANOTHER_VALUE
GLOBAL OPTIONS
-V, --version Display version
--no-color Disable colors
--quiet Quiet mode - only displays warn and error messages
-v, --verbose Verbose mode - will also output debug messages
`Example
$3
dotenv-from-k8s -c api-config -o .envdotenv-from-k8s -c api-config > .env
or
dotenv-from-k8s -s api-secrets -s api-secrets2 -c api-config -c api-config2 -n default > .env
env-from.yaml
``
namespace: default
envFrom:
- secretRef:
name: app-secrets
- configMapRef:
name: app-config
overrides:
Hello: World
dotenv-from-k8s -i env-from.yaml -o .env
If you do not want to use this tool for some reason you can try
PS: You will need jq version 1.6+ installed on your system.
`sh
kubectl get secrets/api-secrets -o json | \
jq -r '.data | map_values(@base64d) | to_entries[] | "\(.key)=\(.value)"' > .env
kubectl get configmaps/api-config -o json | \
jq -r '.data | to_entries[] | "\(.key)=\(.value)"' >> .env
``