因此,我正在唤醒的典型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
(出于任何原因),如何将default
设置为test
serviceAccount?
我不想使部署失败
我基本上需要拥有
serviceAccountName: {test:-default}
P.S。显然,我可以为serviceAccountName
分配一个变量并从外部解析yaml文件,但想看看是否有更好的选择
答案 0 :(得分:1)
只要您要在集群中运行此验证,唯一的方法就是使用MutatingAdmissionWebhook。
在存在etcd之前,它将拦截与MutatingWebhookConfiguration中定义的规则匹配的请求。 MutatingAdmissionWebhook通过向Webhook服务器发送接纳请求来执行变异。 Webhook服务器只是遵循API的普通http服务器。
因此,您可以验证服务帐户是否存在,如果不存在,则设置默认值sa。
这是weebhook的example,它可以验证并设置自定义标签。
的更多信息