Kubernetes ships with a ConfigMap
called coredns
that lets you specify DNS settings. I want to modify or patch a small piece of this configuration
you should try something like this:
kubectl get cm some-config -o yaml | run 'sed' commands to make updates | kubectl create cm some-config -o yaml --dry-run | kubectl apply -f -
As ConfigMaps are used to mount configuration files to Pod, it seems like this is what you are looking for. ConfigMaps inside of containers will update automatically if the underlying ConfigMap or Secret is modified.
You can specify configMap location:
configMapVolume(mountPath: '/etc/mount3', configMapName: 'my-config'),
Update:
Ok, I guess this does not solve your issue.
Other thing that comes to my mind is kubectl create configmap
with a pipe to kubectl replace
So the whole command would look like this:
kubectl create configmap NAME --from-file file.name -o yaml --dry-run | kubectl replace -f -
Note that this replaces whole file, so just replace
should work too.
This will apply the same patch to that single field:
kubectl patch configmap/coredns \
-n kube-system \
--type merge \
-p '{"data":{"upstreamNameservers":"[\"1.1.1.1\", \"1.0.0.1\"]"}}'
you can edit it using vi as follows:
kubectl edit cm -n kube-system coredns
or you can export it to apply any changes using kubectl get cm -n kube-system -o yaml --export
then use kubectl apply -f fileName.yaml
to apply your changes