Service Connections
Eine ServiceConnection erstellt einen verschlüsselten, authentifizierten Tunnel zwischen einer Quelle und einem
Ziel-Service. Sie ermöglicht es Applikationen in NKE-Clustern oder Deploio,
On-Demand Services über ein privates Netzwerk statt über das öffentliche Internet zu erreichen.
Quellen
Folgende Quellen werden unterstützt:
- NKE Kubernetes-Cluster (
kubernetescluster) - Deploio-Applikationen (
application)
Ziele
Folgende Ziele werden unterstützt:
- Key-Value Store (
keyvaluestore) - MySQL (
mysql,mysqldatabase) - PostgreSQL (
postgres,postgresdatabase)
Das Ziel muss sich im selben Projekt wie die Service Connection befinden.
Service Connection erstellen
- Cockpit
- nctl
Service Connections sind in Cockpit noch nicht verfügbar. Bitte verwende vorerst nctl.
Verwende nctl create serviceconnection mit --source und --destination im Format
kind/name:
nctl create serviceconnection my-connection \
--source=kubernetescluster/my-cluster \
--destination=keyvaluestore/my-kvs
Verbindung zu einem Service über eine Service Connection herstellen
Nach der Konfiguration einer Service Connection kannst du über den privaten FQDN des Services eine Verbindung herstellen:
- Cockpit
- nctl
Service Connections sind in Cockpit noch nicht verfügbar. Bitte verwende vorerst nctl.
nctl get keyvaluestore my-kvs \
-o yaml
Notiere das Feld privateNetworkingFQDN in der Ausgabe.
Du kannst diesen FQDN verwenden, um eine Verbindung zum Service herzustellen.
Zugriff einschränken
Wenn du einen NKE Kubernetes-Cluster (kubernetescluster) als Quelle verwendest, kannst du den Zugriff auf bestimmte Pods oder Namespaces einschränken:
Zugriff nach Pod einschränken
Standardmässig können alle Pods im Quell-Cluster die Verbindung nutzen. Um den Zugriff auf bestimmte Pods einzuschränken, gib einen Label-Selektor an:
- Cockpit
- nctl
Service Connections sind in Cockpit noch nicht verfügbar. Bitte verwende vorerst nctl.
Verwende --source-pod-selector:
nctl create serviceconnection \
--source=kubernetescluster/my-cluster \
--destination=keyvaluestore/my-kvs \
--source-pod-selector='app=my-app,env=production'
Zugriff nach Namespace einschränken
Um die Verbindung auf bestimmte Namespaces zu beschränken, gib einen Namespace-Label-Selektor an:
- Cockpit
- nctl
Gib im Formular Service Connection erstellen einen Label-Selektor im Feld
Namespace-Selektor ein, zum Beispiel: kubernetes.io/metadata.name=production
Verwende --source-namespace-selector:
nctl create serviceconnection \
--source=kubernetescluster/my-cluster \
--destination=keyvaluestore/my-kvs \
--source-namespace-selector='kubernetes.io/metadata.name=production'
Wenn beide Selektoren gesetzt sind, können nur Pods, die dem Pod-Selektor entsprechen und sich in Namespaces befinden, die dem Namespace-Selektor entsprechen, die Verbindung nutzen.
Service Connections für Deploio-Applikationen
Wenn du Deploio verwendest, kann Nine Service Connections automatisch erstellen und verwalten, wenn du Service-Referenzen konfigurierst.