#ssl #https #kubernetes #traefik #aws-load-balancer
#ssl #https #kubernetes #traefik #aws-балансировщик нагрузки
Вопрос:
Я развертываю веб-приложение (набор взаимодействующих серверов узлов) на kubernetes. Я использую контроллер Traefik в качестве балансировщика нагрузки, а также для внутренней связи в кластере. Я приобрел доменное имя через AWS и настроил его с помощью простого балансировщика нагрузки по маршруту 53. Он в значительной степени работает для http://.com domain-name
. Я пытаюсь настроить SSL-сертификаты (приобретенные у внешнего поставщика, не AWS), чтобы сделать веб-сайт https. Но это не работает. Я всегда заканчиваю тем, что время ожидания соединения истекло. Но http-способ работает довольно хорошо.
- Я получил SSL-сертификаты от ИТ-отдела моей компании с файлами csr, key, interm. Исходя из этого, была создана новая конфигурация в AWS Certificate manager.
- Контроллер входа Traefik теперь настроен с включенным SSL, принудительным SSL, а также с телом сертификата и набором ключей. Я использую диаграмму управления traefik, где я сохраняю их в values.yaml.
- Ссылка балансировщика нагрузки, созданная после установки контроллера traefik, настраивается с помощью конфигурации AWS cert manager, созданной на шаге (1). В настройках балансировщиков нагрузки в консоли AWS открываем порт https.
- Кроме того, я настраиваю секретные объекты, содержащие SSL-сертификаты, во время настройки входа.
Для начинающих это пример приложения, я пытаюсь получить доступ через контроллер traefik через https.
apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
selector:
app: hello-kubernetes
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes
spec:
replicas: 1
selector:
matchLabels:
app: hello-kubernetes
template:
metadata:
labels:
app: hello-kubernetes
spec:
containers:
- name: hello-kubernetes
image: gcr.io/hello-minikube-zero-install/hello-node
ports:
- containerPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-world-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: traefik
traefik.frontend.rule.type: PathPrefixStrip
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: hello-kubernetes
servicePort: 80
tls:
- secretName: traefik-ui-tls-cert
Что касается схемы управления контроллером traefik,
ssl:
enabled: true
enforced: false
permanentRedirect: false
upstream: false
insecureSkipVerify: false
generateTLS: false
defaultSANList: []
defaultIPList: []
defaultCert: <crt from IT> (which I converted from csr file that IT gave me using openssh tool)
defaultKey: <key from IT>
И в консоли aws для балансировщика нагрузки на вкладке «слушатели» я добавляю следующую конфигурацию.
HTTPS-443-HTTP-80-e1e4096b-6a31-4b2d-9d33-9f3f94ab0320 (ACM) Change
Я должен иметь доступ к своему веб-сайту по протоколу https. Но я могу получить к нему доступ только по http.
Есть предложения?