1

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

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

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

本质上,我只是想让 Workload Identity 与我的应用程序一起使用,因此GOOGLE_APPLICATION_CREDENTIALS由 Google 设置以在我的应用程序中使用!

我在 deployment.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
4

2 回答 2

5

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
      
于 2021-06-17T15:09:50.790 回答
1

缩进是错误的

应该是这样的

spec:
  containers:
    - image: nginx
      name: nginx
  serviceAccount: 
  serviceAccountName: 
于 2021-06-17T15:08:28.413 回答