Я запускаю кластер 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.
Есть предложения по решению этой проблемы?