如何在现有Kubernetes集群上启用RBAC

时间:2018-02-28 12:52:52

标签: kubernetes google-kubernetes-engine

在Kubernetes的this文档中说:

To enable RBAC, start the apiserver with --authorization-mode=RBAC

如何升级现有群集和/或如何查看RBAC是否已启用?

我在Google k8群集上创建了我的群集,只有kubectl。

我见过this,但有点没用。

2 个答案:

答案 0 :(得分:3)

您是否可以通过SSH连接到主节点/节点并编辑/etc/kubernetes/manifests/kube-apiserver.yaml

您应该在文件>

中看到类似下面的内容
command:
    - "/hyperkube"
    - "apiserver"
    - "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
    - "--address=0.0.0.0"
    - "--allow-privileged"
    - "--insecure-port=8080"
    - "--secure-port=443"
    - "--cloud-provider=azure"
    - "--cloud-config=/etc/kubernetes/azure.json"
    - "--service-cluster-ip-range=10.0.0.0/16"
    - "--etcd-servers=http://127.0.0.1:2379"
    - "--etcd-quorum-read=true"
    - "--advertise-address=10.240.255.15"
    - "--tls-cert-file=/etc/kubernetes/certs/apiserver.crt"
    - "--tls-private-key-file=/etc/kubernetes/certs/apiserver.key"
    - "--client-ca-file=/etc/kubernetes/certs/ca.crt"
    - "--service-account-key-file=/etc/kubernetes/certs/apiserver.key"
    - "--storage-backend=etcd2"
    - "--v=4" 

只需添加--authorization-mode=RBAC并重启节点即可。

这样的东西
command:
        - "/hyperkube"
        - "apiserver"
        - "--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota"
        - "--address=0.0.0.0"
        - "--allow-privileged"
        - "--insecure-port=8080"
        - "--secure-port=443"
        - "--cloud-provider=azure"
        - "--cloud-config=/etc/kubernetes/azure.json"
        - "--service-cluster-ip-range=10.0.0.0/16"
        - "--etcd-servers=http://127.0.0.1:2379"
        - "--etcd-quorum-read=true"
        - "--advertise-address=10.240.255.15"
        - "--tls-cert-file=/etc/kubernetes/certs/apiserver.crt"
        - "--tls-private-key-file=/etc/kubernetes/certs/apiserver.key"
        - "--client-ca-file=/etc/kubernetes/certs/ca.crt"
        - "--service-account-key-file=/etc/kubernetes/certs/apiserver.key"
        - "--storage-backend=etcd2"
        - "--v=4"
        - "--authorization-mode=RBAC"

请注意,这肯定不是官方的方式,但它确实适用于我运行Kubernetes 1.8

答案 1 :(得分:1)

Google公开文档介绍了Google Kubernetes Engine Clusters上的how to use RBAC。对于运行1.6或1.7的GKE群集,必须使用--no-enable-legacy-authorization标志创建或更新群集。对于1.8或更高版本,默认情况下禁用旧版授权。

您可以使用gcloud container clusters update [CLUSTER_NAME] --no-enable-legacy-authorization更新群集。

RBAC API已经使用GK​​E(rbac.authorization.k8s.io)启用,因此您可以开始创建对象。