Earlier quoted context omitted.
kubectl apply on a directory full of yaml works fairly well for small stuff. Check it into git and it's version controlled. If you need something more flexible than that, try making your own helm chart. Helm will give you some text templating, pre and post hooks, some basic functions, and some versioning and rollback functionality. You can start simple by just pasting in your existing k8s yaml, and then just pull out…
kubectl apply on a directory doesn’t work because deleting a resource manifest won’t delete the corresponding resources.
I only use ‘kubectl apply’ for small stuff where I only have a couple resources. Anything more complicated and a tool like helm is much more useful.