Secrets

Use secrets to conceal sensitive configuration from the deployment manifests.

Overview

When deploying applications you often end up specifying sensitive information in your deployment to enable secure database connections, providing API keys and other parameters that you normally wouldn't commit to the codebase. Synpse secrets decouples this configuration from your regular deployment files. Application spec can reference to secrets that were created in the same namespace.

Note: if you update secrets you will need to restart your applications for them to get the updated values.

Using secrets

You can view your existing secrets by selecting the namespace applications and then going to the secrets tab via the top toolbar:

Secrets tab will let you view, created, edit and delete existing secrets:

Creating a secret

Click on the "Create Secret" button if you want to add a new secret:

You can also use CLI to create a secret:

synpse secret create database-password --secret-value very-secret

Reference a secret from application spec

Secrets can be referenced as an environment variables in the application spec:

name: my-app
scheduling:
  type: AllDevices
  selectors: {}
spec:
  containers:
    - name: my-app
      image: my-organization/app:1.0.1
      env:
        - name: DATABASE_PASSWORD
          fromSecret: database-password

Never commit your secrets to git or GitHub, always reference them from the application spec to improve security.

Secret files

Secret maximum size is 100Kb

$ synpse secret create redis-config -f redis.conf

Secret can be used in application deployment by referring it in the spec

name: my-app
scheduling:
  type: AllDevices
  selectors: {}
spec:
  containers:
    - name: my-app
      image: my-organization/app:1.0.1
      secrets:
        - name: redis-config
          filepath: /path/to/redis.conf

File will be mounted to the Docker container and your application can read it from the specified file /path/to/redis.conf.

Last updated