Mit Services verbinden
Dieses Feature befindet sich derzeit in der Beta-Phase und ist nur über nctl verfügbar. Cockpit-Unterstützung ist noch nicht implementiert.
Deploio-Applikationen können sich mit On-Demand Services wie Datenbanken und Key-Value-Stores verbinden, indem sie Service-Referenzen in der Applikation definieren. Nine injiziert die Verbindungsdaten automatisch als Umgebungsvariablen in die Applikation zur Laufzeit.
Dabei erstellt und verwaltet Nine automatisch eine verschlüsselte ServiceConnection im Projekt des Ziel-Services. Eine manuelle Netzwerkkonfiguration ist nicht erforderlich.
Unterstützte Services
Folgende Service-Typen können von einer Deploio-Applikation referenziert werden:
Service-Referenz hinzufügen
Jede Service-Referenz erfordert ein Ziel (den gewünschten Service).
- Cockpit
- nctl
Das Verwalten von Service-Referenzen in Cockpit ist noch nicht verfügbar. Wir arbeiten derzeit an der Implementierung.
Bitte verwende vorerst nctl.
Verwende beim Erstellen einer neuen Applikation --service im Format name=kind/target-name:
nctl create application my-app \
--git-url=https://github.com/example/app.git \
--service cache=keyvaluestore/my-kvs
Um einen Service zu einer bestehenden Applikation hinzuzufügen:
nctl update application my-app \
--service cache=keyvaluestore/my-kvs
Um eine Service-Referenz zu entfernen:
nctl update application my-app \
--delete-service cache
Injizierte Umgebungsvariablen
Wenn Service-Referenzen konfiguriert sind, injiziert Nine die Verbindungsdaten als
Umgebungsvariablen in jede Instanz der Applikation. Die Variablennamen folgen dem Format
NINE_<IDENTIFIER>_<NAME>_<KEY>:
<IDENTIFIER>ist ein Kürzel für den Service-Typ, zum BeispielKVS,PGoderMYSQL. Die Tabellen unten zeigen den jeweiligen Identifier für ihren Service-Typ.<NAME>ist der Referenzname, den du in--service <name>=...vergibst (dername-Teil), in Grossbuchstaben und mit nicht-alphanumerischen Zeichen ersetzt durch_. Der Referenznamecachewird zum Beispiel zuCACHE.<KEY>bezeichnet das Verbindungsdetail, zum BeispielFQDN,PORToderPASSWORD.
Die Variablennamen verwenden den von dir gewählten Referenznamen, nicht den Namen der
Ziel-Serviceressource. --service cache=keyvaluestore/my-kvs erzeugt zum Beispiel Variablen wie
NINE_KVS_CACHE_FQDN — mit cache, nicht mit my-kvs.
Das Hinzufügen oder Ändern einer Service-Referenz aktualisiert eine laufende Instanz nicht automatisch. Nine injiziert die Variablen nur, wenn ein neues Release erstellt wird. Wenn deine Änderung nicht ohnehin ein neues Release erzeugt, löse eines aus, indem du das Release wiederholst:
nctl update app my-app --retry-release
Dadurch wird die Applikation erneut deployt: Deploio erstellt neue Instanzen mit der aktualisierten Umgebung und ersetzt die derzeit aktiven Instanzen. Rechne mit einem Deployment-Zyklus und plane die Änderung entsprechend.
Die verfügbaren Variablen hängen vom Service-Typ ab:
- Key-Value-Store
- PostgreSQL — Business
- PostgreSQL — Economy
- MySQL — Business
- MySQL — Economy
- OpenSearch
| Variable | Beschreibung |
|---|---|
NINE_KVS_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_KVS_<NAME>_PORT | Port (immer 6379). |
NINE_KVS_<NAME>_USER | Benutzername. |
NINE_KVS_<NAME>_PASSWORD | Passwort. |
NINE_KVS_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
| Variable | Beschreibung |
|---|---|
NINE_PG_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_PG_<NAME>_PORT | Port (immer 5432). |
NINE_PG_<NAME>_USER | Benutzername. |
NINE_PG_<NAME>_PASSWORD | Passwort. |
NINE_PG_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
NINE_PG_<NAME>_DSN | Vollständige PostgreSQL-Verbindungs-URI (postgres://user:pass@host:port/dbname). |
| Variable | Beschreibung |
|---|---|
NINE_PGDB_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_PGDB_<NAME>_PORT | Port (immer 5432). |
NINE_PGDB_<NAME>_USER | Datenbankname (entspricht dem bei der Erstellung vergebenen Namen). |
NINE_PGDB_<NAME>_PASSWORD | Passwort. |
NINE_PGDB_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
NINE_PGDB_<NAME>_DSN | Vollständige PostgreSQL-Verbindungs-URI (postgres://user:pass@host:port/dbname). |
| Variable | Beschreibung |
|---|---|
NINE_MYSQL_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_MYSQL_<NAME>_PORT | Port (immer 3306). |
NINE_MYSQL_<NAME>_USER | Benutzername. |
NINE_MYSQL_<NAME>_PASSWORD | Passwort. |
NINE_MYSQL_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
| Variable | Beschreibung |
|---|---|
NINE_MYSQLDB_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_MYSQLDB_<NAME>_PORT | Port (immer 3306). |
NINE_MYSQLDB_<NAME>_USER | Benutzername (entspricht dem bei der Erstellung vergebenen Datenbanknamen). |
NINE_MYSQLDB_<NAME>_PASSWORD | Passwort. |
NINE_MYSQLDB_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
| Variable | Beschreibung |
|---|---|
NINE_OS_<NAME>_FQDN | Hostname. Verwendet privates Networking-DNS, wenn privates Networking konfiguriert ist; andernfalls den öffentlichen Hostname. |
NINE_OS_<NAME>_USER | Benutzername. |
NINE_OS_<NAME>_PASSWORD | Passwort. |
NINE_OS_<NAME>_CA_CERT | CA-Zertifikat. Wird nur injiziert, wenn ein CA-Zertifikat vorhanden ist. |
Injizierte Variablen überprüfen
- Cockpit
- nctl
Das Anzeigen der injizierten Variablen im Cockpit ist noch nicht verfügbar. Wir arbeiten derzeit
an der Implementierung. Bitte verwende vorerst nctl.
Überprüfe die injizierten Variablen auf zwei Arten:
-
In der Release-Ressource (nicht der Applikations-Ressource). Releases haben generierte Namen, liste sie also zuerst auf und untersuche dann das neueste. Das Feld
serviceEnvVarslistet die Namen der injizierten Variablen auf (die Werte liegen in einem referenzierten Secret und werden hier nicht angezeigt):nctl get releases -p my-projectnctl get releases <release-name> -p my-project -o yaml -
In einer laufenden Instanz, indem du deren Umgebung auflistest. Das zeigt sowohl die Namen als auch die Werte:
nctl exec app my-app -p my-project -- env
Wenn die Variablen fehlen, prüfe, ob nach dem Hinzufügen der Service-Referenz ein neues Release erstellt wurde.