porkadot 0.2.2 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/hack/gen-storage-version-migrator.sh +7 -0
  3. data/hack/storage-version-migrator/kustomization.yaml +77 -0
  4. data/lib/porkadot/assets.rb +9 -0
  5. data/lib/porkadot/assets/bootstrap/manifests/kube-apiserver.bootstrap.yaml.erb +4 -30
  6. data/lib/porkadot/assets/bootstrap/manifests/kube-controller-manager.bootstrap.yaml.erb +13 -16
  7. data/lib/porkadot/assets/bootstrap/manifests/kube-proxy.bootstrap.yaml.erb +3 -2
  8. data/lib/porkadot/assets/bootstrap/manifests/kube-scheduler.bootstrap.yaml.erb +3 -5
  9. data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +2 -0
  10. data/lib/porkadot/assets/kubelet.rb +1 -0
  11. data/lib/porkadot/assets/kubelet/config.yaml.erb +3 -0
  12. data/lib/porkadot/assets/kubelet/install-deps.sh.erb +11 -0
  13. data/lib/porkadot/assets/kubelet/install-pkgs.sh.erb +19 -2
  14. data/lib/porkadot/assets/kubelet/kubelet.service.erb +3 -1
  15. data/lib/porkadot/assets/kubelet/setup-containerd.sh.erb +10 -0
  16. data/lib/porkadot/assets/kubernetes.rb +4 -1
  17. data/lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb +209 -0
  18. data/lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb +110 -0
  19. data/lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb +52 -431
  20. data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +1 -1
  21. data/lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb +12 -3
  22. data/lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb +13 -0
  23. data/lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb +116 -26
  24. data/lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb +23 -0
  25. data/lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb +357 -0
  26. data/lib/porkadot/cmd/cli.rb +16 -0
  27. data/lib/porkadot/cmd/render/certs.rb +1 -1
  28. data/lib/porkadot/configs/certs/k8s.rb +6 -0
  29. data/lib/porkadot/configs/kubernetes.rb +30 -1
  30. data/lib/porkadot/default.yaml +4 -3
  31. data/lib/porkadot/install/kubelet.rb +24 -0
  32. data/lib/porkadot/version.rb +1 -1
  33. metadata +9 -3
  34. data/lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb +0 -130
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 958ab6006bc337cbefb89951fcc80af8f32d4799dcf6f7090a68c7901743d2df
4
- data.tar.gz: 1b9b98c07b61d6d3ed29879e81983a65637228be7ca494d4cff45a34cd64d08e
3
+ metadata.gz: 834e1f31cbbf8c7c8766162945572512fc0311dbf772df008f85ef2a00b3ea3d
4
+ data.tar.gz: f453e7a4899673f08a550b69c41b30c908eb5bf0906a67eee79a21ccd5fc1dcd
5
5
  SHA512:
6
- metadata.gz: bd2e2d802c35ace23dc60f202b8314974936b77a0b00c94a2013303b9dfd13519a0d673ee4fb2ef322e1d8d97f751db6d355ea9cf6e789219059c3028085cbe3
7
- data.tar.gz: a4291b924ae9f280b2beaee9fd7cb2ed1c711cd64a1e6c11061a5b26477de5b9913c7abc9d2baaa88d6e402d0f585aec7b8bad888eaa19c16af7697cc3a57015
6
+ metadata.gz: e13576f10e90eb2d277302bfcfe7cecb7feb681d25070052c50b6060b95e0b455061d093d8ddde84a69c650e2fa6f2b3775e25913cf743023c2ee036bdef0764
7
+ data.tar.gz: 5714fefdd57b9683974ea42f6d111ac87b66f723221f5f0852c95b758d92cf19f6eac32c9ddd2e98e1f77dcbac4db70c735eddf4999cb39be71ad2717efb5d5d
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+ export LC_ALL=C
5
+ ROOT=$(dirname "${BASH_SOURCE}")
6
+
7
+ kustomize build ${ROOT}/storage-version-migrator | sed -e "s/NAMESPACE/kube-system/g" > ${ROOT}/../lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb
@@ -0,0 +1,77 @@
1
+ namespace: kube-system
2
+
3
+ resources:
4
+ - https://github.com/kubernetes-sigs/kube-storage-version-migrator/manifests/?ref=acdee30ced218b79e39c6a701985e8cd8bd33824
5
+
6
+ images:
7
+ - name: REGISTRY/storage-version-migration-initializer:VERSION
8
+ newName: asia.gcr.io/k8s-artifacts-prod/storage-migrator/storage-version-migration-initializer
9
+ newTag: v0.0.3
10
+ - name: REGISTRY/storage-version-migration-migrator:VERSION
11
+ newName: asia.gcr.io/k8s-artifacts-prod/storage-migrator/storage-version-migration-migrator
12
+ newTag: v0.0.3
13
+ - name: REGISTRY/storage-version-migration-trigger:VERSION
14
+ newName: asia.gcr.io/k8s-artifacts-prod/storage-migrator/storage-version-migration-trigger
15
+ newTag: v0.0.3
16
+ patchesJson6902:
17
+ - target:
18
+ group: apps
19
+ version: v1
20
+ kind: Deployment
21
+ name: migrator
22
+ namespace: kube-system
23
+ patch: |-
24
+ - op: remove
25
+ path: /spec/template/spec/containers/0/livenessProbe
26
+ - op: add
27
+ path: /spec/template/spec/containers/0/command/-
28
+ value: --kubeconfig=/etc/migrator/kubeconfig
29
+ - target:
30
+ group: apps
31
+ version: v1
32
+ kind: Deployment
33
+ name: trigger
34
+ namespace: kube-system
35
+ patch: |-
36
+ - op: remove
37
+ path: /spec/template/spec/containers/0/livenessProbe
38
+ - op: add
39
+ path: /spec/template/spec/containers/0/args
40
+ value: ["--kubeconfig=/etc/migrator/kubeconfig"]
41
+ patchesStrategicMerge:
42
+ - |-
43
+ apiVersion: apps/v1
44
+ kind: Deployment
45
+ metadata:
46
+ name: migrator
47
+ namespace: NAMESPACE
48
+ spec:
49
+ template:
50
+ spec:
51
+ containers:
52
+ - name: migrator
53
+ volumeMounts:
54
+ - mountPath: /etc/migrator
55
+ name: kubeconfig
56
+ volumes:
57
+ - name: kubeconfig
58
+ configMap:
59
+ name: kubeconfig-in-cluster-latest
60
+ - |-
61
+ apiVersion: apps/v1
62
+ kind: Deployment
63
+ metadata:
64
+ name: trigger
65
+ namespace: NAMESPACE
66
+ spec:
67
+ template:
68
+ spec:
69
+ containers:
70
+ - name: trigger
71
+ volumeMounts:
72
+ - mountPath: /etc/migrator
73
+ name: kubeconfig
74
+ volumes:
75
+ - name: kubeconfig
76
+ configMap:
77
+ name: kubeconfig-in-cluster-latest
@@ -4,6 +4,15 @@ module Porkadot::Assets
4
4
  space = space.times.map{' '}.join('')
5
5
  text.lines.map{|line| "#{space}#{line}"}.join('')
6
6
  end
7
+
8
+ def to_yaml(obj, space=0)
9
+ h = Hashie::Mash.new({obj: obj})
10
+ h = h.to_hash
11
+ if h['obj'].size == 0
12
+ return ''
13
+ end
14
+ return self.indent(h['obj'].to_yaml(canonical: false, header: false).gsub(/---\n/, ''), space)
15
+ end
7
16
  end
8
17
 
9
18
  def render_erb file, opts={}
@@ -20,35 +20,9 @@ spec:
20
20
  image: <%= k8s.image_repository %>/kube-apiserver:<%= k8s.kubernetes_version %>
21
21
  command:
22
22
  - kube-apiserver
23
- - --advertise-address=$(POD_IP)
24
- - --allow-privileged
25
- - --authorization-mode=Node,RBAC
26
- - --bind-address=0.0.0.0
27
- - --client-ca-file=/etc/kubernetes/secrets/kubernetes/ca.crt
28
- - --enable-admission-plugins=NodeRestriction
29
- - --enable-bootstrap-token-auth=true
30
- - --etcd-cafile=/etc/kubernetes/secrets/etcd/ca.crt
31
- - --etcd-certfile=/etc/kubernetes/secrets/etcd/etcd-client.crt
32
- - --etcd-keyfile=/etc/kubernetes/secrets/etcd/etcd-client.key
33
- - --etcd-servers=<%= global_config.etcd.advertise_client_urls.join(',') %>
34
- - --kubelet-certificate-authority=/etc/kubernetes/secrets/kubernetes/ca.crt
35
- - --kubelet-client-certificate=/etc/kubernetes/secrets/kubernetes/kubelet-client.crt
36
- - --kubelet-client-key=/etc/kubernetes/secrets/kubernetes/kubelet-client.key
37
- - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
38
- - --proxy-client-cert-file=/etc/kubernetes/secrets/kubernetes/front-proxy-client.crt
39
- - --proxy-client-key-file=/etc/kubernetes/secrets/kubernetes/front-proxy-client.key
40
- - --requestheader-allowed-names=front-proxy-client
41
- - --requestheader-client-ca-file=/etc/kubernetes/secrets/kubernetes/front-proxy-ca.crt
42
- - --requestheader-extra-headers-prefix=X-Remote-Extra-
43
- - --requestheader-group-headers=X-Remote-Group
44
- - --requestheader-username-headers=X-Remote-User
45
- - --secure-port=<%= k8s.apiserver.bind_port %>
46
- - --service-account-key-file=/etc/kubernetes/secrets/kubernetes/sa.pub
47
- - --service-cluster-ip-range=<%= k8s.networking.service_subnet %>
48
- - --storage-backend=etcd3
49
- - --tls-cert-file=/etc/kubernetes/secrets/kubernetes/apiserver.crt
50
- - --tls-private-key-file=/etc/kubernetes/secrets/kubernetes/apiserver.key
51
- - --v=2
23
+ <%- k8s.apiserver.args(bootstrap: true).each do |k, v| -%>
24
+ - <%= k %><% if v ;%>=<%= v %><%; end %>
25
+ <%- end -%>
52
26
  env:
53
27
  - name: POD_IP
54
28
  valueFrom:
@@ -64,7 +38,7 @@ spec:
64
38
  - mountPath: /usr/share/ca-certificates
65
39
  name: usr-share-ca-certificates
66
40
  readOnly: true
67
- - mountPath: /etc/kubernetes/secrets
41
+ - mountPath: /etc/kubernetes/pki
68
42
  name: secrets
69
43
  readOnly: true
70
44
  - mountPath: /var/lock
@@ -15,23 +15,17 @@ spec:
15
15
  image: <%= k8s.image_repository %>/kube-controller-manager:<%= k8s.kubernetes_version %>
16
16
  command:
17
17
  - kube-controller-manager
18
- - --allocate-node-cidrs=true
19
- - --cluster-cidr=<%= k8s.networking.pod_subnet %>
20
- - --cluster-signing-cert-file=/etc/kubernetes/bootstrap/secrets/kubernetes/ca.crt
21
- - --cluster-signing-key-file=/etc/kubernetes/bootstrap/secrets/kubernetes/ca.key
22
- - --controllers=*,bootstrapsigner,tokencleaner
23
- - --kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
24
- - --leader-elect=true
25
- - --node-cidr-mask-size=24
26
- - --root-ca-file=/etc/kubernetes/bootstrap/secrets/kubernetes/ca.crt
27
- - --service-account-private-key-file=/etc/kubernetes/bootstrap/secrets/kubernetes/sa.key
28
- - --use-service-account-credentials=true
29
- - --v=2
18
+ <%- k8s.controller_manager.args(bootstrap: true).each do |k, v| -%>
19
+ - <%= k %><% if v ;%>=<%= v %><%; end %>
20
+ <%- end -%>
30
21
  volumeMounts:
31
22
  - name: var-run-kubernetes
32
23
  mountPath: /var/run/kubernetes
33
- - name: kubernetes
34
- mountPath: /etc/kubernetes
24
+ - name: kubernetes-secrets
25
+ mountPath: /etc/kubernetes/pki
26
+ readOnly: true
27
+ - name: kubernetes-bootstrap
28
+ mountPath: /etc/kubernetes/bootstrap
35
29
  readOnly: true
36
30
  - mountPath: /usr/libexec/kubernetes/kubelet-plugins/volume/exec
37
31
  name: flexvolume-dir
@@ -48,9 +42,12 @@ spec:
48
42
  volumes:
49
43
  - name: var-run-kubernetes
50
44
  emptyDir: {}
51
- - name: kubernetes
45
+ - name: kubernetes-secrets
46
+ hostPath:
47
+ path: /etc/kubernetes/bootstrap/secrets
48
+ - name: kubernetes-bootstrap
52
49
  hostPath:
53
- path: /etc/kubernetes
50
+ path: /etc/kubernetes/bootstrap
54
51
  - hostPath:
55
52
  path: /etc/ssl/certs
56
53
  type: DirectoryOrCreate
@@ -18,8 +18,9 @@ spec:
18
18
  imagePullPolicy: IfNotPresent
19
19
  command:
20
20
  - kube-proxy
21
- - --config=/etc/kubernetes/bootstrap/kube-proxy-bootstrap.yaml
22
- - --hostname-override=$(NODE_NAME)
21
+ <%- k8s.proxy.args(bootstrap: true).each do |k, v| -%>
22
+ - <%= k %><% if v ;%>=<%= v %><%; end %>
23
+ <%- end -%>
23
24
  env:
24
25
  - name: NODE_NAME
25
26
  valueFrom:
@@ -15,11 +15,9 @@ spec:
15
15
  image: <%= k8s.image_repository %>/kube-scheduler:<%= k8s.kubernetes_version %>
16
16
  command:
17
17
  - kube-scheduler
18
- - --kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
19
- - --authentication-kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
20
- - --authorization-kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
21
- - --leader-elect=true
22
- - --v=2
18
+ <%- k8s.scheduler.args(bootstrap: true).each do |k, v| -%>
19
+ - <%= k %><% if v ;%>=<%= v %><%; end %>
20
+ <%- end -%>
23
21
  volumeMounts:
24
22
  - name: kubernetes
25
23
  mountPath: /etc/kubernetes
@@ -30,6 +30,8 @@ spec:
30
30
  - --data-dir=/var/lib/etcd
31
31
  - --heartbeat-interval=1000
32
32
  - --election-timeout=10000
33
+ env:
34
+ <%= u.to_yaml(etcd.extra_env, 4) -%>
33
35
  volumeMounts:
34
36
  - mountPath: /var/lib/etcd
35
37
  name: etcd
@@ -64,6 +64,7 @@ module Porkadot; module Assets
64
64
  render_erb 'install.sh'
65
65
  render_erb 'install-deps.sh'
66
66
  render_erb 'install-pkgs.sh'
67
+ render_erb 'setup-containerd.sh'
67
68
  end
68
69
 
69
70
  def render_bootstrap_certs
@@ -12,6 +12,7 @@ authorization:
12
12
  webhook:
13
13
  cacheAuthorizedTTL: 0s
14
14
  cacheUnauthorizedTTL: 0s
15
+ cgroupDriver: systemd
15
16
  clusterDNS:
16
17
  - <%= global_config.k8s.networking.dns_ip %>
17
18
  clusterDomain: <%= global_config.k8s.networking.dns_domain %>
@@ -32,5 +33,7 @@ streamingConnectionIdleTimeout: 0s
32
33
  syncFrequency: 0s
33
34
  volumeStatsAggPeriod: 0s
34
35
  serverTLSBootstrap: true
36
+ featureGates:
37
+ CSIMigration: false
35
38
 
36
39
  # vim:filetype=yaml
@@ -26,3 +26,14 @@ curl -L https://storage.googleapis.com/kubernetes-release/release/${RELEASE}/bin
26
26
  chmod +x /opt/bin/kubelet-${RELEASE}
27
27
  rm -f /opt/bin/kubelet
28
28
  ln -s /opt/bin/kubelet-${RELEASE} /opt/bin/kubelet
29
+
30
+ ETCD_VER="<%= global_config.etcd.image_tag.gsub(/\-\w+$/, '') %>"
31
+ ETCD_URL=https://storage.googleapis.com/etcd/${ETCD_VER}/etcd-${ETCD_VER}-linux-${architecture}.tar.gz
32
+ ETCD_TMP=$(mktemp -d)
33
+
34
+ curl -L ${ETCD_URL} -o ${ETCD_TMP}/etcd.tar.gz
35
+ tar zxvf ${ETCD_TMP}/etcd.tar.gz -C ${ETCD_TMP}/ --strip-components=1
36
+ chmod +x ${ETCD_TMP}/etcdctl
37
+ rm -f /opt/bin/etcdctl
38
+ mv ${ETCD_TMP}/etcdctl /opt/bin/etcdctl-${ETCD_VER}
39
+ ln -s /opt/bin/etcdctl-${ETCD_VER} /opt/bin/etcdctl
@@ -4,6 +4,7 @@ export LC_ALL=C
4
4
  ROOT=$(dirname "${BASH_SOURCE}")
5
5
 
6
6
  if type apt-get > /dev/null 2>&1 ;then
7
+ export DEBIAN_FRONTEND=noninteractive
7
8
  apt-get update
8
9
  apt-get install -y \
9
10
  ca-certificates \
@@ -22,12 +23,28 @@ if type apt-get > /dev/null 2>&1 ;then
22
23
  nfs-common \
23
24
  socat \
24
25
  udev \
25
- util-linux
26
+ util-linux \
27
+ open-iscsi
26
28
  fi
27
29
 
30
+ cat > /etc/modules-load.d/porkadot.conf <<EOF
31
+ overlay
32
+ br_netfilter
33
+ EOF
34
+
35
+ modprobe overlay
36
+ modprobe br_netfilter
37
+
28
38
  cat <<EOF > /etc/sysctl.d/k8s.conf
29
39
  net.bridge.bridge-nf-call-ip6tables = 1
30
- net.bridge.bridge-nf-call-iptables = 1
40
+ net.ipv4.ip_forward = 1
41
+ net.bridge.bridge-nf-call-iptables = 1
31
42
  EOF
32
43
 
44
+ cat <<EOF > /etc/iscsi/initiatorname.iscsi
45
+ InitiatorName=iqn.2020-04.cloud.unstable:<%= config.hostname %>
46
+ EOF
47
+
48
+ systemctl restart iscsid.service
49
+
33
50
  sysctl --system
@@ -5,11 +5,13 @@ Documentation=http://kubernetes.io/docs/
5
5
  [Service]
6
6
  EnvironmentFile=-/etc/default/kubelet
7
7
  ExecStart=/opt/bin/kubelet \
8
+ --container-runtime=remote \
9
+ --container-runtime-endpoint=/run/containerd/containerd.sock \
8
10
  --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf \
9
11
  --kubeconfig=/etc/kubernetes/kubelet.conf \
10
12
  --config=/var/lib/kubelet/config.yaml \
11
13
  --network-plugin=cni \
12
- --pod-infra-container-image=k8s.gcr.io/pause:3.1 \
14
+ --pod-infra-container-image=k8s.gcr.io/pause:3.4.1 \
13
15
  --hostname-override=<%= config.hostname %> \
14
16
  --node-labels=<%= config.labels_string %> \
15
17
  --register-with-taints=<%= config.taints_string %> \
@@ -0,0 +1,10 @@
1
+ #!/bin/bash
2
+ set -eu
3
+ export LC_ALL=C
4
+ ROOT=$(dirname "${BASH_SOURCE}")
5
+
6
+ mkdir -p /etc/containerd
7
+ containerd config default | tee /etc/containerd/config.toml
8
+ sed -i -e "/containerd.runtimes.runc.options/a SystemdCgroup = true" /etc/containerd/config.toml
9
+
10
+ systemctl restart containerd
@@ -28,15 +28,18 @@ module Porkadot; module Assets
28
28
  render_erb 'manifests/porkadot.yaml'
29
29
  render_erb 'manifests/kubelet.yaml'
30
30
  render_erb "manifests/#{lb.type}.yaml"
31
+ render_secrets_erb "manifests/#{lb.type}.secrets.yaml"
31
32
  render_erb "manifests/#{cni.type}.yaml"
33
+ render_erb "manifests/coredns.yaml"
34
+ render_erb "manifests/dns-horizontal-autoscaler.yaml"
32
35
  render_erb "manifests/kube-apiserver.yaml"
33
36
  render_secrets_erb "manifests/kube-apiserver.secrets.yaml"
34
37
  render_erb "manifests/kube-proxy.yaml"
35
38
  render_erb "manifests/kube-scheduler.yaml"
36
39
  render_erb "manifests/kube-controller-manager.yaml"
37
40
  render_secrets_erb "manifests/kube-controller-manager.secrets.yaml"
38
- render_erb "manifests/pod-checkpointer.yaml"
39
41
  render_erb "manifests/kubelet-rubber-stamp.yaml"
42
+ render_erb "manifests/storage-version-migrator.yaml"
40
43
  render_erb 'install.sh'
41
44
  end
42
45
 
@@ -0,0 +1,209 @@
1
+ <% k8s = global_config.k8s -%>
2
+ # __MACHINE_GENERATED_WARNING__
3
+
4
+ apiVersion: v1
5
+ kind: ServiceAccount
6
+ metadata:
7
+ name: coredns
8
+ namespace: kube-system
9
+ labels:
10
+ kubernetes.io/cluster-service: "true"
11
+ addonmanager.kubernetes.io/mode: Reconcile
12
+ ---
13
+ apiVersion: rbac.authorization.k8s.io/v1
14
+ kind: ClusterRole
15
+ metadata:
16
+ labels:
17
+ kubernetes.io/bootstrapping: rbac-defaults
18
+ addonmanager.kubernetes.io/mode: Reconcile
19
+ name: system:coredns
20
+ rules:
21
+ - apiGroups:
22
+ - ""
23
+ resources:
24
+ - endpoints
25
+ - services
26
+ - pods
27
+ - namespaces
28
+ verbs:
29
+ - list
30
+ - watch
31
+ - apiGroups:
32
+ - ""
33
+ resources:
34
+ - nodes
35
+ verbs:
36
+ - get
37
+ - apiGroups:
38
+ - discovery.k8s.io
39
+ resources:
40
+ - endpointslices
41
+ verbs:
42
+ - list
43
+ - watch
44
+ ---
45
+ apiVersion: rbac.authorization.k8s.io/v1
46
+ kind: ClusterRoleBinding
47
+ metadata:
48
+ annotations:
49
+ rbac.authorization.kubernetes.io/autoupdate: "true"
50
+ labels:
51
+ kubernetes.io/bootstrapping: rbac-defaults
52
+ addonmanager.kubernetes.io/mode: EnsureExists
53
+ name: system:coredns
54
+ roleRef:
55
+ apiGroup: rbac.authorization.k8s.io
56
+ kind: ClusterRole
57
+ name: system:coredns
58
+ subjects:
59
+ - kind: ServiceAccount
60
+ name: coredns
61
+ namespace: kube-system
62
+ ---
63
+ apiVersion: v1
64
+ kind: ConfigMap
65
+ metadata:
66
+ name: coredns
67
+ namespace: kube-system
68
+ labels:
69
+ addonmanager.kubernetes.io/mode: EnsureExists
70
+ data:
71
+ Corefile: |
72
+ .:53 {
73
+ errors
74
+ health {
75
+ lameduck 5s
76
+ }
77
+ ready
78
+ kubernetes <%= k8s.networking.dns_domain %> in-addr.arpa ip6.arpa {
79
+ pods insecure
80
+ fallthrough in-addr.arpa ip6.arpa
81
+ ttl 30
82
+ }
83
+ prometheus :9153
84
+ forward . /etc/resolv.conf
85
+ cache 30
86
+ loop
87
+ reload
88
+ loadbalance
89
+ }
90
+ ---
91
+ apiVersion: apps/v1
92
+ kind: Deployment
93
+ metadata:
94
+ name: coredns
95
+ namespace: kube-system
96
+ labels:
97
+ k8s-app: kube-dns
98
+ kubernetes.io/cluster-service: "true"
99
+ addonmanager.kubernetes.io/mode: Reconcile
100
+ kubernetes.io/name: "CoreDNS"
101
+ spec:
102
+ # replicas: not specified here:
103
+ # 1. In order to make Addon Manager do not reconcile this replicas parameter.
104
+ # 2. Default is 1.
105
+ # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
106
+ strategy:
107
+ type: RollingUpdate
108
+ rollingUpdate:
109
+ maxUnavailable: 1
110
+ selector:
111
+ matchLabels:
112
+ k8s-app: kube-dns
113
+ template:
114
+ metadata:
115
+ labels:
116
+ k8s-app: kube-dns
117
+ annotations:
118
+ seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
119
+ spec:
120
+ priorityClassName: system-cluster-critical
121
+ serviceAccountName: coredns
122
+ tolerations:
123
+ - key: "CriticalAddonsOnly"
124
+ operator: "Exists"
125
+ nodeSelector:
126
+ kubernetes.io/os: linux
127
+ containers:
128
+ - name: coredns
129
+ image: k8s.gcr.io/coredns/coredns:v1.8.3
130
+ imagePullPolicy: IfNotPresent
131
+ resources:
132
+ limits:
133
+ memory: 170Mi
134
+ requests:
135
+ cpu: 100m
136
+ memory: 70Mi
137
+ args: [ "-conf", "/etc/coredns/Corefile" ]
138
+ volumeMounts:
139
+ - name: config-volume
140
+ mountPath: /etc/coredns
141
+ readOnly: true
142
+ ports:
143
+ - containerPort: 53
144
+ name: dns
145
+ protocol: UDP
146
+ - containerPort: 53
147
+ name: dns-tcp
148
+ protocol: TCP
149
+ - containerPort: 9153
150
+ name: metrics
151
+ protocol: TCP
152
+ livenessProbe:
153
+ httpGet:
154
+ path: /health
155
+ port: 8080
156
+ scheme: HTTP
157
+ initialDelaySeconds: 60
158
+ timeoutSeconds: 5
159
+ successThreshold: 1
160
+ failureThreshold: 5
161
+ readinessProbe:
162
+ httpGet:
163
+ path: /ready
164
+ port: 8181
165
+ scheme: HTTP
166
+ securityContext:
167
+ allowPrivilegeEscalation: false
168
+ capabilities:
169
+ add:
170
+ - NET_BIND_SERVICE
171
+ drop:
172
+ - all
173
+ readOnlyRootFilesystem: true
174
+ dnsPolicy: Default
175
+ volumes:
176
+ - name: config-volume
177
+ configMap:
178
+ name: coredns
179
+ items:
180
+ - key: Corefile
181
+ path: Corefile
182
+ ---
183
+ apiVersion: v1
184
+ kind: Service
185
+ metadata:
186
+ name: kube-dns
187
+ namespace: kube-system
188
+ annotations:
189
+ prometheus.io/port: "9153"
190
+ prometheus.io/scrape: "true"
191
+ labels:
192
+ k8s-app: kube-dns
193
+ kubernetes.io/cluster-service: "true"
194
+ addonmanager.kubernetes.io/mode: Reconcile
195
+ kubernetes.io/name: "CoreDNS"
196
+ spec:
197
+ selector:
198
+ k8s-app: kube-dns
199
+ clusterIP: <%= k8s.networking.dns_ip %>
200
+ ports:
201
+ - name: dns
202
+ port: 53
203
+ protocol: UDP
204
+ - name: dns-tcp
205
+ port: 53
206
+ protocol: TCP
207
+ - name: metrics
208
+ port: 9153
209
+ protocol: TCP