Google Kubernetes Engine: как определить один вход для нескольких пространств имен? - PullRequest
0 голосов
/ 07 ноября 2019

В GKE вход K8s - это LoadBalancers, предоставляемые Compute Engine, которые имеют определенную стоимость. Пример за 2 месяца я заплатил 16,97 €.

В моем кластере у меня есть 3 пространства имен (default, dev и prod), поэтому, чтобы уменьшить стоимость, я бы хотел избежать появления 3 LoadBalancers. Вопрос в том, как настроить текущий для указания на правильное пространство имен?

GKE требует, чтобы целевой сервис входа был типа NodePort, я застрял из-за этого ограничения.

Я хотел бы сделать что-то вроде:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
 namespace: dev
 annotations: # activation certificat ssl
   kubernetes.io/ingress.global-static-ip-name: lb-ip-adress     
spec:
 hosts:
    - host: dev.domain.com 
      http:
        paths:
          - path: /*
            backend:
              serviceName: dev-service # This is the current case, 'dev-service' is a NodePort
              servicePort: http

    - host: domain.com 
      http:
        paths:
          - path: /*
            backend:
              serviceName: prod-service # This service lives in 'dev' namespace and is of type ExternalName. Its final purpose is to point to the real target service living in 'prod' namespace.
              servicePort: http

    - host: www.domain.com 
      http:
        paths:
          - path: /* 
            backend:
              serviceName: prod-service
              servicePort: http

Поскольку GKE требует обслуживания, чтобы быть NodePort Я застрял с prod-service.

Любая помощь будет оценена.

Большое спасибо

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете использовать контроллер nginx-ingress. Он гораздо более гибкий и будет использовать только один балансировщик нагрузки GCP для всех входящих объектов. В паре с cert-manager у вас может быть бесплатный SSL, который по сути полностью управляется.

...