View a markdown version of this page

Studio での Amazon EKS クラスターの設定 - Amazon SageMaker AI

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

Studio での Amazon EKS クラスターの設定

この設定のほとんどは、SageMaker AI コンソールの HyperPod クラスターの詳細ページから行います。SageMaker AI コンソールを開き、HyperPod クラスターを選択し、クラスターを選択し、設定タブを選択します。SageMaker ドメインのクラスターアクセスで、アクセスの管理を選択します。これは、ドメインを作成または表示し、Studio ユーザーがクラスターに到達できるようにするクラスターアクセスポリシーをアタッチする場所です。

次のスクリーンショットは、設定タブの SageMaker ドメインのクラスターアクセスセクションを示しています。

HyperPod クラスターの設定タブ。EKS オーケストレーターの詳細と SageMaker ドメインのクラスターアクセスセクションと、ドメインの作成、ドメインの表示、アクセスの管理ボタンが表示されます。

次の手順では、Studio で Amazon EKS クラスターを設定する方法について説明します。

  1. アクセスの管理ページで、既存のドメインを選択します。HyperPod クラスターへの Studio アクセスはドメインを介して実行され、ドメイン実行ロールは Studio がクラスターで動作するために使用する IAM プリンシパルです。ドメインの作成については、「Amazon SageMaker AI のセットアップガイド」を参照してください。

  2. IAM コンソールから実行ロールに次のアクセス許可をアタッチします。

    SageMaker AI 実行ロールとその編集方法については、「ドメインスペースのアクセス許可と実行ロールを理解する」を参照してください。

    IAM ユーザーまたはグループにポリシーをアタッチする方法については、「IAM ID のアクセス許可の追加および削除」を参照してください。

    ポリシーをアタッチする前に、両方のサンプル ARNs独自の ARN に置き換えます。

    • を HyperPod クラスター ARN arn:aws:sagemaker:us-east-1:111122223333:cluster/hyperpod-cluster-nameに置き換えます。

    • を Amazon EKS クラスター ARN arn:aws:eks:us-east-1:111122223333:cluster/eks-cluster-nameに置き換えます。これは UseEksClusterPermissionsと で 2 回表示されDescribeSpacesAddon、末尾の が格納されます/*

    これらは、2 つの異なる ARNs。HyperPod クラスター ARN は SageMaker AI コンソールで、Amazon EKS クラスター ARN は Amazon EKS コンソールで検索します。サンプル値をそのままにすると、Studio はクラスターを記述できず、タスクタブはロードされません。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "DescribeHyperpodClusterPermissions", "Effect": "Allow", "Action": [ "sagemaker:DescribeCluster" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/hyperpod-cluster-name" }, { "Effect": "Allow", "Action": "ec2:Describe*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:CompleteLayerUpload", "ecr:GetAuthorizationToken", "ecr:UploadLayerPart", "ecr:InitiateLayerUpload", "ecr:BatchCheckLayerAvailability", "ecr:PutImage" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "cloudwatch:GetMetricData" ], "Resource": "*" }, { "Sid": "UseEksClusterPermissions", "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:AccessKubernetesApi", "eks:MutateViaKubernetesApi" ], "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/eks-cluster-name" }, { "Sid": "DescribeSpacesAddon", "Effect": "Allow", "Action": "eks:DescribeAddon", "Resource": "arn:aws:eks:us-east-1:111122223333:cluster/eks-cluster-name/*" }, { "Sid": "ListClustersPermission", "Effect": "Allow", "Action": [ "sagemaker:ListClusters" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ssm:StartSession", "ssm:TerminateSession" ], "Resource": "*" } ] }
  3. クラスターアクセスポリシーを実行ロールにアタッチします。前のステップの IAM ポリシーでは、実行ロールが AWS APIs を呼び出すことができます。Kubernetes クラスター内のアクセス許可はロールに付与されません。クラスターアクセスポリシーはこれを行い、適切なロールがアタッチされたロールのみがクラスターに到達します。ドメインまたはユーザープロファイルのアクセス管理からアタッチします。

    アクセスを許可するドメインまたはユーザープロファイルの実行ロールを選択し、ユーザーが必要とするポリシーを選択します。名前空間へのアクセスをスコープするか、クラスター全体へのアクセスをスコープするかを選択し、チームがクラスターを共有するときに名前空間にスコープしてから保存します。名前空間にスコープすると、ユーザーが Studio で表示できるタスクも制限されます。各ポリシーで許可される内容、アクセスの範囲指定方法、代わりにアクセス許可のカスタムセットを付与する方法については、「」を参照してくださいStudio for EKS クラスターのタスクビューを制限する

    この方法でアクセスを許可すると、実行ロールの Amazon EKS アクセスエントリが作成されるため、Amazon EKS コンソールに個別のステップはありません。アクセスモデルの概念については、「EKS アクセスエントリを使用して Kubernetes へのアクセス権を IAM ユーザーに付与する」を参照してください。

  4. (オプション) エクスペリエンスを向上させるために、クラスターにタグを追加することをお勧めします。タグを追加する方法については、「SageMaker HyperPod クラスターを編集する」を参照し、SageMaker AI コンソールを使用してクラスターを更新します。

    Amazon Managed Grafana ワークスペースを Studio ドメインにタグ付けします。このタグを使用して、Studio のクラスターから直接 Grafana ワークスペースにリンクします。次のタグをクラスターに追加して、Grafana ワークスペース ID である で識別しますws-id

    タグキー = 「grafana-workspace」、タグ値 = 「ws-id

Studio for EKS クラスターのタスクビューを制限する

ユーザーの可視性を指定された Kubernetes 名前空間に制限することで、ユーザーは厳格なアクセスコントロールを維持しながら、必要なリソースにアクセスできます。

これを行うには 2 つの方法があります。名前空間へのクラスターアクセスポリシーのスコープは、コンソールで完全に実行され、よりシンプルなオプションです。カスタム Kubernetes RBAC ロールを使用すると、ユーザーが取得する正確な動詞とリソースを自分で管理できます。

クラスターアクセスポリシーで制限する

HyperPod は、設定タブのアクセスの管理からアタッチするクラスターアクセスポリシーを提供します。一連のユーザーが必要とするポリシーのみをアタッチし、クラスター全体ではなく名前空間へのアクセスの範囲を設定します。これは上記の 3 番目のステップと同じフローです。

Studio での完全な HyperPod エクスペリエンスのために、すべてのポリシーをロールにアタッチすることをお勧めします。各ポリシーはエクスペリエンスの異なる部分をカバーするため、1 つをオフのままにすると、付与する機能は削除されます。サブセットは、そのユーザーのセットから機能を保留する場合にのみアタッチします。

ポリシー 許可される内容
AmazonSagemakerHyperpodTrainingPolicy トレーニングワークロードを送信および管理します。RayClusterRayJob、および へのフルアクセスRayCronJobHyperPodPyTorchJobKubeflow PyTorchJobMPIJob、および へのフルアクセスTFJob、Kubernetes ジョブとポッドへのフルアクセス。ポッドログ、設定マップ、イベント、サービス、サービスアカウント、リソースクォータ、制限範囲、デプロイ、ステートフルセット、レプリカセット、および Kueue ローカルキューとワークロードへの読み取りアクセス。を作成できますRayDashboardConnection
AmazonSagemakerHyperpodInferencePolicy 推論ワークロードをデプロイおよび管理します。RayCluster および へのフルアクセスRayService、、JumpStartModelInferenceEndpointConfig、および ポッドSageMakerEndpointRegistrationへのフルアクセス。ポッドログ、設定マップ、イベント、サービス、サービスアカウント、リソースクォータ、制限範囲、デプロイ、ステートフルセット、レプリカセット、水平ポッドオートスケーラー、イングレス、および Kueue ローカルキューとワークロードへの読み取りアクセス。を作成できますRayDashboardConnection
AmazonSagemakerHyperpodSpacePolicy インタラクティブ開発にはスペースを使用します。Workspace リソースへのフルアクセス、ワークスペーステンプレート、アクセス戦略、統合テンプレートへの読み取りアクセス。ポッド、サービス、サービスアカウント、永続ボリュームクレーム、イベント、リソースクォータ、バインディング、デーモンセット、デプロイ、レプリカセットへの読み取りアクセス。スペースを開く を作成できますWorkspaceConnection
AmazonSagemakerHyperpodSpaceTemplatePolicy 共有スペーステンプレートを読み取ります。ユーザーが作業するjupyter-k8s-shared名前空間ではなく、テンプレートが存在する名前空間にスコープを限定してアタッチします。
AmazonSagemakerHyperpodUserClusterPolicy Studio UI がレンダリングする必要があるクラスター全体のリソースを参照してください。名前空間とノードへの読み取りアクセス、カスタムリソース定義へのアクセス、Kueue クラスターキュー、リソースフレーバー、ワークロードの優先度クラスへの読み取りアクセス、ユーザー自身のアクセスを確認するアクセス許可を取得します。これを名前空間ではなくクラスターにアタッチします。

フルアクセスとは、取得、一覧表示、監視、作成、更新、パッチ適用、削除を意味します。

これらは Amazon EKS クラスターアクセスポリシーであり、IAM 管理ポリシーではありません。ARNs の形式になりますarn:<partition>:eks::aws:cluster-access-policy/<name>Manage access を介してアタッチすると、実行ロールの Amazon EKS アクセスエントリが作成されます。これは、ポリシーをロールに適用します。

カスタム Kubernetes RBAC ロールで制限する

クラスターアクセスポリシーが提供するアクセス許可ではなく、アクセス許可のカスタムセットを付与する場合は、カスタムロールを使用します。次の設定を使用すると、管理者はクラスター内のタスクを表示するために、データサイエンティストに特定の制限付きアクセス権を付与できます。このポリシーは以下のアクセス許可を付与します。

  • ポッドを一覧表示して取得する

  • イベントを一覧表示して取得する

  • カスタムリソース定義 (CRD) を取得する

YAML の設定

apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: pods-events-crd-cluster-role rules: - apiGroups: [""] resources: ["pods"] verbs: ["get", "list"] - apiGroups: [""] resources: ["events"] verbs: ["get", "list"] - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: pods-events-crd-cluster-role-binding subjects: - kind: Group name: pods-events-crd-cluster-level apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: pods-events-crd-cluster-role apiGroup: rbac.authorization.k8s.io
  1. YAML の設定を cluster-role.yaml という名前のファイルに保存します。

  2. Kubernetes ウェブサイトkubectlから を使用して設定を適用します。

    kubectl apply -f cluster-role.yaml
  3. 設定の検証:

    kubectl get clusterrole pods-events-crd-cluster-role kubectl get clusterrolebinding pods-events-crd-cluster-role-binding
  4. アイデンティティプロバイダーまたは IAM を介して pods-events-crd-cluster-level グループにユーザーを割り当てます。