#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, используйте их.