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
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.