云原生服务中心 OSC-实现Controller:RBAC权限管理

时间:2023-11-01 16:15:34

RBAC权限管理

Operator使用基于角色的访问控制机制对Kubernetes中的资源进行访问,因此,要保证Operator正确的运行,需要使用管理员权限的帐号对Operator进行授权,即预先创建对应的role和rolebinding。

在Reconcile()上添加markers,增加Operator对于Service、StatefulSet、Deployment、Pod的管理权限,SDK即可自动生成对应的role和rolebinding等资源描述文件。

// +kubebuilder:rbac:groups=osctest.huawei.com,resources=hwfkas,verbs=get;list;watch;create;update;patch;delete// +kubebuilder:rbac:groups=osctest.huawei.com,resources=hwfkas/status,verbs=get;update;patch// +kubebuilder:rbac:groups=core,resources=services,verbs=get;list;watch;create;update;patch;delete// +kubebuilder:rbac:groups=apps,resources=statefulsets,verbs=get;list;watch;create;update;patch;delete// +kubebuilder:rbac:groups=apps,resources=deployments,verbs=get;list;watch;create;update;patch;delete// +kubebuilder:rbac:groups=core,resources=pods,verbs=get;list;watch// +kubebuilder:rbac:groups=core,resources=persistentvolumeclaims,verbs=get;list;watch;updatefunc (r *HwfkaReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {    // ...}

如果Operator为namespace级别的,则需要还添加namespace,如:

// +kubebuilder:rbac:groups=osctest.huawei.com,namespace=example,resources=hwfkas,verbs=get;list;watch;create;update;patch;delete// +kubebuilder:rbac:groups=osctest.huawei.com,namespace=example,resources=hwfkas/status,verbs=get;update;patch
support.huaweicloud.com/devg-osc/osc_ss_0027.html