Как добавить балансировщик нагрузки nginx в кластер kubernetes на Jelasti c? - PullRequest
0 голосов
/ 17 марта 2020

У меня есть следующий манифест jps:

jpsVersion: 1.3
jpsType: install
application:
  id: my-app
  name: My App
  version: 0.0

  settings:
    fields:
    - name: envName
      caption: Env Name
      type: string
      required: true
    - name: topo
      type: radio-fieldset
      values:
        0-dev: '<b>Development:</b> one master (1) and one scalable worker (1+)'
        1-prod: '<b>Production:</b> multi master (3) with API balancers (2+) and scalable workers (2+)'
      default: 0-dev
    - name: k8s-version
      type: string
      caption: k8s manifest version
      default: v1.16.3

  onInstall:
  - installKubernetes

  actions:
    installKubernetes:
      install:
        jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
        envName: ${settings.envName}
        displayName: ${settings.envName}
        settings:
          deploy: cc
          topo: ${settings.topo}
          dashboard: version2
          ingress-controller: Nginx
          storage: true
          api: true
          monitoring: true
          version: ${settings.k8s-version}
          jaeger: false

Теперь я хотел бы добавить балансировщик нагрузки перед кластером k8s, что-то вроде

  env:
    topology:
      nodes:
      - nodeGroup: bl
        nodeType: nginx-dockerized
        tag: 1.16.1
        displayName: Node balancing
        count: 1
        fixedCloudlets: 1
        cloudlets: 4

Конечно Приведенная выше установка kubernetes jps создает топологию. Поэтому я никак не могу вызвать вышеупомянутый раздел env. Как добавить новый узел в топологию, созданную jelasti c kubernetes jps? Я нашел addNodes , но, похоже, он не позволяет определить, что входит в группу узлов bl.

В API Jelasti c мне удалось найти метод EditNodeGroup , который, как мне кажется, решил бы мою проблему. Тем не менее, документация не очень понятна, в ней отсутствует пример, из которого я могу догадаться, как заполнить параметры. Как использовать этот метод для добавления балансировщика нагрузки nginx в мою среду k8s?

EDIT

Метод EditNodeGroup бесполезен для этой проблемы. Я думаю, что в настоящее время мой лучший вариант - это раскошелиться на jelasti c -jps / kubernetes и адаптировать перед установкой для моих нужд. У меня есть другой вариант? Я просмотрел API и не нашел способа добавить свой nginx балансировщик нагрузки.

1 Ответ

0 голосов
/ 19 марта 2020

Топология среды не может быть изменена во время вызова внешнего манифеста, поскольку она создается внутри этого манифеста. Но его можно изменить после манифеста fini sh. Весь подход:

onInstall:
  - installKubernetes
  - addBalancer
actions:
  installKubernetes:
    install:
      jps: https://github.com/jelastic-jps/kubernetes/blob/${settings.k8s-version}/manifest.jps
      envName: ${settings.envName}
...
  addBalancer:
    - install:
        envName: ${settings.envName}
        jps:
          type: update
          name: Add Balancer Node
          onInstall:
            - addNodes:
....

Пожалуйста, обратитесь https://github.com/jelastic-jps/kubernetes/blob/ad62208a5b3796bb7beeaedfce5c42b18512d9f0/addons/storage.jps пример использования действия "addNodes" в манифесте.

Также ссылка https://docs.cloudscripting.com/creating-manifest/actions/#addnodes описывает все поля, которые можно использовать.

Последняя опубликованная версия K8s для Jelasti c: v1.16.6, так что вы можете использовать ее в своем манифесте.

Но, пожалуйста, обратите внимание, что через этот экземпляр Balancer вы будете получать доступ к входному контроллеру Kubernetes по умолчанию, то есть к тем же входам / путям, которые вы в данный момент используете по адресу "http (s): //".

Конечно, вы можете назначить publi c ip к добавленному BL и доступ к той же функциональности не через Shared Balancer, как раньше, а через publi c IP отныне.

В двух словах, экземпляр Jelasti c Balancer в настоящее время не предоставляет функциональность LoadBalancer службы Kubernetes - если вам нужен именно этот. Функциональность LoadBalancer K8S будет добавлена ​​в следующем выпуске: publi c IP-адреса, добавленные в «cp» worker, могут автоматически использоваться для LoadBalancers, созданного внутри кластера Kubernetes. Мы ожидаем, что эта функция будет добавлена ​​в 1.16.8 +

Пожалуйста, дайте нам знать, если у вас есть какие-либо дополнительные вопросы.

...