Рабочий процесс Argo всегда использует serviceaccount по умолчанию

#kubernetes #kubernetes-helm #argo-workflows #argoproj

#kubernetes #kubernetes-helm #argo-рабочие процессы #argoproj

Вопрос:

Я установил диаграмму управления рабочим процессом Argo по умолчанию, настроив только init.ServiceAccount как argo-sa, который я создал. (ServiceAccount с достаточной авторизацией) Однако запуск каждого рабочего процесса выполняется как serviceaccount по умолчанию, и я не могу понять, где настроен параметр. Согласно README, предоставленному Argo Helm Chart, указание init.serviceAccount в качестве созданного мной serviceaccount должно решить проблему. Обходным путем является изменение serviceaccount по умолчанию, но, похоже, это не лучшее решение. Есть ли что-нибудь, что я неправильно понял? Заранее спасибо.

Ответ №1:

Установка Argo не определяет, какие рабочие процессы ServiceAccount используют. Согласно документам Argo,

Когда учетная запись ServiceAccount не указана [при отправке рабочего процесса], Argo будет использовать учетную запись ServiceAccount по умолчанию из пространства имен, из которого он запускается, что почти всегда будет иметь недостаточные привилегии по умолчанию.

Если вы используете Argo CLI для отправки рабочих процессов, вы можете указать ServiceAccount с --serviceaccount помощью .

Если вы используете kubectl apply или какой-либо другой инструмент для установки рабочих процессов, вы можете задать имя ServiceAccount в определении yaml. Смотрите Пример из документации или этот сокращенный пример:

 apiVersion: argoproj.io/v1alpha1
kind: Workflow
spec:
  serviceAccountName: some-serviceaccount
 

Для удобства диаграмма Argo Helm предоставляет способ создания ServiceAccount, с помощью которого можно запускать рабочие процессы. Но на самом деле это не приводит к тому, что ваши рабочие процессы используют этот ServiceAccount. Вы должны указать его при отправке рабочего процесса.

   serviceAccount:
    create: false  # Specifies whether a service account should be created
    annotations: {}
    name: "argo-workflow"  # Service account which is used to run workflows
  rbac:
    create: false  # adds Role and RoleBinding for the above specified service account to be able to run workflows
 

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

1. Это было очень полезно. Спасибо, Майкл!

2. @IHateMint ты уверен!

3. Я использую шаблон сценария в своем рабочем процессе. Когда я указываю serviceAccountName в спецификации рабочего процесса и выполняю рабочий процесс, я получаю сообщение «ошибка поиска учетной записи службы по умолчанию / argo: serviceaccount». Я знаю, что учетная запись службы argo существует в пространстве имен argo. Почему рабочий процесс не может его найти?

4. @SSF Интересно, означает ли default/ argo, что он ищет argo sa в пространстве имен по умолчанию. Может быть, попробуйте запустить рабочий процесс в пространстве имен argo?

5. О да, моя ошибка. Спасибо @MichaelCrenshaw