本文介绍了如何为GKE Deployment.YAML中的Pods指定ServiceAccountName的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经为工作负载标识(https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)配置了我的群集和节点池,但是为了使其正常工作,我还需要使我的Pod使用我为工作负载标识创建的Kubernetes服务帐户。

我知道我可以在Pod的YAML中指定serviceAccountName,但是如何使用Google CI/CD(它使用deployment.yaml)来实现这一点呢?或者,我可以以某种方式引用Pod的YAML作为我的ployment ment.yaml中的规范模板吗?抱歉,我是K8S新手!

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

本质上,我只是尝试让工作负载标识与我的应用程序一起使用,以便Google将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:
  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

这篇关于如何为GKE Deployment.YAML中的Pods指定ServiceAccountName的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-19 03:44