No description
Find a file
2024-09-29 06:53:09 -04:00
apps chore(cert-manager): add http01 to letsencrypt clusterissuer 2024-09-29 06:53:09 -04:00
bootstrap chore(cnpg): update posgres operator from 1.22.2 to 1.24.0 2024-09-22 20:38:47 -04:00
old Merge remote-tracking branch 'origin/main' 2024-02-02 21:14:04 -05:00
projects chore(kavita): combine and rename manifest files 2024-09-19 14:16:39 -04:00
.sops.yaml chore(syncthing): override sync-data location 2024-05-25 15:50:19 -04:00
README.md chore: docs for adding encrypted secrets with ksops and age 2024-09-27 18:14:41 -04:00

Using KSOPS and adding secrets

Keys

The public key is stored in the repo as ./.sops.yaml. The private keys are:

  • K8s cluster as a secret
  • MacOS - $HOME/Library/Application Support/sops/age/keys.txt

1. Create the resource

cat <<EOF > secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm
EOF

2. Encrypt the resource

Note 1: the encryption key is included in the repo, but the decryption key is not

Note 2: Delete the plaintext resource after encrypting it.

# Encrypt with SOPS CLI
# Specify SOPS configuration in .sops.yaml
sops -e secret.yaml > secret.enc.yaml

3. Create teh KSOPS kustomize generator

# Create a local Kubernetes Secret
cat <<EOF > secret-generator.yaml
apiVersion: viaduct.ai/v1
kind: ksops
metadata:
  # Specify a name
  name: example-secret-generator
  annotations:
    config.kubernetes.io/function: |
        exec:
          # if the binary is in your PATH, you can do
          path: ksops
          # otherwise, path should be relative to manifest files, like
          # path: ../../../ksops
files:
  - ./secret.enc.yaml
EOF

4. Add to kustomization

generators:
  - ./secret-generator.yaml

5. Build to test

kustomize build --enable_alpha_plugins path/to/kustomization.yaml

References