Kustomize (exec) plugin to generate secrets/config map from encrypted .env files and simple decrypter
It basically needs sops binary in your path to work and to run the tests, gpg is also required.
Just run the following script and it should place the binary on /usr/local/bin and it creates the kustomize structure to host the plugin.
curl -sL https://github.com/jaysonsantos/kustomize-sops-rs/raw/main/install.sh | bash -sThe output should be like this:
./install.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8139 0 8139 0 0 25675 0 --:--:-- --:--:-- --:--:-- 26003
Downloading binary https://github.com/jaysonsantos/kustomize-sops-rs/releases/download/v0.1.0/kustomize-sops-x86_64-unknown-linux-musl.gz
Done
Install kustomize-sops-x86_64-unknown-linux-musl to /usr/local/bin/kustomize-sops
Linking plugins
Linking kustomize-sops-rs to /home/jayson/.config/kustomize/plugin/kustomize-sops-rs/v1/configmapgenerator/ConfigMapGenerator
Linking kustomize-sops-rs to /home/jayson/.config/kustomize/plugin/kustomize-sops-rs/v1/secretgenerator/SecretGenerator
Linking kustomize-sops-rs to /home/jayson/.config/kustomize/plugin/kustomize-sops-rs/v1/simpledecrypt/SimpleDecrypt
This is a generator so your kustomize file should have something along these lines.
generators:
- secrets.yaml
and the secrets file
apiVersion: kustomize-sops-rs/v1
kind: SecretGenerator
metadata:
name: secrets
files:
- encrypted.yaml
---
apiVersion: kustomize-sops-rs/v1
kind: ConfigMapGenerator
metadata:
name: config-map
files:
- encrypted.yaml
---
apiVersion: kustomize-sops-rs/v1
kind: SimpleDecrypt
metadata:
name: simple-decrypt
files:
- ingress.enc.yamlThe kinds SecretGenerator and ConfigMapGenerator should generate Secret and ConfigMap the same
way kustomize does (with the shiny hashes) but it reads an yaml file with one level of mapping for now.
To test it, create an encrypted file with sops using the following command (assuming you imported the private key from tests folder)
printf "key: value\npassword: protected\n" | \
sops -p EBC846D0169D43A96ABA1C31AD471BDF8E8A0484 \
-e --input-type yaml --output-type yaml \
/dev/stdin > encrypted.yamlAfter this you could just run kustomize build --enable_alpha_plugins folder and it should generate your final yaml.
The kind SimpleDecrypt will just decrypt the file and pass it along, so it has to be a valid kubernetes object as you will probably apply it.