Как создать модуль, который использует учетную запись службы по умолчанию, используя команду kubectl run? - PullRequest
1 голос
/ 01 мая 2019

Я пытаюсь использовать команду 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

Не ясно, чего не хватает для этой работы?

1 Ответ

3 голосов
/ 01 мая 2019

По крайней мере в kubectl 1.14 есть такой флаг:

$ kubectl version --client
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.0", GitCommit:"641856db18352033a0d96dbc99153fa3b27298e5", GitTreeState:"clean", BuildDate:"2019-03-26T00:04:52Z", GoVersion:"go1.12.1", Compiler:"gc", Platform:"darwin/amd64"}
$ kubectl run -h | grep -- "--serviceaccount"
      --serviceaccount='': Service account to set in the pod spec
...