共用方式為


在 Azure Stack Edge Pro GPU 裝置上的 Kubernetes 角色型存取控制

適用於:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

當您在 Azure Stack Edge Pro 裝置上設定計算角色時,Kubernetes 叢集會隨即建立。 您可以使用 Kubernetes 角色型存取控制 (Kubernetes RBAC),來限制裝置上的叢集資源存取權。

本文說明由 Kubernetes 所提供的 Kubernetes RBAC 系統概觀,以及如何在 Azure Stack Edge Pro 裝置上實作 Kubernetes RBAC。

Kubernetes RBAC

您可以透過 Kubernetes RBAC 將權限指派給使用者或使用者群組,使其可建立或修改資源,或者檢視執行中應用程式工作負載的記錄等等。 這些權限可以只限於單一命名空間,或授與給整個叢集。

當您設定 Kubernetes 叢集時,系統會建立對應至此叢集的單一使用者,並稱其為叢集管理使用者。 kubeconfig 檔案與叢集管理使用者相關聯。 kubeconfig 檔案是文字檔,其中包含可連線到叢集以驗證使用者的所有必要設定資訊。

命名空間類型

Kubernetes 資源 (例如 Pod 和部署) 會依邏輯分組到命名空間中。 這些分組可讓您以邏輯方式分割 Kubernetes 叢集,並限制建立、檢視或管理資源的存取權。 使用者只能與其指派的命名空間內包含的資源互動。

當環境中有許多使用者分散於多個小組和專案時,便適合使用命名空間。 如需詳細資訊,請參閱 Kubernetes 命名空間

您的 Azure Stack Edge Pro 裝置會具有下列命名空間:

  • 系統命名空間:此命名空間是核心資源的所在之處,例如 DNS 和 Proxy 等網路功能,或是 Kubernetes 儀表板。 您通常不會將自己的應用程式部署到此命名空間中。 使用此命名空間來偵錯任何 Kubernetes 叢集問題。

    您的裝置上會有多個系統命名空間,且系統會保留對應至這些系統命名空間的名稱。 以下是保留的系統命名空間清單:

    • kube-system
    • metallb-system
    • dbe-namespace
    • 預設值
    • kubernetes-dashboard
    • kube-node-lease
    • kube-public

    請確保您建立的使用者命名空間不會使用任何保留名稱。

  • 使用者命名空間:您可以透過「kubectl」或裝置的 PowerShell 介面來建立這些命名空間,藉此在本機上部署應用程式。

  • IoT Edge 命名空間:您可透過 IoT Edge 來連線到此 iotedge 命名空間,藉此管理已部署的應用程式。

  • Azure Arc 命名空間:您可透過 Azure Arc 來連線到此 azure-arc 命名空間,藉此管理已部署的應用程式。使用 Azure Arc,您也可以在其他使用者命名空間中部署應用程式。

命名空間和使用者

在實際情況下,請務必將叢集分割成多個命名空間。

  • 多個使用者:如果您有多個使用者,則多個命名空間會允許這些使用者將其應用程式和服務,分別部署到專屬的命名空間中,藉此彼此隔離。
  • 單一使用者:即使只有單一使用者,多個命名空間仍會允許該使用者在相同 Kubernetes 叢集中執行多個版本的應用程式。

角色和 RoleBinding

Kubernetes 具有角色和角色繫結的概念,可讓您將權限授與給命名空間層級及叢集層級上的使用者或資源。

  • 角色:您可以將使用者的權限定義為「角色」,並使用「角色」來授與命名空間的權限。
  • RoleBindings:定義角色之後,您可以使用「RoleBindings」來指派指定的命名空間角色。

此方法可讓您以邏輯方式區隔單一 Kubernetes 叢集,讓使用者只能在指派的命名空間中存取應用程式資源。

Azure Stack Edge Pro 上的 Kubernetes RBAC

在 Kubernetes RBAC 的目前實作中,Azure Stack Edge Pro 可讓您從受限制的 PowerShell Runspace 採取下列動作:

  • 建立命名空間。
  • 建立其他使用者。
  • 針對您建立的命名空間,授與您管理員存取權。 請記住,您將無法存取叢集管理員角色,或檢視全叢集資源。
  • 取得 kubeconfig 檔案,其中具有可存取 Kubernetes 叢集的資訊。

Azure Stack Edge Pro 裝置有多個系統命名空間,您可以使用 kubeconfig 檔案建立使用者命名空間,進而存取這些命名空間。 使用者可以完全控制這些命名空間,並可建立或修改使用者,或授與使用者存取權。 只有叢集管理員才能完整存取系統命名空間和全叢集資源。 aseuser 可以唯獨方式存取系統命名空間。

下圖描述 Azure Stack Edge Pro 裝置上的 Kubernetes RBAC 實作。

Kubernetes RBAC on Azure Stack Edge Pro device

在此圖中,Alice、Bob 和 Chuck 只能存取指派的使用者命名空間,在此案例中分別為 ns1ns2ns3。 在這些命名空間中,他們具有管理員存取權。 另一方面,叢集管理員具有系統命名空間和全叢集資源的管理員存取權。

身為使用者,您可以建立命名空間和使用者、將使用者指派給命名空間,或下載 kubeconfig 檔案。 如需詳細的逐步指示,請參閱透過 Azure Stack Edge Pro 上的 kuebctl 存取 Kubernetes 叢集

在 Azure Stack Edge Pro 裝置上使用命名空間和使用者時,請留意下列注意事項:

  • 您無法針對任何系統命名空間執行作業,例如建立使用者、授與或撤銷使用者的命名空間存取權。 系統命名空間的範例包括 kube-systemmetallb-systemkubernetes-dashboarddefaultkube-node-leasekube-public。 系統命名空間也包含了保留給部署類型的命名空間,例如 iotedge (IoT Edge 命名空間),以及 azure-arc (Azure Arc 命名空間)。
  • 您可以建立使用者命名空間、在這些命名空間內建立其他使用者,並授與或撤銷這些使用者的命名空間存取權。
  • 您無法以任何與系統命名空間相同的名稱來建立命名空間。 系統會保留系統命名空間的名稱。
  • 您無法以任何由其他使用者命名空間所用的名稱來建立使用者命名空間。 例如,如果您已建立 test-ns,則無法建立另一個 test-ns 命名空間。
  • 您無法以保留的名稱來建立使用者。 例如,aseuser 是保留的使用者,而且無法使用。

下一步

若要了解如何建立使用者、建立命名空間,以及將命名空間的存取權授與給使用者,請參閱透過 kubectl 存取 Kubernetes 叢集