How to edit Kubernetes ServiceAccount's namespace

6/28/2018

I have service account name: myservice

$ kubectl get serviceaccount 
NAME        SECRETS   AGE
default     1         15d
myservice   1         15d


$ kubectl get serviceaccount myservice -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2018-06-13T12:41:18Z
  name: myservice
  namespace: default
  ...

I want to change the service's namespace default to development.
I tried to edit it with:
kubectl edit serviceaccount myservice

After saving it I received:

A copy of your changes has been stored to "/tmp/kubectl-edit-gjae6.yaml"
error: the namespace from the provided object "development" does not match the namespace "default". You must pass '--namespace=development' to perform this operation.

So I tried like they wrote and it still didn't work:

$ kubectl edit serviceaccount myservice --namespace=development
Error from server (NotFound): serviceaccounts "myservice" not found

The namespace development is exist and also the service myservice.

-- E235
kubernetes
namespaces
service

1 Answer

6/28/2018

It seems you should create new myservice SA in development NS instead modifying existing SA in default namespace. Create new myservice in development NS, then remove one in default NS. The error cause the nonexistent myservice even is in development NS.

-- Daein Park
Source: StackOverflow