Skip to content

How to check the default CoreDNS configmap of a Rancher Kubernetes Engine (RKE) Kubernetes version

This document (000020036) is provided subject to the disclaimer at the end of this document.

Environment

  • Rancher 2.6.x/ 2.7/2.8.x
  • CoreDNS default configuration

Situation

Task

You might have modified the default configmap for CoreDNS using Rancher Kubernetes Engine's (RKE) cluster configuration YAML ( cluster.yml). In this case, you may want to know the default configmap before upgrading Kubernetes. This verification step will help you to add all of the default/mandatory parameters to the modified configmap in RKE's cluster.yml, upon upgrade.

Pre-requisites

  • Python installed.

Resolution

Download the kontainer-metadata according to the Rancher version you are running.

Rancher 2.6.x:

curl -O https://raw.githubusercontent.com/rancher/kontainer-driver-metadata/release-v2.6/data/data.json

Rancher v2.7.x:

curl -O https://raw.githubusercontent.com/rancher/kontainer-driver-metadata/dev-v2.7/data/data.json
Rancher v2.8.x:
curl -O https://raw.githubusercontent.com/rancher/kontainer-driver-metadata/dev-v2.8/data/data.json
Get the available template list:
python -c "import sys, json; d=json.load(sys.stdin)['K8sVersionedTemplates']['coreDNS']; print (json.dumps(d,indent=4))" <data.json

Output:

{
    ">=1.16.0-alpha <1.17.0-alpha": "coredns-v1.16",
    ">=1.17.0-alpha <1.20.15-rancher1-2": "coredns-v1.17",
    ">=1.20.15-rancher1-2 <1.21.0-rancher1-1": "coredns-v1.8.3-rancher2",
    ">=1.21.0-rancher1-1 <1.21.9-rancher1-2": "coredns-v1.8.3",
    ">=1.21.9-rancher1-2": "coredns-v1.8.3-rancher2",
    ">=1.8.0-rancher0 <1.16.0-alpha": "coredns-v1.8"
}

Translation of one of the entries from the list is as follows:

">=1.21.9-rancher1-2": "coredns-v1.8.3-rancher2",

If the Kubernetes version is greater than or equal to 1.21.9-rancher1-2 , then the CoreDNS key we have to use in the next step is coredns-v1.8.3-rancher2.

python -c "import sys, json; print (json.load(sys.stdin)['K8sVersionedTemplates']['templateKeys']['coredns-v1.8.3-rancher2'])" <data.json

The configmap will be printed on the screen along with other YAML template specs associated with CoreDNS.

Sample output:

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health {
          lameduck 5s
        }
        ready
        kubernetes {{.ClusterDomain}} {{ if .ReverseCIDRs }}{{ .ReverseCIDRs }}{{ else }}{{ "in-addr.arpa ip6.arpa" }}{{ end }} {
          pods insecure
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
    {{- if .UpstreamNameservers }}
        forward . {{range $i, $v := .UpstreamNameservers}}{{if $i}} {{end}}{{.}}{{end}}
    {{- else }}
        forward . "/etc/resolv.conf"
    {{- end }}
        cache 30
        loop
        reload
        loadbalance
    } # STUBDOMAINS - Rancher specific change
---

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.