Configuração de permissões de acesso ao cluster com o controle de acesso por perfil (RBAC)
Para implantar o operador do Spark, o Amazon EMR no EKS cria dois perfis e duas contas de serviço para o operador do Spark e para as aplicações do Spark.
Perfil e conta de serviço do operador
O Amazon EMR no EKS cria o perfil e a conta de serviço do operador para gerenciar SparkApplications
para trabalhos do Spark e para outros recursos, como serviços.
O nome padrão para esta conta de serviço é emr-containers-sa-spark-operator
.
As seguintes regras se aplicam para este perfil de serviço:
rules: - apiGroups: - "" resources: - pods verbs: - "*" - apiGroups: - "" resources: - services - configmaps - secrets verbs: - create - get - delete - update - apiGroups: - extensions - networking.k8s.io resources: - ingresses verbs: - create - get - delete - apiGroups: - "" resources: - nodes verbs: - get - apiGroups: - "" resources: - events verbs: - create - update - patch - apiGroups: - "" resources: - resourcequotas verbs: - get - list - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - create - get - update - delete - apiGroups: - admissionregistration.k8s.io resources: - mutatingwebhookconfigurations - validatingwebhookconfigurations verbs: - create - get - update - delete - apiGroups: - sparkoperator.k8s.io resources: - sparkapplications - sparkapplications/status - scheduledsparkapplications - scheduledsparkapplications/status verbs: - "*" {{- if .Values.batchScheduler.enable }} # required for the `volcano` batch scheduler - apiGroups: - scheduling.incubator.k8s.io - scheduling.sigs.dev - scheduling.volcano.sh resources: - podgroups verbs: - "*" {{- end }} {{ if .Values.webhook.enable }} - apiGroups: - batch resources: - jobs verbs: - delete {{- end }}
Perfil e conta de serviço do Spark
Um pod do driver do Spark precisa de uma conta de serviço do Kubernetes no mesmo namespace que o pod. Esta conta de serviço precisa de permissões para criar, obter, listar, aplicar patches e excluir pods de executores e para criar um serviço descentralizado do Kubernetes para o driver. O driver apresentará falhas e será encerrado sem a conta de serviço, a menos que a conta de serviço padrão no namespace do pod tenha as permissões obrigatórias.
O nome padrão para esta conta de serviço é emr-containers-sa-spark
.
As seguintes regras se aplicam para este perfil de serviço:
rules: - apiGroups: - "" resources: - pods verbs: - "*" - apiGroups: - "" resources: - services verbs: - "*" - apiGroups: - "" resources: - configmaps verbs: - "*" - apiGroups: - "" resources: - persistentvolumeclaims verbs: - "*"