Zum Hauptinhalt springen

Kubernetes Service in Managed Namespace

ClusterIP Services#

ClusterIp is als Standard Service-Typ gedacht. Er ist nur innerhalb des Namespaces erreichbar. Sie können http Dienste durch einen Ingress von außen zugreifbar machen.

# Create hello world deploymentapiVersion: apps/v1kind: Deploymentmetadata:  name: nginxspec:  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginxdemos/hello        ports:        - name: http          containerPort: 80---# Create service for hello-world deploymentapiVersion: v1kind: Servicemetadata:  name: nginxspec:  ports:  - name: http    port: 80    protocol: TCP    targetPort: 80  selector:    app: nginx  type: ClusterIP

LoadBalancer Services#

LoadBalancer Services werden durch Ip-Port-Zuweisungen unterstützt. Sie repräsentieren eine feste Ip auf einem festen Port.

Erstellen#

  1. Menü Namespace auswählen
  2. Namespace auswählen in welchen Sie LoadBalancer Service deployen möchten
  3. Auf das Ports Fach am unteren Ende der Detailansicht klicken
  4. Auf Port-Zuweisung erstellen klicken, gewünschten Port eingeben und mittels erstellen bestätigen:
    • Der Port muss zwischen 1025 und 60000 liefen
    • Sollte der ausgewählte Port nicht verfügbar sein, schlagen wir vor einen anderen zu benutzen.
  5. Nach der Erstellung sollte der Port in der Übersicht zu sehen sein.
  6. Sie können Ihren Dienst nun wie unten dargestellt erstellen:

apiVersion: apps/v1kind: Deploymentmetadata:   name: nginxspec:   selector:      matchLabels:         app: nginx   template:      metadata:         labels:            app: nginx            # This deactivates the firewall for the given port            mayope/web-allowed: allowed      spec:         containers:            - name: nginx              image: nginx:1              ports:                 - name: http                   containerPort: 80---apiVersion: v1kind: Servicemetadata:   name: nginxspec:   loadBalancerIP: <<IP>> # The ip from the first column of the table   ports:      - name: http        port: {{PORT}} # The port from the second column of the table        protocol: TCP        targetPort: 80   selector:      app: nginx   type: LoadBalancer

Der Service ist verfügbar sobald der Container gestartet ist.

Das Label mayope/web-allowed: allowed wird benötigt weil jeder Namespace durch eine Firewall abgesichert ist, die externen Traffic außer vom Ingress-Controller blockiert. Diese Annotation deaktiviert diese Firewall für dieses Pod, also seien Sie vorsichtig was Sie im Internet freigeben.

NodePort Services#

NodePort services sind momentan nicht verfügbar und es gibt keine Pläne diese zu implementieren. Sollten Sie jedoch einen speziellen Anwendungsfall haben der nicht anders gelöst werden kann bitten wir Sie ein: Ticket zu erstellen.