Sobes.tech
Middle

Jak uzyskać dostęp do zewnętrznego adresu IP usługi opartej na load balancerze (load balancer service) w kontrolerze Ingress?

sobes.tech AI

Odpowiedź od AI

W kontrolerze Ingress nie uzyskuje się bezpośredniego dostępu do zewnętrznego IP serwisu typu LoadBalancer. Kontroler Ingress działa jako punkt wejścia i kieruje ruch do różnych serwisów na podstawie reguł zdefiniowanych w zasobie Ingress.

Aby uzyskać dostęp do serwisu typu LoadBalancer przez Ingress, należy:

  1. Utworzyć serwis typu LoadBalancer dla swojej aplikacji. Dostawca Kubernetes w chmurze przypisze temu serwisowi zewnętrzny adres IP.

    // service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
  2. Utworzyć zasób Ingress, który będzie kierował ruch do tego serwisu.

    // ingress.yaml
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-app-ingress
    spec:
      rules:
      - host: myapp.example.com # Lub inna domena/scieżka, pod którą będzie dostępna aplikacja
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-app-service # Nazwa twojego serwisu LoadBalancer
                port:
                  number: 80 # Port serwisu, na który będzie kierowany ruch
    
  3. Upewnić się, że kontroler Ingress jest zainstalowany i działa w klastrze. Kontroler Ingress (np. Nginx Ingress Controller, Traefik) będzie nasłuchiwał na przydzielony mu zewnętrzny adres IP i przekierowywał żądania na myapp.example.com do serwisu my-app-service.

W ten sposób dostęp do aplikacji jest zapewniony przez zewnętrzny IP kontrolera Ingress, a nie bezpośrednio przez zewnętrzny IP serwisu typu LoadBalancer (chociaż Ingress może korzystać z tego LoadBalancera, aby uzyskać dostęp do podów).