I've deployed the following ConfigMap with my Kubernetes DameonSet resource:
apiVersion: v1
kind: ConfigMap
metadata:
name: fluentd-config
namespace: fluentd
data:
source: "#{ENV['MY_SOURCE']}"How can I find out what source evaluates to when my DameonSet is deployed?
I've tried the following but it doesn't help:
kubectl describe configmaps fluentd-configThe output only displays the templated ConfigMap:
Name: fluentd-config
Namespace: fluentd
Labels: <none>
Annotations: <none>
Data
====
source: "#{ENV['MY_SOURCE']}"By default you cannot do templating of kubernetes yaml manifest files. You would have to use tools like helm, there are many more for this.
To illustrate the issue, if you do kubectl create -f on the below file, it would not interpolate $HOME variable to /home/ps, a literal string $HOME would be
assigned inhome-dir.
apiVersion: v1
data:
home-dir: $HOME
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-data-1However, if you would do this imperatively , you can get the variable interpolated.
kubectl create cm my-data-2 --from-literal=home-dir="$HOME" --dry-run=client -o yaml
apiVersion: v1
data:
home-dir: /home/ps
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-data-2You can also do variable expansion as below:
cat << EOF |kubectl create -f -
apiVersion: v1
data:
user-name: $USER
kind: ConfigMap
metadata:
creationTimestamp: null
name: my-data-3
EOF