How to edit configmap in kubernetes and override the values from a different yaml file?

6/25/2019

I want to edit the configmap and replace the values. But it should be done using a different YAML in I ll specify overriding values as part of that file.

I was trying using kubectl edit cm -f replace.yaml but this didn't work so i want to know the structure in which the new file should be.

apiVersion: v1
kind: ConfigMap
metadata:
  name: int-change-change-management-service-configurations
data:
  should_retain_native_dn: "False"
  NADC_IP: "10.11.12.13"
  NADC_USER: "omc"
  NADC_PASSWORD: "hello"
  NADC_PORT: "991"
  plan_compare_wait_time: "1"
  plan_prefix: ""
  ingress_ip: "http://10.12.13.14"

Now lets us assume NADC_IP should be changed and So I would like to know how should be structure of the YAML file and using which command it can be served?

The override taking place should only be during helm test for example when i run helm test <release-name>?

-- Gokul Manoj Dhoot
kubernetes

3 Answers

6/25/2019

kubectl get cm {configmap name} -o=yaml --export > filename.yaml

You can try this it will give you yaml format

kubectl get configmap int-change-change-management-service-configurations -o yaml

You can copy the content and replace it inside new yaml file and apply the changes

EDIT : 1

If you want to edit over terminal you can run

kubectl edit configmap {configmap name}

It will use vim editor and you can replace value from terminal using edit command.

EDIT : 2

kubectl get cm {configmap name} -o=yaml --export > filename.yaml

-- Harsh Manvar
Source: StackOverflow

6/25/2019

kubectl replace -f replace.yaml

If you have a configmap in place like this:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap
data:
  should_retain_native_dn: "False"
  NADC_IP: "10.11.12.13"

and you want to change the value of NADC_IP create a manifest file like this:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-configmap
data:
  should_retain_native_dn: "False"
  NADC_IP: "12.34.56.78" # the new IP

and run kubectl replace -f replace.yaml

-- switchboard.op
Source: StackOverflow

6/25/2019

To update variable in configmap you need to take two steps:

First, update the value of variable:

kubectl create configmap <name_of_configmap> --from-literal=<var_name>=<new_value> -o yaml --dry-run | kubectl replace -f -

So in your case it will looks like this:

kubectl create configmap int-change-change-management-service-configurations --from-literal=NADC_IP=<new_value> -o yaml --dry-run | kubectl replace -f -

Second step, restart the pod:

kubectl delete pod <pod_name>

App will use new value from now. Let me know, if it works for you.

-- muscat
Source: StackOverflow