다음을 통해 공유


Azure Stack Edge Pro GPU 디바이스에 대한 Kubernetes 역할 기반 액세스 제어

적용 대상: Pro GPU SKU의 경우 예Azure Stack Edge Pro - GPUPro 2 SKU의 경우 예Azure Stack Edge Pro 2Pro R SKU의 경우 예Azure Stack Edge Pro RMini R SKU의 경우 예Azure Stack Edge Mini R

Azure Stack Edge Pro 디바이스에서 컴퓨팅 역할을 구성하면 Kubernetes 클러스터가 만들어집니다. Kubernetes RBAC(Kubernetes 역할 기반 액세스 제어)를 사용하여 디바이스의 클러스터 리소스에 대한 액세스를 제한할 수 있습니다.

이 문서에서는 Kubernetes에서 제공하는 Kubernetes RBAC 시스템에 대한 개요와 Azure Stack Edge Pro 디바이스에서 Kubernetes RBAC가 구현되는 방법을 제공합니다.

Kubernetes RBAC

Kubernetes RBAC를 사용하면 사용자 또는 사용자 그룹에 리소스 만들기 또는 수정과 같은 작업을 수행하거나 실행 중인 애플리케이션 워크로드에서 로그를 볼 수 있는 권한을 할당할 수 있습니다. 이러한 권한은 단일 네임스페이스로 범위가 지정되거나 전체 클러스터에서 부여할 수 있습니다.

Kubernetes 클러스터를 설정할 때 이 클러스터에 해당하는 단일 사용자가 만들어지며 클러스터 관리 사용자라고 합니다. kubeconfig 파일은 클러스터 관리 사용자와 연결됩니다. kubeconfig 파일은 사용자를 인증하기 위해 클러스터에 연결하는 데 필요한 모든 구성 정보가 포함된 텍스트 파일입니다.

네임스페이스 형식

Pod 및 Deployment와 같은 Kubernetes 리소스는 논리적으로 네임스페이스로 그룹화됩니다. 이러한 그룹화는 Kubernetes 클러스터를 논리적으로 나누고 리소스 만들기, 보기 또는 관리에 대한 액세스를 제한하는 방법을 제공합니다. 사용자는 할당된 네임스페이스 내의 리소스와만 상호 작용할 수 있습니다.

네임스페이스는 여러 팀 또는 프로젝트에 걸쳐 많은 사용자가 분산된 환경에서 사용하기 위한 것입니다. 자세한 내용은 Kubernetes 네임스페이스를 참조하세요.

Azure Stack Edge Pro 디바이스에는 다음과 같은 네임스페이스가 있습니다.

  • 시스템 네임스페이스 - 이 네임스페이스는 DNS 및 프록시와 같은 네트워크 기능 또는 Kubernetes 대시보드와 같은 핵심 리소스가 있는 곳입니다. 일반적으로 사용자 고유의 애플리케이션은 이 네임스페이스에 배포하지 않습니다. 이 네임스페이스를 사용하여 Kubernetes 클러스터 문제를 디버깅합니다.

    디바이스에는 여러 시스템 네임스페이스가 있으며 이러한 시스템 네임스페이스에 해당하는 이름은 예약되어 있습니다. 예약된 시스템 네임스페이스 목록은 다음과 같습니다.

    • kube-system
    • metallb-system
    • dbe-namespace
    • default
    • kubernetes-dashboard
    • kube-node-lease
    • kube-public

    만든 사용자 네임스페이스에 대해 예약된 이름을 사용하지 않도록 합니다.

  • 사용자 네임스페이스 - 로컬에서 애플리케이션을 배포하기 위해 kubectl 또는 디바이스의 PowerShell 인터페이스를 통해 만들 수 있는 네임스페이스입니다.

  • IoT Edge 네임스페이스 - 이 iotedge 네임스페이스에 연결하여 IoT Edge를 통해 배포된 애플리케이션을 관리합니다.

  • Azure Arc 네임스페이스 - 이 azure-arc 네임스페이스에 연결하여 Azure Arc를 통해 배포된 애플리케이션을 관리합니다. Azure Arc를 사용하면 다른 사용자 네임스페이스에 애플리케이션을 배포할 수도 있습니다.

네임스페이스 및 사용자

실제 환경에서는 클러스터를 여러 네임스페이스로 나누는 것이 중요합니다.

  • 여러 사용자: 사용자가 여러 명인 경우 여러 네임스페이스를 사용하면 해당 사용자가 각자 애플리케이션과 서비스를 서로 격리된 상태로 특정 네임스페이스에 배포할 수 있습니다.
  • 단일 사용자: 단일 사용자가 있더라도 여러 네임스페이스를 사용하면 동일한 Kubernetes 클러스터에서 여러 버전의 애플리케이션을 실행할 수 있습니다.

Roles 및 RoleBindings

Kubernetes에는 네임스페이스 수준과 클러스터 수준에서 사용자 또는 리소스에 권한을 부여할 수 있는 역할 및 역할 바인딩 개념이 있습니다.

  • Roles: 사용자에 대한 권한을 역할로 정의한 다음 Roles를 사용하여 네임스페이스 내에서 권한을 부여할 수 있습니다.
  • RoleBindings: 역할을 정의하고 나면 RoleBindings를 사용하여 할당된 네임스페이스에 대한 역할을 할당할 수 있습니다.

이 방식을 사용하면 사용자가 할당된 네임스페이스의 애플리케이션 리소스에만 액세스할 수 있도록 단일 Kubernetes 클러스터를 논리적으로 분리할 수 있습니다.

Azure Stack Edge Pro의 Kubernetes RBAC

Kubernetes RBAC의 현재 구현에서 Azure Stack Edge Pro를 사용하면 제한된 PowerShell runspace에서 다음 작업을 수행할 수 있습니다.

  • 네임스페이스를 만듭니다.
  • 추가 사용자를 만듭니다.
  • 만든 네임스페이스에 대한 관리자 액세스 권한을 부여합니다. 클러스터 관리자 역할 또는 클러스터 전체 리소스 보기에 대한 액세스 권한이 없다는 점에 유의합니다.
  • Kubernetes 클러스터에 액세스하기 위한 정보가 있는 kubeconfig 파일을 가져옵니다.

Azure Stack Edge Pro 디바이스에는 여러 시스템 네임스페이스가 있으며 kubeconfig 파일로 사용자 네임스페이스를 만들어 해당 네임스페이스에 액세스할 수 있습니다. 사용자는 이러한 네임스페이스를 완전히 제어할 수 있으며 사용자를 만들기 또는 수정하거나 사용자에게 액세스 권한을 부여할 수 있습니다. 클러스터 관리자만이 시스템 네임스페이스 및 클러스터 전체 리소스에 대한 모든 권한을 가집니다. aseuser에는 시스템 네임스페이스에 대한 읽기 전용 액세스 권한이 있습니다.

다음은 Azure Stack Edge Pro 디바이스에서 Kubernetes RBAC 구현을 설명하는 다이어그램입니다.

Azure Stack Edge Pro 디바이스의 Kubernetes RBAC

이 다이어그램에서 Alice, Bob 및 Chuck은 할당된 사용자 네임스페이스에만 액세스할 수 있으며 이 경우에는 각각 ns1, ns2ns3입니다. 이러한 네임스페이스 내에서 관리자 액세스 권한이 있습니다. 반면에 클러스터 관리자는 시스템 네임스페이스 및 클러스터 전체 리소스에 대한 관리자 액세스 권한이 있습니다.

사용자는 네임스페이스 및 사용자를 만들고 사용자를 네임스페이스에 할당하거나 kubeconfig 파일을 다운로드할 수 있습니다. 자세한 단계별 지침은 Azure Stack Edge Pro에서 kuebctl을 통해 Kubernetes 클러스터에 액세스를 참조하세요.

Azure Stack Edge Pro 디바이스에서 네임스페이스 및 사용자로 작업할 때 다음 주의 사항이 적용됩니다.

  • 시스템 네임스페이스에 대해 사용자 만들기, 사용자에게 네임스페이스 액세스 권한 부여 또는 해지와 같은 작업을 수행할 수 없습니다. 시스템 네임스페이스의 예에는 kube-system, metallb-system, kubernetes-dashboard, default, kube-node-lease, kube-public이 포함됩니다. 시스템 네임스페이스에는 iotedge(IoT Edge 네임스페이스) 및 azure-arc(Azure Arc 네임스페이스)와 같은 배포 유형용으로 예약된 네임스페이스도 포함됩니다.
  • 사용자 네임스페이스를 만들고 해당 네임스페이스 내에서 추가 사용자를 만들고 해당 사용자에게 네임스페이스 액세스 권한을 부여하거나 해지할 수 있습니다.
  • 시스템 네임스페이스의 이름과 동일한 이름으로 네임스페이스를 만들 수 없습니다. 시스템 네임스페이스의 이름은 예약되어 있습니다.
  • 다른 사용자 네임스페이스에서 이미 사용 중인 이름으로 사용자 네임스페이스를 만들 수 없습니다. 예를 들어, 만든 test-ns가 있는 경우 다른 test-ns 네임스페이스를 만들 수 없습니다.
  • 이미 예약된 이름으로 사용자를 만들 수 없습니다. 예를 들어, aseuser는 예약된 사용자이므로 사용할 수 없습니다.

다음 단계

사용자 만들기, 네임스페이스 만들기 및 네임스페이스에 대한 사용자 액세스 권한 부여 방법을 이해하려면 kubectl을 통해 Kubernetes 클러스터 액세스를 참조하세요.