Запуск модуля из другого модуля в том же пространстве имен kubernetes

#kubernetes #openshift

Вопрос:

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

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

Есть ли какой-нибудь способ добиться этого без необходимости изучать операторы и ГоЛанг?

Я в порядке для использования kubctl или api в своем контейнере и хотел подключить хост и к одному и тому же пространству имен.

Комментарии:

1. Я обычно настраиваю это с помощью очереди заданий, такой как RabbitMQ, и у меня есть работающий долго (или несколько) с отдельным развертыванием. Это позволяет избежать необходимости делать что-либо конкретное для Kubernetes и позволяет ограничить объем работы, выполняемой параллельно, если одновременно появляется огромное количество запросов.

Ответ №1:

Да, это, безусловно, возможно с помощью a ServiceAccount , а затем при подключении к API из модуля.

  • Во-первых, создайте ServiceAccount в своем пространстве имен с помощью
     kubectl create serviceaccount my-service-account
     
  • Для вашего вновь созданного ServiceAccount , дайте ему разрешения, которые вы хотите использовать Roles и RoleBindings . Тема была бы примерно такой:
     subjects:
    - kind: ServiceAccount
      name: my-service-account
      namespace: my-namespace
     
  • Затем добавьте ServiceAccount в модуль, из которого вы хотите создавать другие модули (см. Документацию). Учетные данные автоматически монтируются внутри модуля с помощью automountServiceAccountToken .
  • Теперь изнутри модуля вы можете использовать kubectl или вызывать API, используя учетные данные внутри модуля. Существуют библиотеки для множества языков программирования, чтобы общаться с Kubernetes, используйте их.