Variables
Environment variables, encrypted secrets and references between services.
Add variables
Open a service's Variables:
- + New variable adds one.
- Raw editor edits all of them as text, one
NAME=valueper line. Paste a.envfile to add many at once:export, quotes and comments are understood, and when a name appears twice the last value is used. Saving applies the text as it is: a line you removed deletes that variable. - For a service built from GitHub, Suggested from the repository lists the variables declared in files such as
.env.example,.env.sampleor.env.template. Nothing is added until you import it.
Variables apply on the next deployment. Saving them does not restart the running version.
Rules
| Name | Capital letters, digits and _, starting with a letter, up to 64 characters: ^[A-Z][A-Z0-9_]{0,63}$ |
| Reserved prefixes | RASEEF_, SAUDI_, KUBERNETES_, DB_RUNTIME_ |
| Variables per service | 256 |
| One value | 4,096 bytes |
| All variables of a service | 32 KiB, names included |
Secrets
Every value is encrypted at rest (AES-256-GCM). People who can edit a service can show its values with Show values; each time is recorded in the audit log. Viewers cannot.
Values of variables are masked in your app's logs when they are at least 4 characters long and are not a common word
like true or production; so are values after Bearer and after password=, token=, secret= or
authorization=. In build logs, values of 8 characters or more are masked, except values made only of letters.
Masking is a safety net: do not print secrets in your logs.
Variables Raseef sets
For services built from GitHub, Raseef sets:
| Variable | Value |
|---|---|
PORT | The service's port (8080 by default). |
HOME | /tmp |
If you set PORT yourself, your value wins. Image services do not get PORT.
Reference another service
A value can use another service's variable:
DATABASE_URL=${{ db.DATABASE_URL }}
API_URL=https://${{ api.RASEEF_PRIVATE_DOMAIN }}:${{ api.RASEEF_PRIVATE_PORT }}The form is ${{ service.VARIABLE }}, where service is the other service's name. The reference is kept by the
service's identity, not its name, so renaming a service does not break it.
What you can reference:
- any plain variable of another service;
RASEEF_PRIVATE_DOMAINandRASEEF_PRIVATE_PORTof a service with a private port: its address and port on the private network;- the connection variables of templates, like
DATABASE_URL,REDIS_URLorMONGO_URL.
Rules:
- Only services in the same environment, and never the service itself.
- One level only: a variable that other services reference must be a plain value, not a reference.
- Up to 256 references per service.
When references are resolved
A reference is resolved when your service deploys, from the last deployed version of the other service. If that
service has not been deployed yet, the deploy says so. RASEEF_PRIVATE_DOMAIN and RASEEF_PRIVATE_PORT are available as
soon as the other service has its port set.
The resolved values are kept with the deployment: rolling back uses the values it had, and a restart keeps the current ones. When a referenced value changes, your service is not redeployed; the console shows which sources changed, and you deploy when ready.