Skip to content

Service

Service

Un Service espone uno o più Pod tramite un endpoint stabile.Fa da “bridge” tra Pod e il resto del cluster

apiVersion: v1
kind: Service
metadata:
  name: sample-service
  labels:
    app: sample
spec:
  type: ClusterIP
  selector:
    app: sample
  ports:
    - name: http
      port: 80
      targetPort: 8080

NodePort

Espone il servizio su una porta del nodo (30000–32767).

apiVersion: v1
kind: Service
metadata:
  name: sample-nodeport
spec:
  type: NodePort
  selector:
    app: sample
  ports:
    - name: http
      port: 80          # porta interna al cluster
      targetPort: 8080  # porta del container/pod
      nodePort: 30080   # porta esposta sul nodo (opzionale)

Ingress

Un Ingress espone i Service tramite hostname e path

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: sample-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: app.local
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: sample-service
                port:
                  number: 80

IngressRoute

Utile con traefik

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: webapp-demo
  namespace: nginx
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`nginx.locale`)
      kind: Rule
      services:
        - name: webapp-demo
          port: 80

Load Balance

Espone il servizio via un Load Balancer esterno.

apiVersion: v1
kind: Service
metadata:
  name: sample-loadbalancer
spec:
  type: LoadBalancer
  selector:
    app: sample
  ports:
    - name: http
      port: 80
      targetPort: 8080