Connecting to Services
This feature is currently in beta and only available through nctl. Cockpit support is not yet implemented.
Deploio applications can connect to On-Demand Services such as databases and key-value stores by declaring service references on the application. Nine automatically injects the connection credentials as environment variables into the app at runtime.
Under the hood, Nine automatically creates and manages an encrypted ServiceConnection in the target service's project. No manual networking setup is required.
Supported Services
The following service types can be referenced from a Deploio application:
Add a Service Reference
Each service reference requires a destination (the service to connect to).
- Cockpit
- nctl
When creating a new application, use --service with the format name=kind/target-name:
nctl create application my-app \
--git-url=https://github.com/example/app.git \
--service cache=keyvaluestore/my-kvs
To add a service to an existing application:
nctl update application my-app \
--service cache=keyvaluestore/my-kvs
To remove a service reference:
nctl update application my-app \
--delete-service cache
Injected Environment Variables
When service references are configured, Nine injects the connection details as environment
variables into every instance of the application. Variable names use the format
NINE_<IDENTIFIER>_<NAME>_<KEY>, where <NAME> is the target service resource name
uppercased with non-alphanumeric characters replaced by _.
The available variables depend on the service type:
- Key-Value Store
- PostgreSQL — Business
- PostgreSQL — Economy
- MySQL — Business
- MySQL — Economy
- OpenSearch
| Variable | Description |
|---|---|
NINE_KVS_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_KVS_<NAME>_PORT | Port (always 6379). |
NINE_KVS_<NAME>_USER | Username. |
NINE_KVS_<NAME>_PASSWORD | Password. |
NINE_KVS_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |
| Variable | Description |
|---|---|
NINE_PG_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_PG_<NAME>_PORT | Port (always 5432). |
NINE_PG_<NAME>_USER | Username. |
NINE_PG_<NAME>_PASSWORD | Password. |
NINE_PG_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |
NINE_PG_<NAME>_DSN | Full PostgreSQL connection URI (postgres://user:pass@host:port/dbname). |
| Variable | Description |
|---|---|
NINE_PGDB_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_PGDB_<NAME>_PORT | Port (always 5432). |
NINE_PGDB_<NAME>_USER | Database name (same as the name assigned at creation). |
NINE_PGDB_<NAME>_PASSWORD | Password. |
NINE_PGDB_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |
NINE_PGDB_<NAME>_DSN | Full PostgreSQL connection URI (postgres://user:pass@host:port/dbname). |
| Variable | Description |
|---|---|
NINE_MYSQL_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_MYSQL_<NAME>_PORT | Port (always 3306). |
NINE_MYSQL_<NAME>_USER | Username. |
NINE_MYSQL_<NAME>_PASSWORD | Password. |
NINE_MYSQL_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |
| Variable | Description |
|---|---|
NINE_MYSQLDB_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_MYSQLDB_<NAME>_PORT | Port (always 3306). |
NINE_MYSQLDB_<NAME>_USER | Username (same as the database name assigned at creation). |
NINE_MYSQLDB_<NAME>_PASSWORD | Password. |
NINE_MYSQLDB_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |
| Variable | Description |
|---|---|
NINE_OS_<NAME>_FQDN | Hostname. Uses private networking DNS when private networking is configured; otherwise the public hostname. |
NINE_OS_<NAME>_USER | Username. |
NINE_OS_<NAME>_PASSWORD | Password. |
NINE_OS_<NAME>_CA_CERT | CA certificate. Only injected when a CA certificate is present. |