Я пытаюсь использовать команду kubectl run для создания модуля, который использует настраиваемую учетную запись службы «svcacct1» вместо стандартной служебной учетной записи.Похоже, что нет переключателя для предоставления конкретной учетной записи service в команде run, поэтому используйте параметр --overrides для предоставления JSON, как показано ниже.
kubectl run ng2 --image=nginx --namespace=test --overrides='{ "apiVersion": "apps/v1", "spec": { "serviceAccount": "svcacct1" , "serviceAccountName": "svcacct1" } }' -o yaml
Это успешно создает Pod (и развертывание), но не использует "svcacct1" и вместо этого использует "default", как показано ниже (показана только соответствующая часть вывода)
> kubectl get po ng2-569d45c6b5-c9zhp -o yaml -n test
spec:
containers:
- image: nginx
imagePullPolicy: Always
name: ng2
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: default-token-cpwjr
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: minikube
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
Кроме того, учетная запись существует в правильном пространстве имен.
> kubectl get serviceaccount svcacct1 -o yaml -n test
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: "2019-05-01T11:56:52Z"
name: svcacct1
namespace: test
resourceVersion: "632061"
selfLink: /api/v1/namespaces/test/serviceaccounts/svcacct1
uid: 3573ffc6-6c08-11e9-9c81-0800270172ea
secrets:
- name: svcacct1-token-q9ksc
Не ясно, чего не хватает для этой работы?