Kubernetes ロールベースのアクセスコントロールの設定 - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Kubernetes ロールベースのアクセスコントロールの設定

また、クラスター管理者ユーザーは、データサイエンティストユーザーが を使用して Amazon とオーケストされた HyperPod クラスターでワークロードSageMaker HyperPod CLIを実行するために、Kubernetes ロールベースのアクセスコントロール (RBAC) を設定する必要がありますEKS。

オプション 1: Helm チャートRBACを使用してセットアップするには

SageMaker HyperPod サービスチームは、 を設定するための Helm サブチャートを提供しますRBAC。詳細については、「Helm を使用して Amazon EKSクラスターにパッケージをインストールする」を参照してください。

オプション 2: RBAC手動でセットアップするには

最小権限ClusterRoleBindingClusterRole と を作成し、ミューテーション権限RoleBindingRoleと を作成します。

データサイエンティストIAMロールClusterRoleBindingClusterRole & を作成するには

クラスターレベルの設定ファイルを次のように作成cluster_level_config.yamlします。

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

設定をEKSクラスターに適用します。

kubectl apply -f cluster_level_config.yaml

名前空間 RoleBinding でロール & を作成するには

これは、トレーニングジョブを実行する名前空間トレーニングオペレーターであり、回復性はデフォルトでモニタリングされます。ジョブの自動再開は、kubeflow名前空間または名前空間プレフィックス でのみサポートできますaws-hyperpod

namespace_level_role.yaml 次のようにロール設定ファイルを作成します。この例では、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

設定をEKSクラスターに適用します。

kubectl apply -f namespace_level_role.yaml

Kubernetes グループのアクセスエントリを作成する

上記の 2 つのオプションのいずれかRBACを使用して をセットアップしたら、次のサンプルコマンドを使用して必要な情報を置き換えます。

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"]'

principal-arn パラメータには、 を使用する必要がありますIAM サイエンティストの ユーザー