Skip to content
This repository has been archived by the owner on Sep 30, 2020. It is now read-only.

Commit

Permalink
Merge pull request #1884 from kfr2/0.16.x-AdditionalZoneCoreDNSConfig
Browse files Browse the repository at this point in the history
[v0.16.x] Allow injection of CoreDNS configuration for non-root zones
  • Loading branch information
dominicgunn authored Jul 20, 2020
2 parents 4c8ca96 + bd0d65a commit 2260379
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 5 deletions.
13 changes: 11 additions & 2 deletions builtin/files/cluster.yaml.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ s3URI: {{.S3URI}}
#releaseChannel: stable

# To update this to the latest AMI run the following command with the appropriate region and channel then place the resulting ID here
# REGION=eu-west-1 CHANNEL=stable curl -s https://$CHANNEL.release.flatcar-linux.net/amd64-usr/current/flatcar_production_ami_all.json | jq -r ".amis[] | select(.name==\"$REGION\") .hvm
# REGION=eu-west-1 CHANNEL=stable curl -s https://$CHANNEL.release.flatcar-linux.net/amd64-usr/current/flatcar_production_ami_all.json | jq -r ".amis[] | select(.name==\"$REGION\") .hvm
amiId: "{{.AmiId}}"

# Flatcar has automatic updates https://docs.flatcar-linux.org/os/update-strategies/#disable-automatic-updates-daemon. This can be a risk in certain situations and this is why is disabled by default and you can enable it by setting this param to false.
Expand Down Expand Up @@ -1345,9 +1345,18 @@ kubeDns:
nodesPerReplica: 16
min: 2

# Allows to add extra configuration into CoreDNS config map
# Allows addition of extra configuration into CoreDNS config map's root zone.
# extraCoreDNSConfig: |
# rewrite name substring demo.app.org app.default.svc.cluster.local
#
# This configuration is injected into the CoreDNS config map after the root
# zone (".") and can be used to add configuration for additional zones.
# additionalZoneCoreDNSConfig: |
# global:53 {
# errors
# cache 30
# forward . 1.2.3.4:53
# }

kubeProxy:
# Use IPVS kube-proxy mode instead of [default] iptables one (requires Kubernetes 1.9.0+ to work reliably)
Expand Down
7 changes: 5 additions & 2 deletions builtin/files/userdata/cloud-config-controller
Original file line number Diff line number Diff line change
Expand Up @@ -1340,7 +1340,7 @@ write_files:
data:
# You must set a non-zero value for Typha replicas below.
typha_service_name: "{{- if .Kubernetes.Networking.SelfHosting.Typha }}calico-typha{{- else -}}none{{- end -}}"

# Configure the backend to use.
calico_backend: "{{- if .Kubernetes.Networking.SelfHosting.CalicoConfig.VxlanMode }}vxlan{{- else -}}bird{{- end -}}"

Expand Down Expand Up @@ -4394,7 +4394,7 @@ write_files:
- --endpoint-reconciler-type=lease
{{- else }}
- --apiserver-count={{if .MinControllerCount}}{{ .MinControllerCount }}{{else}}{{ .Controller.Count }}{{end}}
{{- end }}
{{- end }}
- --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,TaintNodesByCondition,Priority,DefaultTolerationSeconds,DefaultStorageClass,StorageObjectInUseProtection,PersistentVolumeClaimResize,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,RuntimeClass,ResourceQuota,ExtendedResourceToleration,NodeRestriction,PodSecurityPolicy{{if .Experimental.Admission.AlwaysPullImages.Enabled}},AlwaysPullImages{{ end }}{{ if .Experimental.Admission.EventRateLimit.Enabled }},EventRateLimit{{end}}
{{ if .Experimental.Admission.EventRateLimit.Enabled -}}
- --admission-control-config-file=/etc/kubernetes/auth/admission-control-config.yaml
Expand Down Expand Up @@ -5372,6 +5372,9 @@ write_files:
reload
loadbalance
}
{{- if and (eq .KubeDns.Provider "coredns") .KubeDns.AdditionalZoneCoreDNSConfig }}
{{ .KubeDns.AdditionalZoneCoreDNSConfig | indent 10 }}
{{- end }}
{{- else }}
- path: /srv/kubernetes/manifests/kube-dns-sa.yaml
content: |
Expand Down
3 changes: 2 additions & 1 deletion pkg/api/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,8 @@ func NewDefaultCluster() *Cluster {
Cpu: "200m",
},
},
ExtraCoreDNSConfig: "",
ExtraCoreDNSConfig: "",
AdditionalZoneCoreDNSConfig: "",
},
KubeSystemNamespaceLabels: make(map[string]string),
Kubernetes: Kubernetes{
Expand Down
1 change: 1 addition & 0 deletions pkg/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ type KubeDns struct {
Autoscaler KubeDnsAutoscaler `yaml:"autoscaler"`
DnsDeploymentResources ComputeResources `yaml:"dnsDeploymentResources,omitempty"`
ExtraCoreDNSConfig string `yaml:"extraCoreDNSConfig"`
AdditionalZoneCoreDNSConfig string `yaml:"additionalZoneCoreDNSConfig"`
}

func (c *KubeDns) MergeIfEmpty(other KubeDns) {
Expand Down
30 changes: 30 additions & 0 deletions pkg/model/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1449,6 +1449,36 @@ kubeDns:
ExtraCoreDNSConfig: "rewrite name substring demo.app.org app.default.svc.cluster.local",
},
},
{
conf: `
kubeDns:
provider: coredns
additionalZoneCoreDNSConfig: global:53 { forward . 1.2.3.4 }
`,
kubeDns: api.KubeDns{
Provider: "coredns",
NodeLocalResolver: false,
DeployToControllers: false,
AntiAffinityAvailabilityZone: false,
TTL: 30,
Autoscaler: api.KubeDnsAutoscaler{
CoresPerReplica: 256,
NodesPerReplica: 16,
Min: 2,
},
DnsDeploymentResources: api.ComputeResources{
Requests: api.ResourceQuota{
Memory: "70Mi",
Cpu: "100m",
},
Limits: api.ResourceQuota{
Memory: "170Mi",
Cpu: "200m",
},
},
AdditionalZoneCoreDNSConfig: "global:53 { forward . 1.2.3.4 }",
},
},
}

for _, conf := range validConfigs {
Expand Down

0 comments on commit 2260379

Please sign in to comment.