Я хотел бы защитить свое веб-приложение, работающее на Kubernetes (EKS). Все узлы, подключенные к кластеру, работают в частных подсетях.
У меня есть одна внешняя служба и дюжина внутренних служб.
Внешняя служба - это модуль, запускающий контейнер, работающий на порту 80. Он настроен для подключения к ELB, который принимает трафик только от 443 с сертификатом https.
apiVersion: v1
kind: Service
metadata:
name: service_name
labels:
app: service_name
annotations:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: xxxxxxxxxx
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
ports:
- port: 443 # Exposed port
targetPort: 80 # Container port
selector:
app: service_name
type: LoadBalancer
Внутренние службы - это модули, работающие с контейнерами, также работающими на порту 80. Ни один из них не был настроен для доступа извне кластера. Внутренние службы общаются друг с другом, указывая на http://service_name (НЕ https), поскольку я настроил их с помощью этого шаблона:
apiVersion: v1
kind: Service
metadata:
name: service_name
spec:
ports:
- port: 80 # Exposed port
targetPort: 80 # Container port
selector:
app: service_name
Все это работает, но достаточно ли этого?
Должны ли внешние / внутренние контейнеры также использовать сертификат / 443 с подстановочным сертификатом https? Должна ли эта конфигурация выполняться внутри контейнера или в конфигурациях служб?