1

Я пытаюсь выяснить, как создать несколько входных ресурсов, совместно использующих IP. Или, если это невозможно, я хотел бы знать, есть ли какая-либо переадресация правило, которое я могу использовать в сочетании с записью Cloud DNS, которая обеспечивает весь трафик на IP-адрес (который я могу сделать статическим) к одному кубернетовскому кластеру.Настройка нескольких входных данных, служб, ресурсов развертывания и облачного DNS

По существу, я хотел бы настроить вход с каждой службой, содержащей один или более поддоменов и все входящие, чтобы указывать на один и тот же кластер. Прямо сейчас Я получаю другой эфемерный IP-адрес с каждым входящим. Могу ли я создать правило переадресации , которое указывает весь трафик на статический IP-адрес в кластер, а затем, возможно, создать подстановочную запись DNS, которая указывает все поддомены на статический IP-адрес?

Вот пример конфиг похоже на то, что я использую:

apiVersion: v1 
kind: Service 
metadata: 
    name: api-service 
    labels: 
    name: api-service 
spec: 
    type: NodePort 
    ports: 
    - port: 80 
     targetPort: 3000 
     protocol: TCP 
    selector: 
    name: api-deployment 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: api-deployment 
    labels: 
    name: api-deployment 
spec: 
    template: 
    metadata: 
     labels: 
     name: api 
    spec: 
     containers: 
     - image: us.gcr.io/[project]/hello-world:1.0.0 
      name: api 
      ports: 
      - containerPort: 3000 
      env: 
      - name: NAME 
       value: api 
--- 
apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: api-ingress 
spec: 
    backend: 
    serviceName: api-service 
    servicePort: 80 
    rules: 
    - host: api.example.com 
    http: 
     paths: 
     - backend: 
      serviceName: api-service 
      servicePort: 80 

Я создаю эти ресурсы на Кубэ кластер так:

$ kubectl create -f api.yml 

А потом увидеть попаданию, которая создается как так :

$ kubectl get ing 
NAME    RULE    BACKEND   ADDRESS   AGE 
api-ingress  -    api-service:80 130.211.32.223 1h 
        api.example.com 
            api-service:80 

Теперь представьте, что вы копируете этот ямль выше и меняете службу, развертывание nd Введите имя api-2 и создайте их. Вы бы в конечном итоге с чем-то вроде этого:

$ kubectl get ing 
NAME    RULE    BACKEND   ADDRESS   AGE 
api-ingress  -    api-service:80 130.211.32.223 1h 
        api.example.com 
            api-service:80 
api-2-ingress  -    api-2-service:80 130.211.22.214 1h 
        api-2.example.com 
            api-2-service:80 

И это нормально ... Но мне нужно, чтобы обеспечить весь трафик * .example.com идет к кластера так втекает могут выполнять свою магию и маршрут запросы на право услуг.

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

Возможно ли это как-то?

Похожие: https://github.com/kubernetes/kubernetes/issues/26935

+0

Если статический IP решает вашу проблему, просто зарезервируйте адрес для своего проекта. https://cloud.google.com/sdk/gcloud/reference/compute/addresses/create –

+0

@VikramTiwari вы имеете в виду взять один из тех эфемерных IP-адресов, которые используются при входе, верно? Если это так, проблема в том, что я буду продолжать добавлять входящие адреса, которые будут иметь разные IP-адреса, и они не будут связаны с DNS-записью * .example.com. Или я чего-то не хватает? – luisgo

+0

После того, как у вас есть статический IP-адрес, вы можете использовать его на балансировщике нагрузки для своего кластера и, следовательно, продолжать размножать новые входящие и добавлять их к балансировщику нагрузки. http://stackoverflow.com/questions/32266053/how-to-specify-static-ip-address-for-kubernetes-load-balancer –

ответ

1

Каждый вход ресурс будет иметь отдельный IP. Если вам нужно разделить один IP-адрес между доменами, вам необходимо настроить оба домена в одном и том же ресурсе входящего доступа. Попробуйте kubectl edit, если вы не хотите устанавливать исправления непосредственно в командной строке.

+0

Yup. Кажется, это так. Я понимаю. Мне интересно, есть ли способ добавить поверх этой настройки, чтобы обойти ограничение. Возможно, какое-то правило маршрутизации, которое отправляет весь трафик на статический IP-адрес в конкретный целевой пул. Даже если я должен сделать это за пределами кубернетов и прямо вычислить.Таким образом, я могу иметь подстановочную точку входа DNS для статического IP-адреса и правила для кластера. – luisgo

+1

Вы можете настроить балансировщик нагрузки L3 для IP-адреса и настроить прямой трафик на пул серверов nginx или apache, который выполняет балансировку L7. –

Смежные вопросы