Como configurar controle de acesso ao Kubernetes baseado em perfil - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como configurar controle de acesso ao Kubernetes baseado em perfil

Os usuários administradores de cluster também precisam configurar o controle de acesso baseado em funções (RBAC) do Kubernetes para que usuários de cientistas de dados usem a SageMaker HyperPod CLI para executar cargas de trabalho em clusters orquestrados com o Amazon EKS. HyperPod

Opção 1: configurar o RBAC usando o gráfico Helm

A equipe SageMaker HyperPod de serviço fornece um subgráfico do Helm para configurar o RBAC. Para saber mais, consulte Instale pacotes no cluster do Amazon EKS usando o Helm.

Opção 2: configurar o RBAC manualmente

Crie ClusterRole e ClusterRoleBinding com o privilégio mínimo e crie Role e RoleBinding com permissões de mutação.

Para criar ClusterRole e ClusterRoleBinding para o perfil do IAM de cientista de dados

Crie um arquivo cluster_level_config.yaml de configuração em nível de cluster da seguinte forma:

kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: hyperpod-scientist-user-cluster-role rules: - apiGroups: [""] resources: ["pods"] verbs: ["list"] - apiGroups: [""] resources: ["nodes"] verbs: ["list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: hyperpod-scientist-user-cluster-role-binding subjects: - kind: Group name: hyperpod-scientist-user-cluster-level apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: hyperpod-scientist-user-cluster-role # this must match the name of the Role or ClusterRole you wish to bind to apiGroup: rbac.authorization.k8s.io

Aplique a configuração ao cluster do EKS.

kubectl apply -f cluster_level_config.yaml

Para criar uma função e RoleBinding no namespace

Esse é o operador de treinamento de namespace que executa trabalhos de treinamento e o Resiliency monitorará por padrão. A retomada automática de trabalhos só pode ser compatível com o namespace kubeflow ou namespace prefixado da aws-hyperpod.

Crie um arquivo de configuração de função namespace_level_role.yaml da seguinte forma: Este exemplo cria uma função no namespace kubeflow

kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: kubeflow name: hyperpod-scientist-user-namespace-level-role ### # 1) add/list/describe/delete pods # 2) get/list/watch/create/patch/update/delete/describe kubeflow pytroch job # 3) get pod log ### rules: - apiGroups: [""] resources: ["pods"] verbs: ["create", "get"] - apiGroups: [""] resources: ["nodes"] verbs: ["get", "list"] - apiGroups: [""] resources: ["pods/log"] verbs: ["get", "list"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["get", "create"] - apiGroups: ["kubeflow.org"] resources: ["pytorchjobs", "pytorchjobs/status"] verbs: ["get", "list", "create", "delete", "update", "describe"] - apiGroups: [""] resources: ["configmaps"] verbs: ["create", "update", "get", "list", "delete"] - apiGroups: [""] resources: ["secrets"] verbs: ["create", "get", "list", "delete"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: kubeflow name: hyperpod-scientist-user-namespace-level-role-binding subjects: - kind: Group name: hyperpod-scientist-user-namespace-level apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: hyperpod-scientist-user-namespace-level-role # this must match the name of the Role or ClusterRole you wish to bind to apiGroup: rbac.authorization.k8s.io

Aplique a configuração ao cluster do EKS.

kubectl apply -f namespace_level_role.yaml

Crie uma entrada de acesso para grupos do Kubernetes

Depois de configurar o RBAC usando uma das duas opções acima, use o seguinte exemplo de comando substituindo as informações necessárias:

aws eks create-access-entry \ --cluster-name <eks-cluster-name> \ --principal-arn arn:aws:iam::<AWS_ACCOUNT_ID_SCIENTIST_USER>:role/ScientistUserRole \ --kubernetes-groups '["hyperpod-scientist-user-namespace-level","hyperpod-scientist-user-cluster-level"]'

Para o parâmetro principal-arn, você precisa usar o Usuários do IAM para cientistas.