Динамический маршрут к конкретному StateFulSet POD по имени хоста

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

Я могу сделать это, создав Ingress вот так:

apiVersion: voyager.appscode.com/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
spec:
  rules:
  - host: appscode.example.com
    http:
      paths:
      - path: /0
        backend:
          hostNames:
          - web-0
          serviceName: nginx-set
          servicePort: '80'
      - path: /1
        backend:
          hostNames:
          - web-1
          serviceName: nginx-set
          servicePort: '80'

При этом GET на appscode.example.com/0 будет перенаправлен на web-0 pod. Но как я могу сделать это динамически? Если я изменю реплики на 3, мне нужно будет вручную создать новый путь к модулю web-2, чтобы он стал доступным.


person fabriciols    schedule 03.04.2020    source источник
comment
Это не задача входа, а служба для распределения запросов между модулями. Не могли бы вы показать нам определение службы?   -  person Kartoch    schedule 03.04.2020
comment
сегодня к нему не прикреплена служба ... не могли бы вы показать мне пример того, как это сделать с помощью службы?   -  person fabriciols    schedule 03.04.2020
comment
Вы уверены ? Поскольку вход указывает на службу, вызывающую nginx-set в пространстве имен по умолчанию. Если у вас нет службы, вы не сможете получить доступ web-0 с помощью appscode.example.com/0   -  person Kartoch    schedule 04.04.2020
comment
это пример, созданный, чтобы попытаться объяснить мою проблему ... Итак, как я могу сделать это с помощью службы?   -  person fabriciols    schedule 04.04.2020


Ответы (1)


Вам нужна программа (оператор), слушающая Kubernetes API и исправляющая входящий ресурс каждый раз, когда количество подов в наборе с полным состоянием.

Используя go:

person Kartoch    schedule 04.04.2020
comment
но он будет балансировать нагрузку на соединение, верно? если да, мне нужно что-то другое, мне нужно иметь возможность подключиться к определенному модулю - person fabriciols; 04.04.2020