如何在GKE Deployment.YAML中为Pods指定ServiceAccountName



我已经为Workload Identity配置了集群和节点池(https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)但为了让它发挥作用,我还需要让我的pod使用我为WorkloadIdentity创建的kubernetes服务帐户。

我知道我可以在pod的YAML中指定serviceAccountName,但我如何使用使用deployment.YAML的Google CI/CD来做到这一点?或者,我可以以某种方式引用pod的YAML,用作deployment.YAML中的规范模板吗?对不起,我是k8s的新手!

参考。https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

本质上,我只是想让WorkloadIdentity与我的应用程序一起使用,所以GOOGLE_APPLICATION_CREDENTIALS是由谷歌设置的,可以在我的应用中使用!

我在部署中尝试了以下操作。yaml,但我得到了错误unknown field "serviceAccountName" in io.k8s.api.core.v1.Container;:

spec:
replicas: 3
selector:
matchLabels:
app: my-application
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: my-application
spec:
containers:
- image: >-
gcr.io/my-project/github.com/my-org/my-repo
imagePullPolicy: IfNotPresent
name: my-application
serviceAccountName: my-k8s-svc-acct

serviceAccountName是pod spec对象的属性,而不是容器。所以,它应该是:

spec:
replicas: 3
selector:
matchLabels:
app: my-application
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: my-application
spec:
serviceAccountName: my-k8s-svc-acct
containers:
- image: >-
gcr.io/my-project/github.com/my-org/my-repo
imagePullPolicy: IfNotPresent
name: my-application

缩进是错误的

它应该像这个

spec:
containers:
- image: nginx
name: nginx
serviceAccount: 
serviceAccountName: 

最新更新