我正在与GKE群集进行交互,并试图了解我的权限
public abstract class AlgorithmBase
{
private readonly AlgorithmBase Parent;
public async Task<float[]> GetDataAsync(int requestedItemIndex, CancellationToken token = default)
{
var data = await Parent.GetDataAsync(requestedItemIndex);
return await Task.Run<float[]>(async () => ProcessData());
}
}
但是我看不到任何与我相关的角色。
我如何与➢ kubectl get roles --all-namespaces
NAMESPACE NAME AGE
istio-system istio-ingressgateway-sds 38d
kube-public system:controller:bootstrap-signer 38d
kube-system cloud-provider 38d
kube-system extension-apiserver-authentication-reader 38d
kube-system gce:cloud-provider 38d
kube-system sealed-secrets-key-admin 38d
kube-system system::leader-locking-kube-controller-manager 38d
kube-system system::leader-locking-kube-scheduler 38d
kube-system system:controller:bootstrap-signer 38d
kube-system system:controller:cloud-provider 38d
kube-system system:controller:token-cleaner 38d
kube-system system:fluentd-gcp-scaler 38d
kube-system system:pod-nanny 38d
集群进行交互?
如何查看whoami和我的权限是什么?
答案 0 :(得分:1)
您共享的命令和输出是指Kubernetes RBAC授权(不限于GKE)。您可以找到每个角色HERE
的定义如果您想特定于GKE,则可以使用Cloud Identity and Access Management和Kubernetes RBAC来控制对GKE集群的访问。
Cloud IAM并非特定于Kubernetes;它为多个Google Cloud Platform产品提供身份管理,并且主要在GCP项目级别上运行。
Kubernetes RBAC是Kubernetes的核心组件,它允许您为集群中的任何对象或对象类型创建并授予角色(权限集)。您可以找到有关RBAC如何与GKE HERE
集成的更多信息。您没有看到与您相关的任何角色,因为正在查询所有命名空间的角色,并且很可能您没有定义一个。
您正在从云外壳与群集进行交互。在连接到群集之前,您必须运行以下命令。
gcloud container clusters get-credentials CLUSTER_NAME --zone ZONE --project PROJECT_ID
您使用与身份验证相同的用户身份登录集群,以登录GCP。有关kubectl HERE
身份验证的更多信息如我的示例命令所示,您可以基于名称空间或资源获得角色绑定和集群角色。
kubectl get rolebinding POD_NAME -o yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"RoleBinding","metadata":{"annotations":{},"name":"pod-reader-binding","namespace":"default"},"roleRef":{"apiGroup":"rbac.authorization.k8s.io","kind":"Role","name":"pod-reader"},"subjects":[{"kind":"User","name":"example@foo.com"},{"kind":"ServiceAccount","name":"johndoe"},{"kind":"User","name":"test-account@example.google.com.iam.gserviceaccount.com"},{"kind":"Group","name":"accounting-group@example.com"}]}
creationTimestamp: xxxx-xx-xxxx:xx:xxZ
name: pod-reader-binding
namespace: default
resourceVersion: "1502640"
selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/pod-reader-binding
uid: de1775dc-cd85-11e9-a07d-42010aa800c2
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pod-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: example@foo.com
在上面的示例中,我的用户[example@foo.com]是APIGroup [rbac.authorization.k8s.io]的成员,因此,他在pod上的操作将受到他向RBAC授予的权限的限制,例如您想授予该用户读取访问权限,您需要在YAML中指定以下行
verbs: ["get", "watch", "list"]
最后,有许多预定义的GKE角色向GCP用户或服务帐户授予不同的权限。您可以找到每个角色和权限HERE