Kubernetes简单认证

CES*_*SCO 3 digital-ocean coreos kubernetes

我在DigitalOcean上托管的coreOs集群上使用KUbernetes.并使用 repo进行设置.我使用以下行启动apiserver:

/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \ --insecure-bind-address=0.0.0.0 --insecure-port=8080 \ --secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \ --logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \ --service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0

问题是它接受任何人的请求!我希望能够提供简单的用户/密码身份验证.我一直在读这个这个似乎我必须做类似下面的事情,但是我不能长时间地关闭集群,所以我需要你的帮助这个.Btw,mt pods不要创建另一个pod,所以我只需要一些用户,比如1/2 for devs和1 for CI.

我正在考虑做一些类似于包括授权模式和授权策略文件标志的东西,因为它似乎需要并使insecure-bind-address localhost使其仅在本地可用.我错过了什么?

/opt/bin/kube-apiserver --runtime-config=api/v1 --allow-privileged=true \ --authorization-mode=ABAC --authorization-policy-file=/access.json \ --insecure-bind-address=127.0.0.1 --insecure-port=8080 \ --secure-port=6443 --etcd-servers=http://127.0.0.1:2379 \ --logtostderr=true --advertise-address=${COREOS_PRIVATE_IPV4} \ --service-cluster-ip-range=10.100.0.0/16 --bind-address=0.0.0.0

/access.json

{"user":"admin"} {"user":"wercker"} {"user":"dev1"} {"user":"dev2"}

但是密码在哪里?如何使用kubectl和curl或httpie实际发出请求?

CJ *_*len 11

如果您希望用户使用HTTP Basic Auth(用户:密码)进行身份验证,您可以添加:

--basic-auth-file=/basic_auth.csv
Run Code Online (Sandbox Code Playgroud)

到你的kube-apiserver命令行,文件的每一行应该是password, user-name, user-id.例如:

@dm1nP@ss,admin,admin
w3rck3rP@ss,wercker,wercker
etc...
Run Code Online (Sandbox Code Playgroud)

如果您更愿意使用访问令牌(HTTP身份验证:承载),您可以指定:

--token-auth-file=/known-tokens.csv
Run Code Online (Sandbox Code Playgroud)

每行应该在哪里token,user-name,user-id[,optional groups].例如:

@dm1nT0k3n,admin,admin,adminGroup,devGroup
w3rck3rT0k3n,wercker,wercker,devGroup
etc...
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请查看身份验证文档.另请查看example_policy_file.jsonl以获取示例ABAC文件.

  • __basic auth 在 > 1.19__ 中已弃用 [根据发行说明](https://v1-19.docs.kubernetes.io/docs/setup/release/notes/) (2认同)