Safest and best way to retrieve the current configuration file in yaml for a single or bunch of resources in a kubernetes cluster

10/8/2020

I applied a file xyz.yml sometime ago in EKS (Amazon elastic kubernetes service cluster) to deploy a statefulset pod from my local machine. This file is versioned in GitHub. However, there were few manual applies made using kubectl for this file to the kubernetes cluster after that, so it looks like the source file i have right now in GitHub might be out of sync from the cluster. Is there a safe and easy way to retrieve this file in yaml directly from the cluster using kubectl so that i can use that from now in my GitHub source code. I do not want to make changes in my GitHub source code and then apply them to the cluster as the file might be out of sync. If somehow i could directly retrieve the file in YAML from the kubernetes cluster, that would really help solve the problem. I tried --dry-run or kubectl diff but don't seem to be helping. I am new to kubernetes, hence do not want to experiment with commands directly on the cluster. Any help here would be greatly appreciated.

Cheers,

Ashley

-- Ashley
amazon-eks
kubectl
kubernetes
kubernetes-pod

2 Answers

10/8/2020

You can try with edit:

kubectl -n <namespace name> edit [deployment, pod, svc] <name>
-- herbertgoto
Source: StackOverflow

10/8/2020

You can get the current YAML of individual resources with:

kubectl get <resource> -o yaml

But you can't get all the resources that you created with this file at once because Kubernetes doesn't keep track of the manifest files in which the resource definitions were supplied.

So you would need to check which resources were created by your file and get them individually as above. Or if all the resources in this file have common labels, perhaps you could get them more easily by these labels.

-- weibeld
Source: StackOverflow