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 도메인에 대한 클러스터 액세스 섹션을 보여줍니다.

도메인 생성, 도메인 보기 및 액세스 관리 버튼이 있는 EKS 오케스트레이터 세부 정보와 SageMaker 도메인에 대한 클러스터 액세스 섹션을 보여주는 HyperPod 클러스터의 구성 탭입니다.

다음 지침에서는 Studio에서 Amazon EKS 클러스터를 설정하는 방법을 설명합니다.

  1. 액세스 관리 페이지에서 기존 도메인을 선택합니다. HyperPod 클러스터에 대한 Studio 액세스는 도메인을 통해 실행되며 도메인 실행 역할은 Studio가 클러스터에서 작업하는 데 사용하는 IAM 보안 주체입니다. 도메인 생성에 대한 자세한 내용은 Amazon SageMaker AI 설정 가이드 섹션을 참조하세요.

  2. IAM 콘솔에서 실행 역할에 다음 권한을 연결합니다.

    SageMaker AI 실행 역할과 편집 방법에 대한 자세한 내용은 도메인 공간 권한 및 실행 역할 이해 섹션을 참조하세요.

    IAM 사용자 또는 그룹에 정책을 연결하는 방법을 알아보려면 IAM 자격 증명 권한 추가 및 제거를 참조하세요.

    정책을 연결하기 전에 두 예제 ARNs 모두 자체 ARN으로 바꿉니다.

    • 를 HyperPod 클러스터 ARNarn:aws:sagemaker:us-east-1:111122223333:cluster/hyperpod-cluster-name으로 바꿉니다.

    • 를 Amazon EKS 클러스터 ARNarn:aws:eks:us-east-1:111122223333:cluster/eks-cluster-name으로 바꿉니다. 후행를 포함하는 UseEksClusterPermissions 및에서 두 DescribeSpacesAddon번 나타납니다/*.

    두 개의 ARNs. SageMaker AI 콘솔에서 HyperPod 클러스터 ARN을 찾고 Amazon EKS 콘솔에서 Amazon EKS 클러스터 ARN을 찾습니다. 예제 값을 그대로 두면 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에서 EKS 클러스터에 대한 작업 보기 제한.

    이러한 방식으로 액세스 권한을 부여하면 실행 역할에 대한 Amazon EKS 액세스 항목이 생성되므로 Amazon EKS 콘솔에는 별도의 단계가 없습니다. 액세스 모델의 개념은 IAM 사용자에게 EKS 액세스 항목을 사용하여 Kubernetes에 대한 액세스 권한 부여를 참조하세요.

  4. (선택 사항) 보다 원활한 경험을 보장하려면 클러스터에 태그를 추가하는 것이 좋습니다. 태그를 추가하는 방법에 대한 자세한 내용은 SageMaker HyperPod 클러스터 편집 섹션을 참조하고 SageMaker AI 콘솔을 사용하여 클러스터를 업데이트하세요.

    Studio 도메인에 Amazon Managed Grafana 작업 영역 태그를 지정합니다. 이 태그를 사용하여 Studio의 클러스터에서 직접 Grafana 워크스페이스에 연결합니다. 클러스터에 다음 태그를 추가하여 Grafana 워크스페이스 ID 로 식별합니다ws-id.

    태그 키 = 'grafana-workspace', 태그 값 = 'ws-id'.

Studio에서 EKS 클러스터에 대한 작업 보기 제한

사용자의 가시성을 지정된 Kubernetes 네임스페이스로 제한하여 사용자가 엄격한 액세스 제어를 유지하면서 필요한 리소스에 액세스할 수 있도록 할 수 있습니다.

이를 수행하는 방법에는 두 가지가 있습니다. 클러스터 액세스 정책을 네임스페이스로 범위를 지정하는 작업은 전적으로 콘솔에서 수행되며 더 간단한 옵션입니다. 사용자 지정 Kubernetes RBAC 역할을 사용하면 역할을 직접 관리하는 대신 사용자가 받는 정확한 동사와 리소스를 제어할 수 있습니다.

클러스터 액세스 정책으로 제한

HyperPod는 구성 탭의 액세스 관리에서 연결하는 클러스터 액세스 정책을 제공합니다. 사용자 집합에 필요한 정책만 연결하고 전체 클러스터가 아닌 네임스페이스에 대한 액세스 범위를 지정합니다. 이는 위의 세 번째 단계와 동일한 흐름입니다.

Studio의 전체 HyperPod 환경을 위해 모든 정책을 역할에 연결하는 것이 좋습니다. 각 정책은 경험의 서로 다른 부분을 다루므로 하나를 끄면 부여하는 기능이 제거됩니다. 해당 사용자 집합에서 기능을 보류하려는 경우에만 하위 집합을 연결합니다.

정책 허용 사항
AmazonSagemakerHyperpodTrainingPolicy 훈련 워크로드를 제출하고 관리합니다. RayCluster, 및 RayJob, RayCronJobHyperPodPyTorchJob, Kubeflow PyTorchJob, 및 MPIJob, Kubernetes 작업 및 포드TFJob에 대한 전체 액세스 권한. 포드 로그, 구성 맵, 이벤트, 서비스, 서비스 계정, 리소스 할당량, 제한 범위, 배포, 상태 저장 세트, 복제본 세트, Kueue 로컬 대기열 및 워크로드에 대한 읽기 액세스. 를 생성할 수 있습니다RayDashboardConnection.
AmazonSagemakerHyperpodInferencePolicy 추론 워크로드를 배포하고 관리합니다. RayCluster 및 RayService, , JumpStartModel InferenceEndpointConfig SageMakerEndpointRegistration및 포드에 대한 전체 액세스 권한. 포드 로그, 구성 맵, 이벤트, 서비스, 서비스 계정, 리소스 할당량, 제한 범위, 배포, 상태 저장 세트, 복제본 세트, 수평 포드 오토스케일러, 수신, Kueue 로컬 대기열 및 워크로드에 대한 읽기 액세스. 를 생성할 수 있습니다RayDashboardConnection.
AmazonSagemakerHyperpodSpacePolicy 대화형 개발을 위해 스페이스를 사용합니다. Workspace 리소스에 대한 전체 액세스 및 워크스페이스 템플릿, 액세스 전략 및 통합 템플릿에 대한 읽기 액세스. 포드, 서비스, 서비스 계정, 영구 볼륨 클레임, 이벤트, 리소스 할당량, 바인딩, 데몬 세트, 배포 및 복제본 세트에 대한 읽기 액세스. 스페이스를 여WorkspaceConnection는를 생성할 수 있습니다.
AmazonSagemakerHyperpodSpaceTemplatePolicy 공유 스페이스 템플릿을 읽습니다. 사용자가 작업하는 jupyter-k8s-shared 네임스페이스가 아닌 템플릿이 있는 네임스페이스에 범위를 지정합니다.
AmazonSagemakerHyperpodUserClusterPolicy Studio UI에서 렌더링해야 하는 클러스터 전체 리소스를 참조하세요. 네임스페이스 및 노드에 대한 읽기 액세스, 사용자 지정 리소스 정의에 대한 액세스, Kueue 클러스터 대기열, 리소스 종류 및 워크로드 우선 순위 클래스에 대한 읽기 액세스, 사용자 자신의 액세스를 확인할 수 있는 권한. 범위가 지정된 클러스터를 네임스페이스가 아닌 클러스터에 연결합니다.

전체 액세스는 가져오기, 나열, 감시, 생성, 업데이트, 패치 및 삭제를 의미합니다.

이는 IAM 관리형 정책이 아닌 Amazon EKS 클러스터 액세스 정책입니다. ARNs 형식을 취합니다arn:<partition>:eks::aws:cluster-access-policy/<name>. 액세스 관리를 통해 하나를 연결하면 실행 역할에 대한 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. ID 제공업체 또는 IAM을 통해 pods-events-crd-cluster-level 그룹에 사용자를 할당합니다.