Как заставить ELB присоединиться к доменному имени в route53 в развертываниях Kubernates - PullRequest
0 голосов
/ 24 декабря 2018

В настоящее время я занимаюсь развертыванием и созданием сервиса с типом loadbalancer.Я могу получить доступ к POD через созданный ELB.Затем, используя маршрут 53, я присоединяю ELB к k8-test.abc.com, используя псевдоним.Ниже приведен фрагмент.

apiVersion: v1
kind: Service
metadata:
  name: %APP_FULL_NAME%-service-lb-http
  labels:
    appname: %APP_FULL_NAME%
    stage: %APP_ENV%
    component: app-kube-aws-elb
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "True"
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXXXXXXXXX:certificate/XXXXXXXXXXXXXXX
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http

spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 443
    targetPort: 8080
    protocol: TCP
  selector:
    appname: %APP_FULL_NAME%
    stage: %APP_ENV%

Но мне было интересно, есть ли способ, с помощью которого я могу внести некоторые изменения в развертывание, и ELB, который будет создан, автоматически присоединится к k8-test.abc.ком при создании.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

По умолчанию это не будет автоматически.Вы получите внешнюю конечную точку для своего ELB, а затем должны указать на нее свой маршрут53.

Это может означать, что вам придется делать указание снова, если вы воссоздаете Службу, но не Развертывание, поэтому вы можетепридерживайтесь последовательных обновлений, чтобы избежать необходимости делать много перерисовок.

Существуют и другие варианты, позволяющие избежать этого, включая NLB, Ingress и проект инкубатора с внешним DNS.Подход внешнего DNS автоматизировал бы настройку route53.Опции Ingress и NLB по-прежнему включают в себя route53, но, по крайней мере, убедитесь, что вам нужно сделать это только один раз.Для получения дополнительной информации о подходах Ingress и NLB см. Вопрос SO Как получить статическую конечную точку ELB для развертываний kubernates Я бы особенно рекомендовал рассмотреть Ingress, поскольку это также даст вам гибкость в применении правил маршрутизации с использованием путей в будущем.и заголовки, и потребуется только один раз установить ELB и route53 для всего кластера (что означает, что вы платите только за один ELB).

0 голосов
/ 24 декабря 2018

Существует проект инкубатора (читай: вы можете его использовать, но не жалуйтесь, если он сломается), который называется external-dns .Я не использовал это сам, но похоже, что он может делать то, что вы просите.Среди других провайдеров DNS, он также предлагает поддержку Route53.

После установки (вот документация о том, как настроить external-dns на AWS )Вы можете определить DNS-имя для Сервиса, используя аннотацию external-dns.alpha.kubernetes.io/hostname:

apiVersion: v1
kind: Service
metadata:
  name: %APP_FULL_NAME%-service-lb-http
  labels:
    appname: %APP_FULL_NAME%
    stage: %APP_ENV%
    component: app-kube-aws-elb
  annotations:
    external-dns.alpha.kubernetes.io/hostname: k8-test.abc.com
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "True"
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-1:XXXXXXXXXXXXX:certificate/XXXXXXXXXXXXXXX
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 443
    targetPort: 8080
    protocol: TCP
  selector:
    appname: %APP_FULL_NAME%
    stage: %APP_ENV%

Это автоматически создаст соответствующие записи DNS, которые будут псевдонимом DNS-имени k8-test-abc.com для вашего ELB.

...