Как мы можем предоставить сервисы Kubernetes широкой публике в AWS без использования LoadBalancers? - PullRequest
0 голосов
/ 11 февраля 2019

Я запускаю кластер Kubernetes на AWS с использованием Kops в первый раз, и мне нужна некоторая помощь в предоставлении услуг для общественности с помощью управляемого доменного имени AWS и сертификата SSL.

Кластер работает в частном VPC, и я могу получить к нему доступ через экземпляр бастиона.

Прямо сейчас я открываю доступ к сервисам, используя тип сервиса LoadBalancer, следующим образом:

apiVersion: v1
kind: Service
metadata:
  name: my-gateway-service
  namespace: {{ .Values.nameSpace }}
  labels:
    app: gateway
    tier: backend
  annotations:
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: 'http'
      service.beta.kubernetes.io/aws-load-balancer-ssl-port: '{{ .Values.services.sslPort }}'
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: '{{ .Values.services.sslCert }}'
spec:
  type: LoadBalancer
  selector:
    app: gateway
    tier: backend
  ports:
  - name: http
    port: 80
    targetPort: {{ .Values.applications.nodeAppPort }}
  - name: https
    port: 443
    targetPort: {{ .Values.applications.nodeAppPort }}

Как вы можете видеть, я передаю сертификат SSL с использованием аннотаций, затем я просто укажу имя домена для публичного доступа loadBalancer и готово.

Проблема: Этот проект является проектом микросервисов и требует, чтобы многие службы были доступны общественности в различных средах, что означает много AWS LoadBalancers и много денег $$$$.

Я имеюпробовал сервисы NodePort и ExternalName, но ни один из них не работал из-за частного VPC.

Есть предложения по решению этой проблемы?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Чтобы решить эту проблему, вы можете указать LoadBalancer на службу «обратный прокси», такую ​​как экземпляр NGINX или шлюз Istio (https://istio.io/docs/reference/config/istio.networking.v1alpha3/#Gateway), контроллер входа и другие параметры.

Таким образом, когда вы нажимаете https://[your_service_url]/[path], вы можете создавать правила, которые направляют к правильной внутренней службе в Kubernetes, основываясь на фактических значениях your_service_url или path.

Таким образом, вы платите только за 1 балансировщик нагрузки., но может содержать много служб в кластере.

0 голосов
/ 11 февраля 2019

Просмотр контроллеров входа .Это в основном экземпляр nginx, который настраивается программно с помощью аннотаций.Также доступно несколько других (например, конг)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...