Helm Chart RBAC#
KubeRay 利用 Kubernetes 基于角色的访问控制(RBAC)资源 来授予监控和管理资源的权限。本文档描述了如何配置 KubeRay Helm 图表以创建适用于 3 种不同用例的 RBAC 资源。
参数#
你可以通过修改 values.yaml 中的以下参数来配置 KubeRay Helm 图表,以创建适用于不同用例的 RBAC 资源。然后,你可以使用修改后的 values.yaml 安装 KubeRay Helm 图表。
# Step 1: Clone the KubeRay repository
# Step 2: Modify the helm-chart/kuberay-operator/values.yaml
# Step 3: Install the KubeRay Helm chart (path: helm-chart/kuberay-operator)
helm install kuberay-operator .
rbacEnable
如果为真,Helm 图表会创建 RBAC 资源。如果为假,则不会创建任何 RBAC 资源。默认值:true。
singleNamespaceInstall
如果为真,Helm chart 会创建命名空间范围的 RBAC 资源,即 Role 和 RoleBinding。如果为假,则会创建集群范围的 RBAC 资源,即 ClusterRole 和 ClusterRoleBinding。默认值:false。
watchNamespace
KubeRay 操作符的 informer 监视自定义资源的命名空间列表。
crNamespacedRbacEnable
在大多数情况下设置为
true
。在使用由 ArgoCD 等 GitOps 工具管理的 Kubernetes 集群的罕见情况下,设置为false
。有关更多详细信息,请参阅 ray-project/kuberay#1162。默认值:true。
The values.yaml 文件包含了参数的详细描述。有关参数的更多上下文,请参阅这些拉取请求:
在Kubernetes集群中监视所有命名空间#
默认情况下,KubeRay 操作符的通知器会监视 Kubernetes 集群中的所有命名空间。操作符使用 ClusterRole 和 ClusterRoleBinding 具有集群范围的权限来创建和管理资源。
# Create a Kubernetes cluster using Kind.
kind create cluster --image=kindest/node:v1.26.0
# Create namespaces.
kubectl create ns n1
kubectl create ns n2
# Install a KubeRay operator. Use the default `values.yaml` file.
# (path: helm-chart/kuberay-operator)
helm install kuberay-operator .
# Check ClusterRole.
kubectl get clusterrole | grep kuberay
# kuberay-operator 2023-10-15T04:54:28Z
# Check Role.
kubectl get role
#NAME CREATED AT
#kuberay-operator-leader-election 2023-10-15T04:54:28Z
# Install RayCluster in the `default`, `n1`, and `n2` namespaces.
helm install raycluster kuberay/ray-cluster --version 1.0.0
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n1
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n2
# You should create a RayCluster in these 3 namespaces.
kubectl get raycluster -A
# NAMESPACE NAME DESIRED WORKERS AVAILABLE WORKERS STATUS AGE
# default raycluster-kuberay 1 1 ready 73s
# n1 raycluster-kuberay 1 1 ready 56s
# n2 raycluster-kuberay 1 1 ready 52s
案例 2:观察你部署操作员所在的命名空间#
KubeRay 操作符的通知器监视你部署操作符的命名空间。操作符在同一命名空间中具有角色和角色绑定。
将
values.yaml
文件中的singleNamespaceInstall
参数修改为true
。singleNamespaceInstall: true
# Create a Kubernetes cluster using Kind.
kind create cluster --image=kindest/node:v1.26.0
# Create namespaces.
kubectl create ns n1
kubectl create ns n2
# Install a KubeRay operator.
# Set `singleNamespaceInstall` to true in the `values.yaml` file.
# (path: helm-chart/kuberay-operator)
helm install kuberay-operator .
# Check ClusterRole.
kubectl get clusterrole | grep kuberay
# (nothing found)
# Check Role.
kubectl get role --all-namespaces | grep kuberay
#default kuberay-operator 2023-10-15T05:18:03Z
#default kuberay-operator-leader-election 2023-10-15T05:18:03Z
# Install RayCluster in the `default`, `n1`, and `n2` namespaces.
helm install raycluster kuberay/ray-cluster --version 1.0.0
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n1
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n2
# KubeRay only creates a RayCluster in the `default` namespace.
kubectl get raycluster -A
# NAMESPACE NAME DESIRED WORKERS AVAILABLE WORKERS STATUS AGE
# default raycluster-kuberay 1 1 ready 54s
# n1 raycluster-kuberay 50s
# n2 raycluster-kuberay 44s
案例 3:在 Kubernetes 集群中监控多个命名空间#
在案例2中,只有命名空间访问权限的用户为每个命名空间部署一个单独的KubeRay操作员。这种方法会增加维护开销,特别是在为每个部署的实例升级版本时。案例3为多个命名空间创建角色和角色绑定,允许单个KubeRay操作员监控多个命名空间。
修改
values.yaml
文件中的singleNamespaceInstall
和watchNamespace
参数。# Set in the `value.yaml` file. singleNamespaceInstall: true # Set the namespaces list. watchNamespace: - n1 - n2
# Create a Kubernetes cluster using Kind.
kind create cluster --image=kindest/node:v1.26.0
# Create namespaces.
kubectl create ns n1
kubectl create ns n2
# Install a KubeRay operator.
# Set `singleNamespaceInstall` and `watchNamespace` in the `values.yaml` file.
# (path: helm-chart/kuberay-operator)
helm install kuberay-operator .
# Check ClusterRole
kubectl get clusterrole | grep kuberay
# (nothing found)
# Check Role.
kubectl get role --all-namespaces | grep kuberay
#default kuberay-operator-leader-election 2023-10-15T05:34:27Z
#n1 kuberay-operator 2023-10-15T05:34:27Z
#n2 kuberay-operator 2023-10-15T05:34:27Z
# Install RayCluster in the `default`, `n1`, and `n2` namespaces.
helm install raycluster kuberay/ray-cluster --version 1.0.0
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n1
helm install raycluster kuberay/ray-cluster --version 1.0.0 -n n2
# KubeRay creates a RayCluster only in the `n1` and `n2` namespaces.
kubectl get raycluster -A
# NAMESPACE NAME DESIRED WORKERS AVAILABLE WORKERS STATUS AGE
# default raycluster-kuberay 74s
# n1 raycluster-kuberay 1 1 ready 70s
# n2 raycluster-kuberay 1 1 ready 67s