TDM Consult GmbHBusiness Flies
Zum Inhalt springen

Service ​

Services stellen stabile interne Endpunkte vor den Pods bereit. Für Frontend, Backend und Datenbank ist jeweils ein eigener Service vorgesehen.

Frontend-Service ​

bflies-frontend-svc ist ein ClusterIP-Service. Er leitet den HTTP-Port des Ingress an die Frontend-Pods weiter. Der Port erhält einen sprechenden Namen, auf den der Ingress verweist.

Backend-Service ​

bflies-backend-svc ist ebenfalls ein ClusterIP-Service. Er stellt API und Actuator-Endpunkte innerhalb des Clusters bereit. Ein separater Managementport wird nur verwendet, wenn dies betrieblich erforderlich ist.

Datenbank-Service ​

bflies-mysql-svc stellt Port 3306 für Backend und Flyway-Job im Namespace bereit. Im Normalbetrieb ist auch dieser Service vom Typ ClusterIP.

Ein externer Zugriff per NodePort wird nur eingerichtet, wenn Administration oder Migration ihn zwingend benötigen. Er muss zeitlich und netzwerkseitig begrenzt werden. Die ETE-NodePort-Konfiguration dient als Referenz, ist aber kein automatisch zu übernehmender Standard.

Zunächst einen freien Cluster Node Port heraussuchen:

$kubectl get svc --all-namespaces -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\t"}{.spec.ports[*].nodePort}{"\n"}{end}' | awk '$3 != ""'

Und dann:

apiVersion: v1
kind: Service
metadata:
  name: bflies-mysql-srv
  namespace: bflies-int
spec:
  externalTrafficPolicy: Cluster
  internalTrafficPolicy: Cluster
  ports:
    - nodePort: 30004
      port: 3306
      protocol: TCP
      targetPort: 3306
  selector:
    app.kubernetes.io/instance: bflies-int
    app.kubernetes.io/name: bflies-mysql
  sessionAffinity: ClientIP
  type: NodePort

Anschließend kann in der MySQL Workbench eine MySQL Connection hinzugefügt und ein Datenbank-Import durchgeführt werden.

Selektoren ​

Jeder Service selektiert nur Pods seiner Komponente. Vorgesehen sind Labels nach dem Kubernetes- Anwendungsschema, insbesondere app.kubernetes.io/name und app.kubernetes.io/instance.