I've created several resources using k8s Ansible module. Now I'd like to export the resources into Kubernetes manifests (so I don't need to use Ansible anymore). I've started by exporting a Service:
$ kubectl get svc myservice -o yaml --export > myservice.yaml
$ kubectl apply -f myservice.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
service/myservice configured
Why do I get the the warning? And why there's service/myservice configured
and not service/myservice unchanged
? Is there a better way to export resources?
You get the warning because you're using kubectl apply
on a resource that you previously created with kubectl create
. If you create the initial Service with kubectl apply
, you shouldn't get the warning.
The configured
instead of unchanged
might be because of some metadata or generated data that is also included in the output of kubectl get svc myservice -o yaml --export
.
You're doing right, don't worry about the warning.
If you want to get rid of it, you have to delete all the generation
, selfLink
and so on keys.
Yes, you are doing it right. Let me show you small trick:
kubectl get svc myservice -o yaml --export | sed -e '/status:/d' -e '/creationTimestamp:/d' -e '/selfLink: [a-z0-9A-Z/]\+/d' -e '/resourceVersion: "[0-9]\+"/d' -e '/phase:/d' -e '/uid: [a-z0-9-]\+/d' > myservice.yaml
Will generate proper yaml file without status, creationTimestamp, selfLink, resourceVersion, phase and uid
.