#kubernetes #microservices #kubernetes-ingress #amazon-eks
#kubernetes #микросервисы #kubernetes-вход #амазонка-экс
Вопрос:
У меня есть 5 микросервисов, которым я хочу разрешить внешний трафик. Эти микросервисы будут размещены на разных поддоменах. Я использую кластер K8s на EKS и запускаю кластер и другие службы. Кажется, что когда дело доходит до Ingress, возникает довольно много путаницы. Я настроил контроллер входа ALB, следуя этому руководству в eksworkshop. Это сработало для меня, и я могу развернуть игру 2048, как объясняется в руководстве.
Теперь я хочу разработать входной ресурс следующим образом:
# apiVersion: networking.k8s.io/v1beta1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: cluster-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
spec:
rules:
- host: app.my-domain.com
http:
paths:
- path: /*
backend:
serviceName: app-cluster-ip-service
servicePort: 3000
- host: ms1.my-domain.com
http:
paths:
- path: /*
backend:
serviceName: ms1-cluster-ip-service
servicePort: 8000
- host: ms2.my-domain.com
http:
paths:
- path: /*
backend:
serviceName: ms2-cluster-ip-service
servicePort: 2000
- host: ms3.my-domain.com
http:
paths:
- path: /*
backend:
serviceName: ms3-cluster-ip-service
servicePort: 4000
- host: website.my-domain.com
http:
paths:
- path: /*
backend:
serviceName: website-cluster-ip-service
servicePort: 3333
Итак, вот мои сомнения
- Как настроить ingress для перенаправления на разные порты в зависимости от домена? (когда я использовал Nginx, было предусмотрено настроить восходящий поток, а затем Nginx соответствующим образом маршрутизирует трафик)
- Какова процедура привязки его к моему зарегистрированному домену? (Сертификаты TLS с Cert manager позволяют шифровать)
- Что я должен поместить в свои записи DNS для всех поддоменов? (Запись / CNAME ALB) И все ли 5 поддоменов имеют одну и ту же запись / конфигурацию?
Я использую Cloudflare для управления DNS, если это помогает.
Ответ №1:
- Балансировщик нагрузки приложения использует правила для условной маршрутизации запросов к разным хостам / путям. Таким образом, контроллер балансировки нагрузки AWS поддерживает эту функцию с помощью аннотаций, подробности см. в документе doc.
- Вы можете использовать cert manager для управления сертификатами вашего домена. Также AWS load balancer поддерживает указание сертификата, хранящегося в ACM, если вы используете подстановочный сертификат.
- Да, вам необходимо создать несколько записей DNS для ваших доменов, независимо от используемого вами контроллера входа. Вы можете взглянуть на external-dns, чтобы сделать это автоматически.