在Kubernetes(K8S)中,要让普通用户拥有K8S权限,需要通过RBAC(Role-Based Access Control)来分配角色和权限。RBAC能够帮助我们定义哪些用户(或团队)对K8S资源有哪些操作权限。

下面我将详细介绍普通用户拥有K8S权限的步骤,并提供相应的代码示例,以便你可以更好地理解和实践。

步骤 | 操作内容
---|---
Step 1 | 创建 Namespace(命名空间)
Step 2 | 创建 ServiceAccount(服务账户)
Step 3 | 创建 Role(角色)
Step 4 | 创建 RoleBinding(角色绑定)

#### Step 1: 创建 Namespace

```bash
kubectl create namespace my-namespace
```

这段代码的作用是创建一个名为`my-namespace`的命名空间,用于存放我们后续创建的资源。

#### Step 2: 创建 ServiceAccount

```bash
kubectl create serviceaccount my-user -n my-namespace
```

这段代码的作用是在`my-namespace`命名空间下创建一个名为`my-user`的服务账户,后续我们将为该账户分配角色和权限。

#### Step 3: 创建 Role

在这一步,我们将为普通用户创建一个角色,定义该用户对资源的操作权限。

首先,创建一个名为`my-role`的 YAML 文件`role.yaml`,内容如下:

```yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: my-namespace
name: my-role
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list", "create", "delete"]
```

然后,使用以下命令创建角色:

```bash
kubectl create -f role.yaml
```

这段代码的作用是创建一个名为`my-role`的角色,定义了用户对于`my-namespace`命名空间下的`pods`资源可以执行的操作权限。

#### Step 4: 创建 RoleBinding

在这一步,我们将把服务账户和角色进行绑定,从而赋予普通用户对资源的操作权限。

首先,创建一个名为`my-rolebinding`的 YAML 文件`rolebinding.yaml`,内容如下:

```yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: my-rolebinding
namespace: my-namespace
subjects:
- kind: ServiceAccount
name: my-user
namespace: my-namespace
roleRef:
kind: Role
name: my-role
apiGroup: rbac.authorization.k8s.io
```

然后,使用以下命令创建角色绑定:

```bash
kubectl create -f rolebinding.yaml
```

这段代码的作用是创建一个名为`my-rolebinding`的角色绑定,将`my-user`服务账户与`my-role`角色进行绑定,从而赋予`my-user`对`pods`资源的操作权限。

经过以上步骤,普通用户就拥有了对指定资源的操作权限。你可以通过让用户使用指定的 ServiceAccount 来实现对 Kubernetes 资源的访问。

希望这篇文章可以帮助你理解普通用户如何在K8S中获得权限,带着这些知识去实践吧!