-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ec40e2d
commit 90a8428
Showing
22 changed files
with
1,676 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Patterns to ignore when building packages. | ||
# This supports shell glob matching, relative path matching, and | ||
# negation (prefixed with !). Only one pattern per line. | ||
.DS_Store | ||
# Common VCS dirs | ||
.git/ | ||
.gitignore | ||
.bzr/ | ||
.bzrignore | ||
.hg/ | ||
.hgignore | ||
.svn/ | ||
# Common backup files | ||
*.swp | ||
*.bak | ||
*.tmp | ||
*~ | ||
# Various IDEs | ||
.project | ||
.idea/ | ||
*.tmproj | ||
OWNERS |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
annotations: | ||
artifacthub.io/changes: | | ||
- kind: added | ||
description: Allow overriding the selectors for Deployment, Services, PodDisruptionBudget and ServiceMonitor | ||
- kind: added | ||
description: Setting `clusterRole.nameOverride` to allow overriding the ClusterRole name. | ||
apiVersion: v2 | ||
appVersion: 1.11.1 | ||
description: CoreDNS is a DNS server that chains plugins and provides Kubernetes DNS | ||
Services | ||
home: https://coredns.io | ||
icon: https://coredns.io/images/CoreDNS_Colour_Horizontal.png | ||
keywords: | ||
- coredns | ||
- dns | ||
- kubedns | ||
maintainers: | ||
- name: mrueg | ||
- name: haad | ||
- name: hagaibarel | ||
- name: shubham-cmyk | ||
name: coredns | ||
sources: | ||
- https://github.com/coredns/coredns | ||
type: application | ||
version: 1.31.0 |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{{- if .Values.isClusterService }} | ||
CoreDNS is now running in the cluster as a cluster-service. | ||
{{- else }} | ||
CoreDNS is now running in the cluster. | ||
It can be accessed using the below endpoint | ||
{{- if contains "NodePort" .Values.serviceType }} | ||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "coredns.fullname" . }}) | ||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") | ||
echo "$NODE_IP:$NODE_PORT" | ||
{{- else if contains "LoadBalancer" .Values.serviceType }} | ||
NOTE: It may take a few minutes for the LoadBalancer IP to be available. | ||
You can watch the status by running 'kubectl get svc -w {{ template "coredns.fullname" . }}' | ||
|
||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "coredns.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') | ||
echo $SERVICE_IP | ||
{{- else if contains "ClusterIP" .Values.serviceType }} | ||
"{{ template "coredns.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local" | ||
from within the cluster | ||
{{- end }} | ||
{{- end }} | ||
|
||
It can be tested with the following: | ||
|
||
1. Launch a Pod with DNS tools: | ||
|
||
kubectl run -it --rm --restart=Never --image=infoblox/dnstools:latest dnstools | ||
|
||
2. Query the DNS server: | ||
|
||
/ # host kubernetes |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
{{/* vim: set filetype=mustache: */}} | ||
{{/* | ||
Expand the name of the chart. | ||
*/}} | ||
{{- define "coredns.name" -}} | ||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create a default fully qualified app name. | ||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | ||
*/}} | ||
{{- define "coredns.fullname" -}} | ||
{{- if .Values.fullnameOverride -}} | ||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- else -}} | ||
{{- $name := default .Chart.Name .Values.nameOverride -}} | ||
{{- if contains $name .Release.Name }} | ||
{{- .Release.Name | trunc 63 | trimSuffix "-" }} | ||
{{- else }} | ||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Common labels | ||
*/}} | ||
{{- define "coredns.labels" -}} | ||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }} | ||
app.kubernetes.io/instance: {{ .Release.Name | quote }} | ||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" | ||
{{- if .Values.isClusterService }} | ||
k8s-app: {{ template "coredns.k8sapplabel" . }} | ||
kubernetes.io/cluster-service: "true" | ||
kubernetes.io/name: "CoreDNS" | ||
{{- end }} | ||
app.kubernetes.io/name: {{ template "coredns.name" . }} | ||
{{- end -}} | ||
|
||
{{/* | ||
Common labels with autoscaler | ||
*/}} | ||
{{- define "coredns.labels.autoscaler" -}} | ||
app.kubernetes.io/managed-by: {{ .Release.Service | quote }} | ||
app.kubernetes.io/instance: {{ .Release.Name | quote }} | ||
helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}" | ||
{{- if .Values.isClusterService }} | ||
k8s-app: {{ template "coredns.k8sapplabel" . }}-autoscaler | ||
kubernetes.io/cluster-service: "true" | ||
kubernetes.io/name: "CoreDNS" | ||
{{- end }} | ||
app.kubernetes.io/name: {{ template "coredns.name" . }}-autoscaler | ||
{{- end -}} | ||
|
||
{{/* | ||
Allow k8s-app label to be overridden | ||
*/}} | ||
{{- define "coredns.k8sapplabel" -}} | ||
{{- default .Chart.Name .Values.k8sAppLabelOverride | trunc 63 | trimSuffix "-" -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Generate the list of ports automatically from the server definitions | ||
*/}} | ||
{{- define "coredns.servicePorts" -}} | ||
{{/* Set ports to be an empty dict */}} | ||
{{- $ports := dict -}} | ||
{{/* Iterate through each of the server blocks */}} | ||
{{- range .Values.servers -}} | ||
{{/* Capture port to avoid scoping awkwardness */}} | ||
{{- $port := toString .port -}} | ||
|
||
{{/* If none of the server blocks has mentioned this port yet take note of it */}} | ||
{{- if not (hasKey $ports $port) -}} | ||
{{- $ports := set $ports $port (dict "istcp" false "isudp" false) -}} | ||
{{- end -}} | ||
{{/* Retrieve the inner dict that holds the protocols for a given port */}} | ||
{{- $innerdict := index $ports $port -}} | ||
|
||
{{/* | ||
Look at each of the zones and check which protocol they serve | ||
At the moment the following are supported by CoreDNS: | ||
UDP: dns:// | ||
TCP: tls://, grpc:// | ||
*/}} | ||
{{- range .zones -}} | ||
{{- if has (default "" .scheme) (list "dns://") -}} | ||
{{/* Optionally enable tcp for this service as well */}} | ||
{{- if eq (default false .use_tcp) true }} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end }} | ||
{{- $innerdict := set $innerdict "isudp" true -}} | ||
{{- end -}} | ||
|
||
{{- if has (default "" .scheme) (list "tls://" "grpc://") -}} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* If none of the zones specify scheme, default to dns:// on both tcp & udp */}} | ||
{{- if and (not (index $innerdict "istcp")) (not (index $innerdict "isudp")) -}} | ||
{{- $innerdict := set $innerdict "isudp" true -}} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end -}} | ||
|
||
{{- if .nodePort -}} | ||
{{- $innerdict := set $innerdict "nodePort" .nodePort -}} | ||
{{- end -}} | ||
|
||
{{/* Write the dict back into the outer dict */}} | ||
{{- $ports := set $ports $port $innerdict -}} | ||
{{- end -}} | ||
|
||
{{/* Write out the ports according to the info collected above */}} | ||
{{- range $port, $innerdict := $ports -}} | ||
{{- $portList := list -}} | ||
{{- if index $innerdict "isudp" -}} | ||
{{- $portList = append $portList (dict "port" ($port | int) "protocol" "UDP" "name" (printf "udp-%s" $port)) -}} | ||
{{- end -}} | ||
{{- if index $innerdict "istcp" -}} | ||
{{- $portList = append $portList (dict "port" ($port | int) "protocol" "TCP" "name" (printf "tcp-%s" $port)) -}} | ||
{{- end -}} | ||
|
||
{{- range $portDict := $portList -}} | ||
{{- if index $innerdict "nodePort" -}} | ||
{{- $portDict := set $portDict "nodePort" (get $innerdict "nodePort" | int) -}} | ||
{{- end -}} | ||
|
||
{{- printf "- %s\n" (toJson $portDict) -}} | ||
{{- end -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Generate the list of ports automatically from the server definitions | ||
*/}} | ||
{{- define "coredns.containerPorts" -}} | ||
{{/* Set ports to be an empty dict */}} | ||
{{- $ports := dict -}} | ||
{{/* Iterate through each of the server blocks */}} | ||
{{- range .Values.servers -}} | ||
{{/* Capture port to avoid scoping awkwardness */}} | ||
{{- $port := toString .port -}} | ||
|
||
{{/* If none of the server blocks has mentioned this port yet take note of it */}} | ||
{{- if not (hasKey $ports $port) -}} | ||
{{- $ports := set $ports $port (dict "istcp" false "isudp" false) -}} | ||
{{- end -}} | ||
{{/* Retrieve the inner dict that holds the protocols for a given port */}} | ||
{{- $innerdict := index $ports $port -}} | ||
|
||
{{/* | ||
Look at each of the zones and check which protocol they serve | ||
At the moment the following are supported by CoreDNS: | ||
UDP: dns:// | ||
TCP: tls://, grpc:// | ||
*/}} | ||
{{- range .zones -}} | ||
{{- if has (default "" .scheme) (list "dns://") -}} | ||
{{/* Optionally enable tcp for this service as well */}} | ||
{{- if eq (default false .use_tcp) true }} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end }} | ||
{{- $innerdict := set $innerdict "isudp" true -}} | ||
{{- end -}} | ||
|
||
{{- if has (default "" .scheme) (list "tls://" "grpc://") -}} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* If none of the zones specify scheme, default to dns:// on both tcp & udp */}} | ||
{{- if and (not (index $innerdict "istcp")) (not (index $innerdict "isudp")) -}} | ||
{{- $innerdict := set $innerdict "isudp" true -}} | ||
{{- $innerdict := set $innerdict "istcp" true -}} | ||
{{- end -}} | ||
|
||
{{- if .hostPort -}} | ||
{{- $innerdict := set $innerdict "hostPort" .hostPort -}} | ||
{{- end -}} | ||
|
||
{{/* Write the dict back into the outer dict */}} | ||
{{- $ports := set $ports $port $innerdict -}} | ||
|
||
{{/* Fetch port from the configuration if the prometheus section exists */}} | ||
{{- range .plugins -}} | ||
{{- if eq .name "prometheus" -}} | ||
{{- $prometheus_addr := toString .parameters -}} | ||
{{- $prometheus_addr_list := regexSplit ":" $prometheus_addr -1 -}} | ||
{{- $prometheus_port := index $prometheus_addr_list 1 -}} | ||
{{- $ports := set $ports $prometheus_port (dict "istcp" true "isudp" false) -}} | ||
{{- end -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* Write out the ports according to the info collected above */}} | ||
{{- range $port, $innerdict := $ports -}} | ||
{{- $portList := list -}} | ||
{{- if index $innerdict "isudp" -}} | ||
{{- $portList = append $portList (dict "containerPort" ($port | int) "protocol" "UDP" "name" (printf "udp-%s" $port)) -}} | ||
{{- end -}} | ||
{{- if index $innerdict "istcp" -}} | ||
{{- $portList = append $portList (dict "containerPort" ($port | int) "protocol" "TCP" "name" (printf "tcp-%s" $port)) -}} | ||
{{- end -}} | ||
|
||
{{- range $portDict := $portList -}} | ||
{{- if index $innerdict "hostPort" -}} | ||
{{- $portDict := set $portDict "hostPort" (get $innerdict "hostPort" | int) -}} | ||
{{- end -}} | ||
|
||
{{- printf "- %s\n" (toJson $portDict) -}} | ||
{{- end -}} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create the name of the service account to use | ||
*/}} | ||
{{- define "coredns.serviceAccountName" -}} | ||
{{- if .Values.serviceAccount.create -}} | ||
{{ default (include "coredns.fullname" .) .Values.serviceAccount.name }} | ||
{{- else -}} | ||
{{ default "default" .Values.serviceAccount.name }} | ||
{{- end -}} | ||
{{- end -}} | ||
|
||
{{/* | ||
Create the name of the service account to use | ||
*/}} | ||
{{- define "coredns.clusterRoleName" -}} | ||
{{- if and .Values.clusterRole .Values.clusterRole.nameOverride -}} | ||
{{ .Values.clusterRole.nameOverride }} | ||
{{- else -}} | ||
{{ template "coredns.fullname" . }} | ||
{{- end -}} | ||
{{- end -}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{{- if and .Values.autoscaler.enabled .Values.rbac.create }} | ||
--- | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: ClusterRole | ||
metadata: | ||
name: {{ template "coredns.fullname" . }}-autoscaler | ||
labels: {{- include "coredns.labels.autoscaler" . | nindent 4 }} | ||
{{- if .Values.customLabels }} | ||
{{ toYaml .Values.customLabels | indent 4 }} | ||
{{- end }} | ||
{{- with .Values.customAnnotations }} | ||
annotations: | ||
{{- toYaml . | nindent 4 }} | ||
{{- end }} | ||
rules: | ||
- apiGroups: [""] | ||
resources: ["nodes"] | ||
verbs: ["list","watch"] | ||
- apiGroups: [""] | ||
resources: ["replicationcontrollers/scale"] | ||
verbs: ["get", "update"] | ||
- apiGroups: ["extensions", "apps"] | ||
resources: ["deployments/scale", "replicasets/scale"] | ||
verbs: ["get", "update"] | ||
# Remove the configmaps rule once below issue is fixed: | ||
# kubernetes-incubator/cluster-proportional-autoscaler#16 | ||
- apiGroups: [""] | ||
resources: ["configmaps"] | ||
verbs: ["get", "create"] | ||
{{- end }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
{{- if and .Values.deployment.enabled .Values.rbac.create }} | ||
apiVersion: rbac.authorization.k8s.io/v1 | ||
kind: ClusterRole | ||
metadata: | ||
name: {{ template "coredns.clusterRoleName" . }} | ||
labels: {{- include "coredns.labels" . | nindent 4 }} | ||
rules: | ||
- apiGroups: | ||
- "" | ||
resources: | ||
- endpoints | ||
- services | ||
- pods | ||
- namespaces | ||
verbs: | ||
- list | ||
- watch | ||
- apiGroups: | ||
- discovery.k8s.io | ||
resources: | ||
- endpointslices | ||
verbs: | ||
- list | ||
- watch | ||
{{- if .Values.rbac.pspEnable }} | ||
- apiGroups: | ||
- policy | ||
- extensions | ||
resources: | ||
- podsecuritypolicies | ||
verbs: | ||
- use | ||
resourceNames: | ||
- {{ template "coredns.fullname" . }} | ||
{{- end }} | ||
{{- end }} |
Oops, something went wrong.