Как указать ServiceAccountName для модулей в GKE Deployment.YAML

Я настроил пулы кластера и узлов для идентификации рабочей нагрузки (https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity), но для того, чтобы заставить его работать, мне также нужно заставить мои поды использовать учетную запись службы kubernetes, которую я создал для удостоверения рабочей нагрузки.

Я вижу, что могу указать serviceAccountNameв YAML модуля, но как я могу это сделать с помощью Google CI / CD, который использует deployment.yaml? Или я могу как-то сослаться на YAML модуля для использования в качестве шаблона спецификации в моем deployment.yaml? Извините, я новичок в k8s!

Ref. 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

2 ответа

Решение

serviceAccountNameявляется свойством объекта спецификации модуля, а не контейнера. Итак, должно быть:

      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: 
Другие вопросы по тегам