我建立了一个基于 Kubernetes 的自助服务平台,我们为每个团队创建命名空间,并允许他们“在命名空间内做任何他们想做的事情”(我们设置了资源限制,所以没有人可以杀死整个集群)。
但是,现在我想在整个组织中实施某种标准。例如,我希望每个 PodSpec 定义它自己的资源限制,并且我希望每个资源都有一个标签来指定它属于哪个应用程序。
是否有一种机制允许 API 服务器根据一组规则检查正在应用的清单,如果检查失败,则清单被拒绝。
例如,以下清单将被拒绝,因为它既没有标签也没有设置资源限制。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
但是以下清单会成功,因为它满足所有规则:
api版本:应用程序/v1 种类:部署 元数据: 名称:nginx-部署 标签: 应用程序:foobar 规格: 选择器: 匹配标签: 应用程序:nginx 复制品:2 模板: 元数据: 标签: 应用程序:nginx 规格: 容器: - 名称:nginx 图片:nginx:1.7.9 端口: - 容器端口:80 资源: 限制: cpu:“1” 请求: cpu:“0.5”