Authentication kubernetes kubelet在联系kubernetes API时使用什么用户名?
因此,我一直在尝试在kubernetes API中实现ABAC授权,在我的kube API清单文件中使用以下参数Authentication kubernetes kubelet在联系kubernetes API时使用什么用户名?,authentication,authorization,kubernetes,Authentication,Authorization,Kubernetes,因此,我一直在尝试在kubernetes API中实现ABAC授权,在我的kube API清单文件中使用以下参数 - --authorization-mode=ABAC - --authorization-policy-file=/etc/kubernetes/auth/abac-rules.json 以及abac-rulse.json文件中的以下内容 {"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind":
- --authorization-mode=ABAC
- --authorization-policy-file=/etc/kubernetes/auth/abac-rules.json
以及abac-rulse.json文件中的以下内容
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"*", "nonResourcePath": "*", "readonly": true}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"admin", "namespace": "*", "resource": "*", "apiGroup": "*" }}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"scheduler", "apiGroup": "*", "namespace": "*", "resource": "*", "readonly": false}}
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"user":"kubelet", "apiGroup": "*", "namespace": "*", "resource": "*", "readonly": false }}
然而,kubelets似乎无法连接到api服务器。我了解到用户名取自用于验证连接的证书中-subject的CN字段。在本例中,这是软管的fqdn,我也尝试过,但没有成功
知道我做错了什么吗
提前欢呼
编辑:
我使用的是Kubernetes版本1.2.2,包括kubectl和hyperkube docker图像。找到了答案,在这里为其他与ABAC有相同问题的人提供文档 kubelet用户是在worker配置中定义的,在我的例子中,它是一个yaml文件,我存储在这里-
/etc/kubernetes/worker kubeconfig.yaml
,其内容如下所示:
apiVersion: v1
kind: Config
clusters:
- name: default
cluster:
server: https://10.96.17.34:8443
certificate-authority: /etc/kubernetes/ssl/ca.pem
users:
- name: kubelet
user:
client-certificate: /etc/kubernetes/ssl/worker.pem
client-key: /etc/kubernetes/ssl/worker-key.pem
contexts:
- context:
cluster: default
user: kubelet
name: kubelet-context
current-context: kubelet-context
因此,它连接的用户是kubelet
在我的例子中,我使用CN=${MINION_FQDN}创建了我的证书,因为这与“kubelet”不匹配,所以ABAC策略没有得到满足。我使用以下参数重新生成了证书,现在节点已成功进行身份验证:)
其中的重要部分是:
-subj "/CN=kubelet"
希望这对其他人有帮助。它确实对我有帮助。谢谢
-subj "/CN=kubelet"