Как указать 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: