gpt4 book ai didi

authentication - kubernetes kubelet 在联系 kubernetes API 时使用什么用户名?

转载 作者:行者123 更新时间:2023-12-04 08:46:33 25 4
gpt4 key购买 nike

所以我一直在尝试在 kubernetes API 中实现 ABAC 授权,在我的 kube-api list 文件中使用以下参数。

  - --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 }}

但是,kubelet 似乎无法连接到 api 服务器。我读到用户名取自用于验证连接的证书中 -subject 的 CN 字段,see here .在这种情况下,这是软管的 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 策略。我使用以下参数重新生成了我的证书,现在节点已成功验证 :)

# Create worker key
openssl genrsa -out $OUT/${WORKER_HOSTNAME}/worker-key.pem 2048
#Creating Worker CSR...
WORKER_FQDN=${WORKER_FQDN} WORKER_IP=${WORKER_IP} openssl req -new -key $OUT/${WORKER_HOSTNAME}/worker-key.pem -out $OUT/${WORKER_HOSTNAME}/worker.csr -subj "/CN=kubelet" -config $SSL_CONFIG
# Creating Worker Cert
WORKER_FQDN=${WORKER_FQDN} WORKER_IP=${WORKER_IP} openssl x509 -req -in $OUT/${WORKER_HOSTNAME}/worker.csr -CA $CA/ca.pem -CAkey $CA/ca-key.pem -CAcreateserial -out $OUT/${WORKER_HOSTNAME}/worker.pem -days 365 -extensions v3_req -extfile $SSL_CONFIG

其中重要的部分是:

-subj "/CN=kubelet"

希望这对其他人有帮助。

关于authentication - kubernetes kubelet 在联系 kubernetes API 时使用什么用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37786244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com