Kubernetes 如果“serviceAccountName”不存在,请将其设置为“default”

Kubernetes 如果“serviceAccountName”不存在,请将其设置为“default”,kubernetes,kubernetes-deployment,Kubernetes,Kubernetes Deployment,因此,我正在研究的典型k8s部署文件如下所示: apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: ... name: ${service-name} spec: replicas: 1 strategy: ... template: metadata: ... spec: serviceAccountName: test ..

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

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    ...
  name: ${service-name}
spec:
  replicas: 1
  strategy:
    ...
  template:
    metadata:
       ...
    spec:
      serviceAccountName: test
      ...
目标是创建多个可以访问同一
servicecomport
的服务。 当中存在
test
时,此结构工作正常

kubectl get serviceaccount
问题是,如果命名空间中不存在
test
(出于任何原因),如何将
serviceAccountName
设置为
default
serviceAccount? 我不想部署失败

我基本上需要一些类似的东西

serviceAccountName: {test:-default}

另外,很明显,我可以为
serviceAccountName
分配一个变量,并从外部解析yaml文件,但我想看看是否有更好的选项

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

这将截获与MutatingWebhookConfiguration中定义的规则匹配的请求,然后再将其放入etcd。MutatingAdministrationWebhook通过向webhook服务器发送准入请求来执行变异。Webhook服务器只是遵循API的普通http服务器

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

下面是weebhook的一个示例,它验证并设置自定义标签

更多关于