DeployServiceAccountName не работает для расписаний в потоке данных Spring Cloud
Я использую поток данных Spring Cloud для весенних пакетов (с удаленным разделением), завернутых в весеннюю облачную задачу, развернутую в kubernetes. Я также создал для этого сервисный аккаунт. Пакет работает нормально, когда я использую параметр запуска на вкладке задач в пользовательском интерфейсе SCDF. Но когда я пытаюсь использовать параметр расписания в пользовательском интерфейсе SCDF, он, кажется, не учитывает настроенное имя учетной записи службы и дает следующую ошибку
io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: GET at: https://<IP>/api/v1/namespaces/test/pods/batchsampleappworker-aeghj644g. Message: Forbidden!Configured service account doesn't have access. Service account may have been revoked. pods "batchsampleappworker-j3ljqq3de9" is forbidden: User "system:serviceaccount:test:default" cannot get resource "pods" in API group "" in the namespace "test".
Ниже приведен пример конфигурации, представленной в конфигурации сервера SCDF.
data:
application.yaml: |-
spring:
cloud:
dataflow:
task:
platform:
kubernetes:
accounts:
default:
deploymentServiceAccountName: myserviceaccountname
Пожалуйста, пролейте свет на эту проблему и помогите мне решить эту проблему.
1 ответ
По пути изучения решения проблемы я наткнулся на эту страницу github, где было предложено добавить либо
env:
- name: SPRING_CLOUD_SCHEDULER_KUBERNETES_TASK_SERVICE_ACCOUNT_NAME
value: myserviceaccountname
к развертыванию сервера SCDF или,
deployer.kubernetes.taskServiceAccountName=myserviceaccountname
к индивидуальному расписанию при его создании. К сожалению, ни один из них не помог мне, но побудил меня попробовать с созданным ниже расписанием, и это сработало для меня.
scheduler.kubernetes.taskServiceAccountName=myserviceaccountname
Было бы здорово, если бы мне кто-нибудь помог мне объяснить, почему не сработал первый вариант - развертывание обновления?