https для eks loadbalancer - PullRequest
       59

https для eks loadbalancer

0 голосов
/ 29 июня 2019

Я хочу защитить свое веб-приложение, работающее на Kubernetes (EKS).У меня есть одна служба переднего плана. Служба переднего плана работает на порту 80. Я хочу запустить это на порту 443. Когда я получаю все kubectl. Я вижу, что мой балансировщик нагрузки работает на порту 443, но я не могуоткройте его в браузере.

---
apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-west-2:1234567890:certificate/12345c409-ec32-41a8-8542-712345678
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  type: LoadBalancer
  ports:
  - port: 443
    targetPort: 80
    protocol: TCP
  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: 123456789.dkr.ecr.us-west-2.amazonaws.com/demoui:demo123
        ports:
        - containerPort: 80
        env:
        - name: MESSAGE
          value: Hello Kubernetes!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    kubernetes.io/ingress.class: "alb"
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/success-codes: "200,404"
    alb.ingress.kubernetes.io/scheme: "internet-facing"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80} , {"HTTPS": 443}]'
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: hello-kubernetes
          servicePort: 80

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

AWS ALB Ingress Controller предназначен для создания приложения Load Balancer и соответствующих ресурсов на уровне AWS в файле конфигурации Ingress YAML. На самом деле, контроллер ALB Ingress анализирует конфигурацию для балансировщика нагрузки из файла определения Ingress YAML, а затем применяет целевые группы по одной на службу Kubernetes с указанными экземплярами и NodePorts , предоставляемые на определенных узлах. На верхнем уровне Слушатели предоставляют порт подключения для балансировщика нагрузки и принимают решение о маршрутизации запросов в соответствии с определенными правилами маршрутизации в соответствии с официальным рабочим процессом контроллера входных сигналов AWS ALB документация .

Сразу после короткого теоретического тура у меня возникли некоторые опасения по поводу текущей конфигурации:

  1. Сначала я бы порекомендовал проверить входной контроллер AWS ALB
    setup и просмотр соответствующих журналов:

kubectl logs -n kube-system $(kubectl get po -n kube-system | egrep -o "alb-ingress[a-zA-Z0-9-]+")

А затем проверьте, успешно ли был сгенерирован балансировщик нагрузки в AWS console .

  1. Проверка Целевые группы для конкретного ALB, чтобы убедиться, здоровье проверяет, все ли экземпляры k8s хороши.

  2. Убедитесь, что Группы безопасности содержат соответствующие правила брандмауэра для ваших экземпляров, чтобы разрешить входящий и исходящий сетевой трафик через ALB.

Я рекомендую вам ознакомиться с отдельной главой о перенаправлении HTTP на HTTPS в официальном AWS ALB Ingress Controller документация .

0 голосов
/ 08 июля 2019

Вот то, что я имею для того, чтобы мой кластер работал по https.

В моем входном / балансировщике нагрузки:

service.beta.kubernetes.io/aws-load-balancer-ssl-cert: CERT
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
    # ports using the ssl certificate
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # which protocol a Pod speaks

В моем контроллере Ingress configMap конфигурации nginx:

    app.kubernetes.io/force-ssl-redirect: "true"

Надеюсь, это работает для вас.

...