1

因此,我正在使用的典型 k8s 部署文件如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    ...
  name: ${service-name}
spec:
  replicas: 1
  strategy:
    ...
  template:
    metadata:
       ...
    spec:
      serviceAccountName: test
      ...

目标是创建可以访问相同的多个服务serviceAccount。当test存在于

kubectl get serviceaccount

问题是如果命名空间中不存在(出于任何原因),serviceAccountName我该如何设置defaultserviceAccount ?test我不想让部署失败

我基本上需要有类似的东西

serviceAccountName: {test:-default}

PS显然我可以从外部分配一个变量serviceAccountName并解析yaml文件,但想看看是否有更好的选择

4

1 回答 1

1

只要您想在集群内运行此验证,唯一的方法就是使用MutatingAdmissionWebhook

这将在进入 etcd 之前拦截与 MutatingWebhookConfiguration 中定义的规则匹配的请求。MutatingAdmissionWebhook 通过向 webhook 服务器发送准入请求来执行突变。Webhook 服务器只是遵循 API 的普通 http 服务器。

因此,您可以验证服务帐户是否存在,如果不存在则设置默认 sa。

这是weebhook的示例,它验证和设置自定义标签。

有关准入控制器 Webhook 的更多信息

于 2019-07-17T09:06:39.107 回答