Also habe ich versucht, ABAC-Autorisierung in der Kubernetes-API mit den folgenden Argumenten in meiner kube-api-Manifest-Datei zu implementieren.Welchen Benutzernamen verwendet der kubernetes kubelet bei der Kontaktaufnahme mit der kubernetes API?
- --authorization-mode=ABAC
- --authorization-policy-file=/etc/kubernetes/auth/abac-rules.json
Und der folgende Inhalt in der Datei 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 }}
Jedoch können die kubelets anscheinend keine Verbindung zu den api-Servern herstellen. Ich habe gelesen, dass der Benutzername aus dem CN-Feld des -subject in dem Zertifikat zur Authentifizierung der Verbindung, see here genommen wird. In diesem Fall ist das der FQDN des Schlauches, ich habe das auch ohne Glück versucht.
Irgendwelche Ideen, was ich falsch mache?
Prost im Voraus
Edit:
Ich verwende Kubernetes Version 1.2.2, die beide kubectl und hyperkube Docker Bild.
Es hat mir sicher geholfen. Vielen Dank! –