Kubernetes简单认证

时间:2016-03-11 14:00:43

标签: kubernetes digital-ocean coreos

我在DigitalOcean上托管的coreOs群集上使用KUbernetes。 并使用this 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

问题是它接受任何人的请求!我希望能够提供简单的用户/密码身份验证。我一直在阅读thisthis,似乎我必须做类似下面的事情,但是我不能长时间关闭群集,所以我需要你的帮助有了这一个。但是,mt pods不会创建另一个pod,所以我只需要一些用户,例如1/2用于开发者,1用于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?

实际发出请求

1 个答案:

答案 0 :(得分:10)

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

--basic-auth-file=/basic_auth.csv

到您的kube-apiserver命令行,其中文件的每一行应为password, user-name, user-id。 E.g:

@dm1nP@ss,admin,admin
w3rck3rP@ss,wercker,wercker
etc...

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

--token-auth-file=/known-tokens.csv

其中每一行应为token,user-name,user-id[,optional groups]。 E.g:

@dm1nT0k3n,admin,admin,adminGroup,devGroup
w3rck3rT0k3n,wercker,wercker,devGroup
etc...

有关详情,请查看Authentication docs。另请查看example_policy_file.jsonl以获取示例ABAC文件。