k8s授权探索杂记

做~自己de王妃 提交于 2019-11-30 05:47:35

参与的一个项目,部署再阿里云k8s上。

出于安全考虑k8s账号身份验证信息只有我和另一个同事有,其他同事开发完功能要部署到线上需要我手动使用kubectl更新。

像我这样的懒人是不愿意做这种简单而重复无聊的更新操作的。

要自动化很简单,teamcity持续集成构建部署分分钟的事,问题是:身份验证信息,不能放到teamcity上去。

所以,我需要弄一个受限的k8s账号,只允许执行更新操作。

浏览了一下k8s文档Controlling Access to the Kubernetes API章节,控制API访问权限显然有的。

只是:我需要控制哪个API访问权限了?更新的时候执行的是kubectl rollout restart deployments命令,可是这个命令到底调用了哪个API了?不知道。

看这样子应该是deployment API了:

可是看哪个都不像restart啊。

”要是能给kubectl设置个代理通过Fiddler拦截到kubectl发送的请求就好了“,我默念。
google kubectl proxy,搜到的全是kubectl proxy命令的用法。

无奈继续看官方文档,终于看到设置日志Kubectl output verbosity and debugging --v=8 Display HTTP request contents,要的就是这个。

终于看到重启调用的是啥了:
PATCH /apis/extensions/v1beta1/namespaces/{namespace}/deployments/{deployment}
Request Body: {"spec":{"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/restartedAt":"2019-09-21T14:09:51+08:00"}}}}}

k8s API这设计有点意思哈~~通过修改restartedAt来实现重启。

现在问题就是,怎么控制权限只能调用这个了:
限制namespace、resource type、verb这些都很简单,可是,怎么限制PATCH的属性了?显然PATCH还可以修改别的属性,所以得限制,只能改kubectl.kubernetes.io/restartedAt

这个……限制PATCH的属性,好像做不到。

只能作罢,继续手动跑吧。

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!