Включить HTTPS на GCE/GKE

Я запускаю веб-сайт с Kubernetes в Google Cloud. На данный момент все работает хорошо - через http. Но мне нужно https. У меня есть несколько сервисов, и один из них открыт для внешнего мира, позвольте назвать его веб-сайтом. Насколько мне известно, это единственный сервис, который необходимо изменить. Я попытался создать статический IP и TCP/SSL loadbalancer ssl-LB в разделе "Сеть" GCP и использовать этот LB в web.yaml, который я создаю. Создание сервиса застряло:

Error creating load balancer (will retry): Failed to create load 
balancer for service default/web: requested ip <IP> is 
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>

Однако, согласно GCP, мой IP статичен. Хэшированный LB я не могу найти нигде, и он должен быть назначен ssl-LB в любом случае. Как назначить это правильно?

Подробнее:

Вот содержимое web.yaml

apiVersion: v1
kind: Service
metadata:
name: web
labels:
  ...
spec:
  type: LoadBalancer
  loadBalancerIP: <RESERVED STATIC IP> 
ports:
- port: 443
  targetPort: 7770
selector:
  ...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        ...
  spec:
    containers:
    - name: web
      image: gcr.io/<PROJECT>/<IMAGE NAME>
      ports:
      - containerPort: 7770

Ответ 1

Поскольку вы уже не упомянули об этом, я просто предполагаю, что вы используете Google Container Engine (GKE) для настройки Kubernetes.

В манифесте ресурса службы, если вы устанавливаете Type to LoadBalancer, Kubernetes на GKE автоматически настраивает балансировку сетевой нагрузки (балансировщик нагрузки L4) с помощью GCE. Вам придется прекратить соединение в своем модуле с помощью собственного сервера или что-то вроде nginx/apache.

Если ваша цель - настроить балансировщик нагрузки (HTTP/HTTPS) L7 (что будет иметь место), будет проще и проще использовать ресурс Ingress в Kubernetes (начиная с версии v1.1). GKE автоматически настраивает балансировку нагрузки GCE HTTP/HTTPS L7 с помощью этой настройки.

Вы сможете добавить свои сертификаты TLS, которые автоматически будут загружены на балансировщик нагрузки GCE GKE.

Эта настройка имеет следующие преимущества:

  1. Укажите службы для каждого пути и порта URL Maps для его настройки используется URL Maps из GCE).
  2. Настройте и завершите SSL/TLS на балансировщике нагрузки GCE (для его настройки используются Target proxies из GCE).
  3. GKE автоматически также настроит health checks GCE для ваших служб.

Ваша ответственность будет заключаться в обработке логики бэкэнд-сервиса для обработки запросов в ваших контейнерах.

Более подробная информация доступна на странице GKE о настройке балансировки нагрузки HTTP.

Помните, что при использовании GKE он автоматически использует доступную поддержку балансировки нагрузки GCE для описанных выше случаев использования, и вам не нужно вручную настраивать балансировку нагрузки GCE.