porkadot 0.21.0 → 0.22.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/lib/porkadot/assets/bootstrap/manifests/kube-apiserver.bootstrap.yaml.erb +32 -0
  3. data/lib/porkadot/assets/bootstrap/manifests/kube-controller-manager.bootstrap.yaml.erb +23 -0
  4. data/lib/porkadot/assets/bootstrap/manifests/kube-scheduler.bootstrap.yaml.erb +23 -0
  5. data/lib/porkadot/assets/kubelet/install-deps.sh.erb +9 -0
  6. data/lib/porkadot/assets/kubelet/setup-containerd.sh.erb +8 -1
  7. data/lib/porkadot/assets/kubelet-default/install.sh.erb +14 -0
  8. data/lib/porkadot/assets/kubelet.rb +32 -0
  9. data/lib/porkadot/assets/kubernetes/install.secrets.sh.erb +8 -0
  10. data/lib/porkadot/assets/kubernetes/install.sh.erb +8 -1
  11. data/lib/porkadot/assets/kubernetes/kustomization.yaml.erb +7 -0
  12. data/lib/porkadot/assets/kubernetes/manifests/{coredns.yaml.erb → addons/coredns/coredns.yaml.erb} +2 -1
  13. data/lib/porkadot/assets/kubernetes/manifests/{dns-horizontal-autoscaler.yaml.erb → addons/coredns/dns-horizontal-autoscaler.yaml.erb} +0 -2
  14. data/lib/porkadot/assets/kubernetes/manifests/addons/coredns/kustomization.yaml.erb +3 -0
  15. data/lib/porkadot/assets/kubernetes/manifests/{flannel.yaml.erb → addons/flannel/flannel.yaml.erb} +39 -10
  16. data/lib/porkadot/assets/kubernetes/manifests/addons/flannel/kustomization.yaml.erb +2 -0
  17. data/lib/porkadot/assets/kubernetes/manifests/{kubelet-rubber-stamp.yaml.erb → addons/kubelet-rubber-stamp/kubelet-rubber-stamp.yaml.erb} +1 -1
  18. data/lib/porkadot/assets/kubernetes/manifests/addons/kubelet-rubber-stamp/kustomization.yaml.erb +2 -0
  19. data/lib/porkadot/assets/kubernetes/manifests/addons/kustomization.yaml.erb +4 -0
  20. data/lib/porkadot/assets/kubernetes/manifests/{000-metallb.yaml.erb → addons/metallb/000-metallb.yaml.erb} +0 -0
  21. data/lib/porkadot/assets/kubernetes/manifests/addons/metallb/kustomization.yaml.erb +4 -0
  22. data/lib/porkadot/assets/kubernetes/manifests/{metallb.config.yaml.erb → addons/metallb/metallb.config.yaml.erb} +1 -2
  23. data/lib/porkadot/assets/kubernetes/manifests/{metallb.secrets.yaml.erb → addons/metallb/metallb.secrets.yaml.erb} +0 -0
  24. data/lib/porkadot/assets/kubernetes/manifests/{metallb.yaml.erb → addons/metallb/metallb.yaml.erb} +0 -0
  25. data/lib/porkadot/assets/kubernetes/manifests/addons/storage-version-migrator/kustomization.yaml.erb +2 -0
  26. data/lib/porkadot/assets/kubernetes/manifests/{storage-version-migrator.yaml.erb → addons/storage-version-migrator/storage-version-migrator.yaml.erb} +0 -0
  27. data/lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb +32 -0
  28. data/lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.yaml.erb +20 -6
  29. data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +20 -6
  30. data/lib/porkadot/assets/kubernetes/manifests/kubelet.yaml.erb +0 -1
  31. data/lib/porkadot/assets/kubernetes/manifests/kustomization.yaml.erb +8 -0
  32. data/lib/porkadot/assets/kubernetes.rb +93 -18
  33. data/lib/porkadot/assets.rb +13 -3
  34. data/lib/porkadot/cmd/cli.rb +16 -0
  35. data/lib/porkadot/cmd/install.rb +15 -0
  36. data/lib/porkadot/config.rb +9 -5
  37. data/lib/porkadot/configs/addons.rb +21 -0
  38. data/lib/porkadot/configs/kubelet.rb +26 -0
  39. data/lib/porkadot/configs/kubernetes.rb +27 -10
  40. data/lib/porkadot/default.yaml +24 -6
  41. data/lib/porkadot/install/kubelet.rb +25 -0
  42. data/lib/porkadot/install/kubernetes.rb +2 -2
  43. data/lib/porkadot/version.rb +1 -1
  44. data/lib/porkadot.rb +1 -2
  45. metadata +22 -13
  46. data/lib/porkadot/configs/cni.rb +0 -22
  47. data/lib/porkadot/configs/loadbalancer.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 839afa115dc53563a391b710c14ab686f6c45a5420a6d1f6c6eee21ebdb1e6cf
4
- data.tar.gz: 8f8fbc1099bebe03b5f994050e083c385baad03536d15c14ef6ed1f412ce278c
3
+ metadata.gz: 89c9072a82772720ff6d492d2dcaf475ef31460bc108886be716b1b7b0e0a3d7
4
+ data.tar.gz: edcc58e0f9e5a616020caa2348a46ecb06e796930fb565efcc6dfad25244d69b
5
5
  SHA512:
6
- metadata.gz: 20194aa567e21c0e7af5caa6deb7645c617d58240c5685b0a90e477ea9331ea522618c206718b97a4218ab9d939fa6bd7b557df698703fb8c45c240dbb025e95
7
- data.tar.gz: 3fdd45b9a6132bf0167c4e30c939aa42db77331a6007a850baa1adb67335731e639ccc9483435aecc7c3411d49094698846592a712205b5377adda17965ea930
6
+ metadata.gz: aa12a3f43721a233b17f46708cced2989430da72ccd3e90be46c72b4d2d01b675372f07f609050d0c49cb966d600c40b2eb209a591715e62c411d148a9ace680
7
+ data.tar.gz: 2cacb639c73ecb17300b48ba50e923a15a02f95b619fec2c05d3c3ae50eef7f9b5ae5a62fc784c4957bcf8a04850384d1bca7ba6c623101d812d669cd8939423
@@ -12,6 +12,9 @@ metadata:
12
12
  <%- end -%>
13
13
  spec:
14
14
  hostNetwork: true
15
+ securityContext:
16
+ seccompProfile:
17
+ type: RuntimeDefault
15
18
  containers:
16
19
  - name: kube-apiserver
17
20
  resources:
@@ -23,6 +26,35 @@ spec:
23
26
  <%- k8s.apiserver.args(bootstrap: true).each do |k, v| -%>
24
27
  - <%= k %><% if v ;%>=<%= v %><%; end %>
25
28
  <%- end -%>
29
+ livenessProbe:
30
+ failureThreshold: 8
31
+ httpGet:
32
+ host: 127.0.0.1
33
+ path: /livez
34
+ port: 6443
35
+ scheme: HTTPS
36
+ initialDelaySeconds: 10
37
+ periodSeconds: 10
38
+ timeoutSeconds: 15
39
+ readinessProbe:
40
+ failureThreshold: 3
41
+ httpGet:
42
+ host: 127.0.0.1
43
+ path: /readyz
44
+ port: 6443
45
+ scheme: HTTPS
46
+ periodSeconds: 1
47
+ timeoutSeconds: 15
48
+ startupProbe:
49
+ failureThreshold: 24
50
+ httpGet:
51
+ host: 127.0.0.1
52
+ path: /livez
53
+ port: 6443
54
+ scheme: HTTPS
55
+ initialDelaySeconds: 10
56
+ periodSeconds: 10
57
+ timeoutSeconds: 15
26
58
  env:
27
59
  - name: POD_IP
28
60
  valueFrom:
@@ -10,6 +10,9 @@ metadata:
10
10
  <%= k.to_s %>: <%= v %>
11
11
  <%- end -%>
12
12
  spec:
13
+ securityContext:
14
+ seccompProfile:
15
+ type: RuntimeDefault
13
16
  containers:
14
17
  - name: kube-controller-manager
15
18
  image: <%= k8s.image_repository %>/kube-controller-manager:<%= k8s.kubernetes_version %>
@@ -18,6 +21,26 @@ spec:
18
21
  <%- k8s.controller_manager.args(bootstrap: true).each do |k, v| -%>
19
22
  - <%= k %><% if v ;%>=<%= v %><%; end %>
20
23
  <%- end -%>
24
+ livenessProbe:
25
+ failureThreshold: 8
26
+ httpGet:
27
+ host: 127.0.0.1
28
+ path: /healthz
29
+ port: 10257
30
+ scheme: HTTPS
31
+ initialDelaySeconds: 10
32
+ periodSeconds: 10
33
+ timeoutSeconds: 15
34
+ startupProbe:
35
+ failureThreshold: 24
36
+ httpGet:
37
+ host: 127.0.0.1
38
+ path: /healthz
39
+ port: 10257
40
+ scheme: HTTPS
41
+ initialDelaySeconds: 10
42
+ periodSeconds: 10
43
+ timeoutSeconds: 15
21
44
  volumeMounts:
22
45
  - name: var-run-kubernetes
23
46
  mountPath: /var/run/kubernetes
@@ -10,6 +10,9 @@ metadata:
10
10
  <%= k.to_s %>: <%= v %>
11
11
  <%- end -%>
12
12
  spec:
13
+ securityContext:
14
+ seccompProfile:
15
+ type: RuntimeDefault
13
16
  containers:
14
17
  - name: kube-scheduler
15
18
  image: <%= k8s.image_repository %>/kube-scheduler:<%= k8s.kubernetes_version %>
@@ -18,6 +21,26 @@ spec:
18
21
  <%- k8s.scheduler.args(bootstrap: true).each do |k, v| -%>
19
22
  - <%= k %><% if v ;%>=<%= v %><%; end %>
20
23
  <%- end -%>
24
+ livenessProbe:
25
+ failureThreshold: 8
26
+ httpGet:
27
+ host: 127.0.0.1
28
+ path: /healthz
29
+ port: 10259
30
+ scheme: HTTPS
31
+ initialDelaySeconds: 10
32
+ periodSeconds: 10
33
+ timeoutSeconds: 15
34
+ startupProbe:
35
+ failureThreshold: 24
36
+ httpGet:
37
+ host: 127.0.0.1
38
+ path: /healthz
39
+ port: 10259
40
+ scheme: HTTPS
41
+ initialDelaySeconds: 10
42
+ periodSeconds: 10
43
+ timeoutSeconds: 15
21
44
  volumeMounts:
22
45
  - name: kubernetes
23
46
  mountPath: /etc/kubernetes
@@ -37,3 +37,12 @@ chmod +x ${ETCD_TMP}/etcdctl
37
37
  rm -f /opt/bin/etcdctl
38
38
  mv ${ETCD_TMP}/etcdctl /opt/bin/etcdctl-${ETCD_VER}
39
39
  ln -s /opt/bin/etcdctl-${ETCD_VER} /opt/bin/etcdctl
40
+
41
+ CRICTL_VER="<%= global_config.k8s.crictl_version %>"
42
+ CRICTL_URL=https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICTL_VER}/crictl-${CRICTL_VER}-linux-${architecture}.tar.gz
43
+ CRICTL_TMP=$(mktemp -d)
44
+ curl -L ${CRICTL_URL} -o ${CRICTL_TMP}/crictl.tar.gz
45
+ tar zxvf ${CRICTL_TMP}/crictl.tar.gz -C ${CRICTL_TMP}/
46
+ rm -f /opt/bin/crictl
47
+ mv ${CRICTL_TMP}/crictl /opt/bin/crictl-${CRICTL_VER}
48
+ ln -s /opt/bin/crictl-${CRICTL_VER} /opt/bin/crictl
@@ -5,6 +5,13 @@ ROOT=$(dirname "${BASH_SOURCE}")
5
5
 
6
6
  mkdir -p /etc/containerd
7
7
  containerd config default | tee /etc/containerd/config.toml
8
- sed -i -e "/containerd.runtimes.runc.options/a SystemdCgroup = true" /etc/containerd/config.toml
8
+
9
+ grep SystemdCgroup /etc/containerd/config.toml && :
10
+
11
+ if [[ $? == 0 ]]; then
12
+ sed -i -e "s/SystemdCgroup.*$/SystemdCgroup = true/" /etc/containerd/config.toml
13
+ else
14
+ sed -i -e "/containerd.runtimes.runc.options/a SystemdCgroup = true" /etc/containerd/config.toml
15
+ fi
9
16
 
10
17
  systemctl restart containerd
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+ export LC_ALL=C
5
+ ROOT=$(dirname "${BASH_SOURCE}")
6
+
7
+ # Install addons
8
+ for addon in $(ls ${ROOT}/addons/); do
9
+ install_sh="${ROOT}/addons/${addon}/install.sh"
10
+ if [[ -f ${install_sh} ]]; then
11
+ echo "Install: ${install_sh}"
12
+ bash ${install_sh}
13
+ fi
14
+ done
@@ -7,11 +7,13 @@ module Porkadot; module Assets
7
7
  class KubeletList
8
8
  attr_reader :global_config
9
9
  attr_reader :logger
10
+ attr_reader :kubelet_default
10
11
  attr_reader :kubelets
11
12
 
12
13
  def initialize global_config
13
14
  @global_config = global_config
14
15
  @logger = global_config.logger
16
+ @kubelet_default = KubeletDefault.new(global_config.kubelet_default)
15
17
  @kubelets = {}
16
18
  global_config.nodes.each do |k, config|
17
19
  @kubelets[k] = Kubelet.new(config)
@@ -19,6 +21,7 @@ module Porkadot; module Assets
19
21
  end
20
22
 
21
23
  def render
24
+ self.kubelet_default.render
22
25
  self.kubelets.each do |_, v|
23
26
  v.render
24
27
  end
@@ -29,6 +32,35 @@ module Porkadot; module Assets
29
32
  end
30
33
  end
31
34
 
35
+ class KubeletDefault
36
+ include Porkadot::Assets
37
+ TEMPLATE_DIR = File.join(File.dirname(__FILE__), "kubelet-default")
38
+
39
+ attr_reader :global_config
40
+ attr_reader :config
41
+ attr_reader :logger
42
+ attr_reader :certs
43
+
44
+ def initialize config
45
+ @config = config
46
+ @logger = config.logger
47
+ @global_config = config.config
48
+ @certs = Porkadot::Assets::Certs::Kubernetes.new(global_config)
49
+ end
50
+
51
+ def render
52
+ logger.info "--> Rendering Kubelet default configs"
53
+ unless File.directory?(config.addon_path)
54
+ FileUtils.mkdir_p(config.addon_path)
55
+ end
56
+ unless File.directory?(config.addon_secrets_path)
57
+ FileUtils.mkdir_p(config.addon_secrets_path)
58
+ end
59
+
60
+ render_erb 'install.sh'
61
+ end
62
+ end
63
+
32
64
  class Kubelet
33
65
  include Porkadot::Assets
34
66
  TEMPLATE_DIR = File.join(File.dirname(__FILE__), "kubelet")
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+ export LC_ALL=C
5
+ ROOT=$(dirname "${BASH_SOURCE}")
6
+
7
+ /opt/bin/kubectl apply -R -f ${ROOT}/manifests
8
+
@@ -3,5 +3,12 @@
3
3
  set -eu
4
4
  export LC_ALL=C
5
5
  ROOT=$(dirname "${BASH_SOURCE}")
6
+ KUBECTL_OPTS=${KUBECTL_OPTS:-""}
6
7
 
7
- /opt/bin/kubectl apply -f ${ROOT}/manifests/
8
+ KUBECTL_OPTS="${KUBECTL_OPTS} --server-side --force-conflicts --prune"
9
+ KUBECTL_OPTS="${KUBECTL_OPTS} -l kubernetes.unstable.cloud/installed-by=porkadot"
10
+ <%- prune_allowlist.each do |a| -%>
11
+ KUBECTL_OPTS="${KUBECTL_OPTS} --prune-whitelist=<%= a %>"
12
+ <%- end -%>
13
+
14
+ /opt/bin/kubectl apply ${KUBECTL_OPTS} -k ${ROOT}
@@ -0,0 +1,7 @@
1
+ # Modify this file if you want to kustomize generated manifests
2
+ # This file will not be overridden by Porkadot.
3
+ labels:
4
+ - pairs:
5
+ 'kubernetes.unstable.cloud/installed-by': 'porkadot'
6
+ resources:
7
+ - manifests
@@ -75,7 +75,7 @@ data:
75
75
  lameduck 5s
76
76
  }
77
77
  ready
78
- kubernetes <%= k8s.networking.dns_domain %> in-addr.arpa ip6.arpa {
78
+ kubernetes <%= k8s.networking.dns_domain %> <%= k8s.networking.additional_domains.join(" ") %> in-addr.arpa ip6.arpa {
79
79
  pods insecure
80
80
  fallthrough in-addr.arpa ip6.arpa
81
81
  ttl 30
@@ -193,6 +193,7 @@ metadata:
193
193
  kubernetes.io/cluster-service: "true"
194
194
  addonmanager.kubernetes.io/mode: Reconcile
195
195
  kubernetes.io/name: "CoreDNS"
196
+ app.kubernetes.io/name: kube-dns
196
197
  spec:
197
198
  selector:
198
199
  k8s-app: kube-dns
@@ -82,8 +82,6 @@ spec:
82
82
  securityContext:
83
83
  supplementalGroups: [ 65534 ]
84
84
  fsGroup: 65534
85
- nodeSelector:
86
- kubernetes.io/os: linux
87
85
  containers:
88
86
  - name: autoscaler
89
87
  image: k8s.gcr.io/cluster-proportional-autoscaler-amd64:1.7.1
@@ -0,0 +1,3 @@
1
+ resources:
2
+ - coredns.yaml
3
+ - dns-horizontal-autoscaler.yaml
@@ -1,3 +1,5 @@
1
+ <% cni = config.flannel -%>
2
+ <% k8s = global_config.k8s -%>
1
3
  ---
2
4
  apiVersion: policy/v1beta1
3
5
  kind: PodSecurityPolicy
@@ -125,9 +127,15 @@ data:
125
127
  }
126
128
  net-conf.json: |
127
129
  {
128
- "Network": "<%= global_config.k8s.networking.pod_subnet %>",
130
+ <%- if k8s.networking.enable_ipv4 -%>
131
+ "Network": "<%= k8s.networking.pod_v4subnet %>",
132
+ <%- end -%>
133
+ <%- if k8s.networking.enable_ipv6 -%>
134
+ "EnableIPv6": true,
135
+ "IPv6Network": "<%= k8s.networking.pod_v6subnet %>",
136
+ <%- end -%>
129
137
  "Backend": {
130
- "Type": "<%= global_config.cni.backend %>"
138
+ "Type": "<%= cni.backend %>"
131
139
  }
132
140
  }
133
141
  ---
@@ -165,8 +173,20 @@ spec:
165
173
  effect: NoSchedule
166
174
  serviceAccountName: flannel
167
175
  initContainers:
176
+ - name: install-cni-plugin
177
+ #image: flannelcni/flannel-cni-plugin:v1.0.1 for ppc64le and mips64le (dockerhub limitations may apply)
178
+ image: <%= cni.plugin_image_repository %>:<%= cni.plugin_image_tag %>
179
+ command:
180
+ - cp
181
+ args:
182
+ - -f
183
+ - /flannel
184
+ - /opt/cni/bin/flannel
185
+ volumeMounts:
186
+ - name: cni-plugin
187
+ mountPath: /opt/cni/bin
168
188
  - name: install-cni
169
- image: quay.io/coreos/flannel:v0.14.0
189
+ image: <%= cni.daemon_image_repository %>:<%= cni.daemon_image_tag %>
170
190
  command:
171
191
  - cp
172
192
  args:
@@ -180,19 +200,14 @@ spec:
180
200
  mountPath: /etc/kube-flannel/
181
201
  containers:
182
202
  - name: kube-flannel
183
- image: quay.io/coreos/flannel:v0.14.0
203
+ image: <%= cni.daemon_image_repository %>:<%= cni.daemon_image_tag %>
184
204
  command:
185
205
  - /opt/bin/flanneld
186
206
  args:
187
207
  - --ip-masq
188
208
  - --kube-subnet-mgr
189
209
  resources:
190
- requests:
191
- cpu: "100m"
192
- memory: "50Mi"
193
- limits:
194
- cpu: "100m"
195
- memory: "50Mi"
210
+ <%= u.to_yaml(cni.resources, 10)%>
196
211
  securityContext:
197
212
  privileged: false
198
213
  capabilities:
@@ -211,13 +226,27 @@ spec:
211
226
  mountPath: /run/flannel
212
227
  - name: flannel-cfg
213
228
  mountPath: /etc/kube-flannel/
229
+ - name: ipam-data
230
+ mountPath: /var/lib/cni/networks
231
+ - name: xtables-lock
232
+ mountPath: /run/xtables.lock
214
233
  volumes:
215
234
  - name: run
216
235
  hostPath:
217
236
  path: /run/flannel
237
+ - name: cni-plugin
238
+ hostPath:
239
+ path: /opt/cni/bin
218
240
  - name: cni
219
241
  hostPath:
220
242
  path: /etc/cni/net.d
243
+ - name: ipam-data
244
+ hostPath:
245
+ path: /var/lib/cni/networks
221
246
  - name: flannel-cfg
222
247
  configMap:
223
248
  name: kube-flannel-cfg
249
+ - name: xtables-lock
250
+ hostPath:
251
+ path: /run/xtables.lock
252
+ type: FileOrCreate
@@ -24,7 +24,7 @@ spec:
24
24
  - name: kubelet-rubber-stamp
25
25
  # image: quay.io/kontena/kubelet-rubber-stamp-amd64:0.2
26
26
  # Use following image until issue is fixed
27
- image: yuanying/kubelet-rubber-stamp:0.3.0.y01
27
+ image: ghcr.io/porkadot/kubelet-rubber-stamp:0.22.0
28
28
  args:
29
29
  - "--v=2"
30
30
  imagePullPolicy: Always
@@ -0,0 +1,2 @@
1
+ resources:
2
+ - kubelet-rubber-stamp.yaml
@@ -0,0 +1,4 @@
1
+ resources:
2
+ <%- config.enabled.each do |a| -%>
3
+ - <%= a %>
4
+ <%- end %>
@@ -0,0 +1,4 @@
1
+ resources:
2
+ - 000-metallb.yaml
3
+ - metallb.config.yaml
4
+ - metallb.yaml
@@ -1,4 +1,3 @@
1
- <% k8s = global_config.k8s -%>
2
1
  ---
3
2
  apiVersion: v1
4
3
  kind: ConfigMap
@@ -9,5 +8,5 @@ metadata:
9
8
  namespace: metallb-system
10
9
  data:
11
10
  config: |
12
- <%= u.indent(global_config.lb.lb_config, 4) %>
11
+ <%= u.indent(config.metallb.config, 4) %>
13
12
 
@@ -0,0 +1,2 @@
1
+ resources:
2
+ - storage-version-migrator.yaml
@@ -24,6 +24,9 @@ spec:
24
24
  annotations:
25
25
  checkpointer.alpha.coreos.com/checkpoint: "true"
26
26
  spec:
27
+ securityContext:
28
+ seccompProfile:
29
+ type: RuntimeDefault
27
30
  containers:
28
31
  - name: kube-apiserver
29
32
  resources:
@@ -35,6 +38,35 @@ spec:
35
38
  <%- k8s.apiserver.args.each do |k, v| -%>
36
39
  - <%= k %><% if v ;%>=<%= v %><%; end %>
37
40
  <%- end -%>
41
+ livenessProbe:
42
+ failureThreshold: 8
43
+ httpGet:
44
+ host: 127.0.0.1
45
+ path: /livez
46
+ port: 6443
47
+ scheme: HTTPS
48
+ initialDelaySeconds: 10
49
+ periodSeconds: 10
50
+ timeoutSeconds: 15
51
+ readinessProbe:
52
+ failureThreshold: 3
53
+ httpGet:
54
+ host: 127.0.0.1
55
+ path: /readyz
56
+ port: 6443
57
+ scheme: HTTPS
58
+ periodSeconds: 1
59
+ timeoutSeconds: 15
60
+ startupProbe:
61
+ failureThreshold: 24
62
+ httpGet:
63
+ host: 127.0.0.1
64
+ path: /livez
65
+ port: 6443
66
+ scheme: HTTPS
67
+ initialDelaySeconds: 10
68
+ periodSeconds: 10
69
+ timeoutSeconds: 15
38
70
  env:
39
71
  - name: POD_IP
40
72
  valueFrom:
@@ -1,6 +1,6 @@
1
1
  <% k8s = global_config.k8s -%>
2
2
  ---
3
- apiVersion: policy/v1beta1
3
+ apiVersion: policy/v1
4
4
  kind: PodDisruptionBudget
5
5
  metadata:
6
6
  name: kube-controller-manager
@@ -69,6 +69,11 @@ spec:
69
69
  annotations:
70
70
  scheduler.alpha.kubernetes.io/critical-pod: ''
71
71
  spec:
72
+ securityContext:
73
+ seccompProfile:
74
+ type: RuntimeDefault
75
+ runAsNonRoot: true
76
+ runAsUser: 65534
72
77
  affinity:
73
78
  podAntiAffinity:
74
79
  preferredDuringSchedulingIgnoredDuringExecution:
@@ -97,10 +102,22 @@ spec:
97
102
  - <%= k %><% if v ;%>=<%= v %><%; end %>
98
103
  <%- end -%>
99
104
  livenessProbe:
105
+ failureThreshold: 8
100
106
  httpGet:
101
107
  path: /healthz
102
- port: 10252 # Note: Using default port. Update if --port option is set differently.
103
- initialDelaySeconds: 15
108
+ port: 10257
109
+ scheme: HTTPS
110
+ initialDelaySeconds: 10
111
+ periodSeconds: 10
112
+ timeoutSeconds: 15
113
+ startupProbe:
114
+ failureThreshold: 24
115
+ httpGet:
116
+ path: /healthz
117
+ port: 10257
118
+ scheme: HTTPS
119
+ initialDelaySeconds: 10
120
+ periodSeconds: 10
104
121
  timeoutSeconds: 15
105
122
  volumeMounts:
106
123
  - name: var-run-kubernetes
@@ -122,9 +139,6 @@ spec:
122
139
  priorityClassName: system-cluster-critical
123
140
  nodeSelector:
124
141
  k8s.unstable.cloud/master: ""
125
- securityContext:
126
- runAsNonRoot: true
127
- runAsUser: 65534
128
142
  serviceAccountName: kube-controller-manager
129
143
  tolerations:
130
144
  - key: CriticalAddonsOnly
@@ -1,6 +1,6 @@
1
1
  <% k8s = global_config.k8s -%>
2
2
  ---
3
- apiVersion: policy/v1beta1
3
+ apiVersion: policy/v1
4
4
  kind: PodDisruptionBudget
5
5
  metadata:
6
6
  name: kube-scheduler
@@ -113,6 +113,11 @@ spec:
113
113
  annotations:
114
114
  scheduler.alpha.kubernetes.io/critical-pod: ''
115
115
  spec:
116
+ securityContext:
117
+ seccompProfile:
118
+ type: RuntimeDefault
119
+ runAsNonRoot: true
120
+ runAsUser: 65534
116
121
  affinity:
117
122
  podAntiAffinity:
118
123
  preferredDuringSchedulingIgnoredDuringExecution:
@@ -141,17 +146,26 @@ spec:
141
146
  - <%= k %><% if v ;%>=<%= v %><%; end %>
142
147
  <%- end -%>
143
148
  livenessProbe:
149
+ failureThreshold: 8
144
150
  httpGet:
145
151
  path: /healthz
146
- port: 10251 # Note: Using default port. Update if --port option is set differently.
147
- initialDelaySeconds: 15
152
+ port: 10259
153
+ scheme: HTTPS
154
+ initialDelaySeconds: 10
155
+ periodSeconds: 10
156
+ timeoutSeconds: 15
157
+ startupProbe:
158
+ failureThreshold: 24
159
+ httpGet:
160
+ path: /healthz
161
+ port: 10259
162
+ scheme: HTTPS
163
+ initialDelaySeconds: 10
164
+ periodSeconds: 10
148
165
  timeoutSeconds: 15
149
166
  priorityClassName: system-cluster-critical
150
167
  nodeSelector:
151
168
  k8s.unstable.cloud/master: ""
152
- securityContext:
153
- runAsNonRoot: true
154
- runAsUser: 65534
155
169
  serviceAccountName: kube-scheduler
156
170
  tolerations:
157
171
  - key: CriticalAddonsOnly
@@ -15,7 +15,6 @@ roleRef:
15
15
  kind: ClusterRoleBinding
16
16
  apiVersion: rbac.authorization.k8s.io/v1
17
17
  metadata:
18
- name: auto-approve-csrs-for-group
19
18
  name: porkadot:node-autoapprove-bootstrap
20
19
  subjects:
21
20
  - kind: Group
@@ -0,0 +1,8 @@
1
+ resources:
2
+ - addons
3
+ - kube-apiserver.yaml
4
+ - kube-controller-manager.yaml
5
+ - kube-proxy.yaml
6
+ - kube-scheduler.yaml
7
+ - kubelet.yaml
8
+ - porkadot.yaml
@@ -17,34 +17,109 @@ module Porkadot; module Assets
17
17
 
18
18
  def render
19
19
  logger.info "--> Rendering kubernetes manifests"
20
- unless File.directory?(config.manifests_path)
21
- FileUtils.mkdir_p(config.manifests_path)
22
- end
23
- unless File.directory?(config.manifests_secrets_path)
24
- FileUtils.mkdir_p(config.manifests_secrets_path)
25
- end
26
- lb = global_config.lb
27
- cni = global_config.cni
28
20
  render_erb 'manifests/porkadot.yaml'
29
21
  render_erb 'manifests/kubelet.yaml'
30
- render_erb "manifests/000-#{lb.type}.yaml"
31
- render_erb "manifests/#{lb.type}.yaml"
32
- render_erb "manifests/#{lb.type}.config.yaml"
33
- render_secrets_erb "manifests/#{lb.type}.secrets.yaml"
34
- render_erb "manifests/#{cni.type}.yaml"
35
- render_erb "manifests/coredns.yaml"
36
- render_erb "manifests/dns-horizontal-autoscaler.yaml"
37
22
  render_erb "manifests/kube-apiserver.yaml"
38
23
  render_secrets_erb "manifests/kube-apiserver.secrets.yaml"
39
24
  render_erb "manifests/kube-proxy.yaml"
40
25
  render_erb "manifests/kube-scheduler.yaml"
41
26
  render_erb "manifests/kube-controller-manager.yaml"
42
27
  render_secrets_erb "manifests/kube-controller-manager.secrets.yaml"
43
- render_erb "manifests/kubelet-rubber-stamp.yaml"
44
- render_erb "manifests/storage-version-migrator.yaml"
45
28
  render_secrets_erb "kubeconfig.yaml"
46
- render_erb 'install.sh'
29
+ render_erb 'manifests/kustomization.yaml'
30
+ render_erb 'kustomization.yaml', force: false
31
+ render_erb 'install.sh', prune_allowlist: prune_allowlist
32
+ render_secrets_erb 'install.secrets.sh'
33
+
34
+ addons = Addons.new(global_config)
35
+ addons.render
36
+ end
37
+
38
+ def prune_allowlist
39
+ return %w[
40
+ apiextensions.k8s.io/v1/customresourcedefinition
41
+ apps/v1/daemonset
42
+ apps/v1/deployment
43
+ core/v1/configmap
44
+ core/v1/namespace
45
+ core/v1/service
46
+ core/v1/serviceaccount
47
+ policy/v1/poddisruptionbudget
48
+ policy/v1beta1/podsecuritypolicy
49
+ rbac.authorization.k8s.io/v1/clusterrole
50
+ rbac.authorization.k8s.io/v1/clusterrolebinding
51
+ rbac.authorization.k8s.io/v1/role
52
+ rbac.authorization.k8s.io/v1/rolebinding
53
+ ]
47
54
  end
55
+ end
56
+
57
+ class Addons
58
+ include Porkadot::Assets
59
+ TEMPLATE_DIR = File.join(File.dirname(__FILE__), "kubernetes", "manifests", "addons")
60
+ attr_reader :global_config
61
+ attr_reader :config
62
+ attr_reader :logger
63
+
64
+ def initialize global_config
65
+ @global_config = global_config
66
+ @config = global_config.addons
67
+ @logger = global_config.logger
68
+ end
69
+
70
+ def render
71
+ logger.info "--> Rendering kubernetes addons"
72
+ render_erb "kustomization.yaml"
73
+
74
+ self.config.enabled.each do |name|
75
+ manifests = @@manifests[name]
76
+ manifests.each do |m|
77
+ render_erb(m)
78
+ end
79
+ secrets = @@secrets_manifests[name]
80
+ secrets.each do |m|
81
+ render_secrets_erb(m)
82
+ end
83
+ end
84
+ end
85
+
86
+ def self.register_manifests name, manifests, secrets: []
87
+ @@manifests ||= {}
88
+ @@manifests[name] = manifests
89
+ @@secrets_manifests ||= {}
90
+ @@secrets_manifests[name] = secrets
91
+ end
92
+
93
+ register_manifests('flannel', [
94
+ 'flannel/flannel.yaml',
95
+ 'flannel/kustomization.yaml'
96
+ ])
97
+
98
+ register_manifests('coredns', [
99
+ 'coredns/coredns.yaml',
100
+ 'coredns/dns-horizontal-autoscaler.yaml',
101
+ 'coredns/kustomization.yaml'
102
+ ])
103
+
104
+ register_manifests('metallb', [
105
+ 'metallb/000-metallb.yaml',
106
+ 'metallb/metallb.yaml',
107
+ 'metallb/metallb.config.yaml',
108
+ 'metallb/kustomization.yaml'
109
+ ], secrets: [
110
+ 'metallb/metallb.secrets.yaml'
111
+ ])
112
+
113
+
114
+ register_manifests('kubelet-rubber-stamp', [
115
+ 'kubelet-rubber-stamp/kubelet-rubber-stamp.yaml',
116
+ 'kubelet-rubber-stamp/kustomization.yaml'
117
+ ])
118
+
119
+ register_manifests('storage-version-migrator', [
120
+ 'storage-version-migrator/storage-version-migrator.yaml',
121
+ 'storage-version-migrator/kustomization.yaml'
122
+ ])
48
123
 
49
124
  end
50
125
  end; end
@@ -15,7 +15,7 @@ module Porkadot::Assets
15
15
  end
16
16
  end
17
17
 
18
- def render_erb file, opts={}
18
+ def render_erb file, **opts
19
19
  file = file.to_s
20
20
  opts[:config] = self.config
21
21
  opts[:global_config] = self.global_config
@@ -23,8 +23,15 @@ module Porkadot::Assets
23
23
  opts[:u] = ErbUtils.new
24
24
 
25
25
  logger.info "----> #{file}"
26
+ asset = config.asset_path(file)
27
+ if opts[:force] != nil && File.file?(asset)
28
+ logger.debug "------> Already exists: skipping #{file}"
29
+ return
30
+ end
31
+ asset_dir = File.dirname(asset)
32
+ FileUtils.mkdir_p(asset_dir) unless File.directory?(asset_dir)
26
33
  open(File.join(self.class::TEMPLATE_DIR, "#{file}.erb")) do |io|
27
- open(config.asset_path(file), 'w') do |out|
34
+ open(asset, 'w') do |out|
28
35
  out.write ERB.new(io.read, trim_mode: '-').result_with_hash(opts)
29
36
  end
30
37
  end
@@ -38,8 +45,11 @@ module Porkadot::Assets
38
45
  opts[:u] = ErbUtils.new
39
46
 
40
47
  logger.info "----> #{file}"
48
+ secret = config.secrets_path(file)
49
+ secret_dir = File.dirname(secret)
50
+ FileUtils.mkdir_p(secret_dir) unless File.directory?(secret_dir)
41
51
  open(File.join(self.class::TEMPLATE_DIR, "#{file}.erb")) do |io|
42
- open(config.secrets_path(file), 'w') do |out|
52
+ open(secret, 'w') do |out|
43
53
  out.write ERB.new(io.read, trim_mode: '-').result_with_hash(opts)
44
54
  end
45
55
  end
@@ -29,6 +29,22 @@ module Porkadot; module Cmd
29
29
  ""
30
30
  end
31
31
 
32
+ desc "setup-node", "Setup node default settings"
33
+ option :node, type: :string
34
+ option :force, type: :boolean, default: false
35
+ def setup_node
36
+ logger.info "Setup node default"
37
+ kubelets = Porkadot::Install::KubeletList.new(self.config)
38
+ nodes = []
39
+ if node = options[:node]
40
+ nodes = kubelets[node]
41
+ else
42
+ nodes = kubelets.kubelets.values
43
+ end
44
+ kubelets.setup_default hosts: nodes, force: options[:force]
45
+ ""
46
+ end
47
+
32
48
  desc "set-config", "Set cluster to kubeconfig"
33
49
  def set_config
34
50
  name = config.k8s.cluster_name
@@ -26,6 +26,21 @@ module Porkadot; module Cmd; module Install
26
26
  ""
27
27
  end
28
28
 
29
+ desc "kubernetes", "Install kubernetes"
30
+ option :node, type: :string
31
+ def kubernetes
32
+ logger.info "Installing kubernetes"
33
+ kubelets = Porkadot::Install::KubeletList.new(self.config)
34
+ if node = options[:node]
35
+ nodes = kubelets[node]
36
+ else
37
+ nodes = Porkadot::Install::Bootstrap.new(self.config).host
38
+ end
39
+ k8s = Porkadot::Install::Kubernetes.new(self.config)
40
+ k8s.install(nodes)
41
+ ""
42
+ end
43
+
29
44
  desc "bootstrap", "Install bootstrap components"
30
45
  subcommand "bootstrap", Porkadot::Cmd::Install::Bootstrap::Cli
31
46
 
@@ -31,16 +31,15 @@ module Porkadot
31
31
  self.raw.connection
32
32
  end
33
33
 
34
+ def addons
35
+ @addons ||= Porkadot::Configs::Addons.new(self)
36
+ end
37
+
34
38
  def lb
35
39
  @lb ||= Porkadot::Configs::Lb.new(self)
36
40
  return @lb
37
41
  end
38
42
 
39
- def cni
40
- @cni ||= Porkadot::Configs::Cni.new(self)
41
- return @cni
42
- end
43
-
44
43
  def bootstrap
45
44
  @bootstrap ||= Porkadot::Configs::Bootstrap.new(self)
46
45
  return @bootstrap
@@ -57,6 +56,11 @@ module Porkadot
57
56
  return @etcd
58
57
  end
59
58
 
59
+ def kubelet_default
60
+ @kubelet_default ||= Porkadot::Configs::KubeletDefault.new(self)
61
+ return @kubelet_default
62
+ end
63
+
60
64
  def nodes
61
65
  @nodes ||= {}.tap do |nodes|
62
66
  self.raw.nodes.each do |k, v|
@@ -0,0 +1,21 @@
1
+
2
+ module Porkadot; module Configs
3
+ class Addons
4
+ include Porkadot::ConfigUtils
5
+
6
+ def initialize config
7
+ @config = config
8
+ @raw = config.raw.addons
9
+ end
10
+
11
+ def target_path
12
+ File.join(self.config.assets_dir, 'kubernetes', 'manifests', 'addons')
13
+ end
14
+
15
+ def target_secrets_path
16
+ File.join(self.config.secrets_root_dir, 'kubernetes', 'manifests', 'addons')
17
+ end
18
+
19
+ end
20
+ end; end
21
+
@@ -1,4 +1,30 @@
1
1
  module Porkadot; module Configs
2
+ class KubeletDefault
3
+ include Porkadot::ConfigUtils
4
+
5
+ def initialize config
6
+ @config = config
7
+ @raw = ::Porkadot::Raw.new
8
+ end
9
+
10
+ def target_path
11
+ File.join(self.config.assets_dir, 'kubelet-default')
12
+ end
13
+
14
+ def target_secrets_path
15
+ File.join(self.config.secrets_root_dir, 'kubelet-default')
16
+ end
17
+
18
+ def addon_path
19
+ File.join(self.target_path, 'addons')
20
+ end
21
+
22
+ def addon_secrets_path
23
+ File.join(self.target_secrets_path, 'addons')
24
+ end
25
+
26
+ end
27
+
2
28
  class Kubelet
3
29
  include Porkadot::ConfigUtils
4
30
  attr_reader :name
@@ -1,4 +1,3 @@
1
-
2
1
  module Porkadot; module Configs
3
2
  class Kubernetes
4
3
  include Porkadot::ConfigUtils
@@ -35,10 +34,6 @@ module Porkadot; module Configs
35
34
  File.join(self.target_path, 'manifests')
36
35
  end
37
36
 
38
- def manifests_secrets_path
39
- File.join(self.target_secrets_path, 'manifests')
40
- end
41
-
42
37
  def control_plane_endpoint_host_and_port
43
38
  endpoint = self.config.k8s.control_plane_endpoint
44
39
  raise "kubernetes.control_plane_endpoint should not be nil" unless endpoint
@@ -196,9 +191,9 @@ module Porkadot; module Configs
196
191
  --cluster-signing-key-file=/etc/kubernetes/pki/kubernetes/ca.key
197
192
  --controllers=*,bootstrapsigner,tokencleaner
198
193
  --leader-elect=true
199
- --node-cidr-mask-size=24
200
194
  --root-ca-file=/etc/kubernetes/pki/kubernetes/ca.crt
201
195
  --service-account-private-key-file=/etc/kubernetes/pki/kubernetes/sa.key
196
+ --service-cluster-ip-range=#{config.k8s.networking.service_subnet}
202
197
  --use-service-account-credentials=true
203
198
  --v=#{self.log_level}
204
199
  ).map {|i| i.split('=', 2)}.to_h
@@ -249,13 +244,35 @@ module Porkadot; module Configs
249
244
  end
250
245
 
251
246
  def kubernetes_ip
252
- cluster_ip_range = IPAddr.new(self.service_subnet)
253
- cluster_ip_range.to_range.first(2)[1].to_s
247
+ cluster_ip_range = IPAddr.new(self.default_service_subnet)
248
+ cluster_ip_range.to_range.first(2)[1]
254
249
  end
255
250
 
256
251
  def dns_ip
257
- cluster_ip_range = IPAddr.new(self.service_subnet)
258
- cluster_ip_range.to_range.first(11)[10].to_s
252
+ cluster_ip_range = IPAddr.new(self.default_service_subnet)
253
+ cluster_ip_range.to_range.first(11)[10]
254
+ end
255
+
256
+ def default_service_subnet
257
+ self.service_subnet.split(',')[0]
258
+ end
259
+
260
+ def pod_v4subnet
261
+ if ip = self._pod_subnet.find{ |net| net.ipv4? }
262
+ return "#{ip.to_s}/#{ip.prefix}"
263
+ end
264
+ end
265
+ alias enable_ipv4 pod_v4subnet
266
+
267
+ def pod_v6subnet
268
+ if ip = self._pod_subnet.find{ |net| net.ipv6? }
269
+ return "#{ip.to_s}/#{ip.prefix}"
270
+ end
271
+ end
272
+ alias enable_ipv6 pod_v6subnet
273
+
274
+ def _pod_subnet
275
+ self.pod_subnet.split(",").map{|net| IPAddr.new(net)}
259
276
  end
260
277
  end
261
278
  end
@@ -10,13 +10,25 @@ nodes: {}
10
10
 
11
11
  bootstrap: {}
12
12
 
13
- cni:
14
- type: flannel
13
+ addons:
14
+ enabled: [flannel, coredns, metallb, kubelet-rubber-stamp, storage-version-migrator]
15
+
15
16
  flannel:
16
17
  backend: vxlan
18
+ plugin_image_repository: rancher/mirrored-flannelcni-flannel-cni-plugin
19
+ plugin_image_tag: v1.0.1
20
+ daemon_image_repository: rancher/mirrored-flannelcni-flannel
21
+ daemon_image_tag: v0.17.0
22
+ resources:
23
+ requests:
24
+ cpu: "100m"
25
+ memory: "50Mi"
26
+ limits:
27
+ cpu: "100m"
28
+ memory: "50Mi"
29
+
30
+ coredns: {}
17
31
 
18
- lb:
19
- type: metallb
20
32
  metallb:
21
33
  config: |
22
34
  address-pools:
@@ -25,20 +37,26 @@ lb:
25
37
  addresses:
26
38
  - 192.168.1.240-192.168.1.250
27
39
 
40
+ kubelet-rubber-stamp: {}
41
+
42
+ storage-version-migrator: {}
43
+
28
44
  etcd:
29
45
  image_repository: gcr.io/etcd-development/etcd
30
46
  image_tag: v3.4.13
31
47
  extra_env: []
32
48
 
33
49
  kubernetes:
34
- kubernetes_version: v1.21.3
50
+ kubernetes_version: v1.22.8
51
+ crictl_version: v1.22.0
35
52
  image_repository: k8s.gcr.io
36
53
 
37
54
  networking:
38
- cni_version: v0.8.2
55
+ cni_version: v1.0.1
39
56
  service_subnet: '10.254.0.0/24'
40
57
  pod_subnet: '10.244.0.0/16'
41
58
  dns_domain: 'cluster.local'
59
+ additional_domains: []
42
60
 
43
61
  apiserver:
44
62
  bind_port: 6443
@@ -2,6 +2,7 @@ module Porkadot; module Install
2
2
  class KubeletList
3
3
  KUBE_TEMP = File.join(Porkadot::Install::KUBE_TEMP, 'kubelet')
4
4
  KUBE_SECRETS_TEMP = File.join(Porkadot::Install::KUBE_TEMP, '.kubelet')
5
+ KUBE_DEFAULT_TEMP = File.join(Porkadot::Install::KUBE_TEMP, '.default')
5
6
  include SSHKit::DSL
6
7
  attr_reader :global_config
7
8
  attr_reader :logger
@@ -40,6 +41,30 @@ module Porkadot; module Install
40
41
  end
41
42
  end
42
43
 
44
+ def setup_default hosts: nil, force: false
45
+ unless hosts
46
+ hosts = []
47
+ self.kubelets.each do |_, v|
48
+ hosts << v
49
+ end
50
+ end
51
+
52
+ on(hosts) do |host|
53
+ execute(:mkdir, '-p', Porkadot::Install::KUBE_TEMP)
54
+ if test("[ -d #{KUBE_TEMP} ]")
55
+ execute(:rm, '-rf', KUBE_TEMP)
56
+ execute(:rm, '-rf', KUBE_SECRETS_TEMP)
57
+ end
58
+ upload! host.global_config.kubelet_default.target_path, KUBE_TEMP, recursive: true
59
+ upload! host.global_config.kubelet_default.target_secrets_path, KUBE_SECRETS_TEMP, recursive: true
60
+ execute(:cp, '-r', KUBE_SECRETS_TEMP + '/*', KUBE_TEMP)
61
+
62
+ as user: 'root' do
63
+ execute(:bash, File.join(KUBE_TEMP, 'install.sh'))
64
+ end
65
+ end
66
+ end
67
+
43
68
  def install hosts: nil, force: false
44
69
  unless hosts
45
70
  hosts = []
@@ -24,10 +24,10 @@ module Porkadot; module Install
24
24
  end
25
25
  upload! config.target_path, KUBE_TEMP, recursive: true
26
26
  upload! config.target_secrets_path, KUBE_SECRETS_TEMP, recursive: true
27
- execute(:cp, '-r', KUBE_SECRETS_TEMP + '/*', KUBE_TEMP)
28
27
 
29
28
  # as user: 'root' do
30
- with KUBECONFIG: File.join(KUBE_TEMP, 'kubeconfig.yaml') do
29
+ with KUBECONFIG: File.join(KUBE_SECRETS_TEMP, 'kubeconfig.yaml') do
30
+ execute(:bash, File.join(KUBE_SECRETS_TEMP, 'install.secrets.sh'))
31
31
  execute(:bash, File.join(KUBE_TEMP, 'install.sh'))
32
32
  end
33
33
  end
@@ -1,3 +1,3 @@
1
1
  module Porkadot
2
- VERSION = "0.21.0"
2
+ VERSION = "0.22.2"
3
3
  end
data/lib/porkadot.rb CHANGED
@@ -20,8 +20,7 @@ require 'porkadot/configs/kubernetes'
20
20
  require 'porkadot/configs/etcd'
21
21
  require 'porkadot/configs/bootstrap'
22
22
  require 'porkadot/configs/kubernetes'
23
- require 'porkadot/configs/loadbalancer'
24
- require 'porkadot/configs/cni'
23
+ require 'porkadot/configs/addons'
25
24
 
26
25
  require 'porkadot/assets/certs'
27
26
  require 'porkadot/assets/kubelet'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: porkadot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.22.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - OTSUKA, Yuanying
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-07-25 00:00:00.000000000 Z
11
+ date: 2022-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -133,6 +133,7 @@ files:
133
133
  - lib/porkadot/assets/etcd.rb
134
134
  - lib/porkadot/assets/etcd/etcd-server.yaml.erb
135
135
  - lib/porkadot/assets/etcd/install.sh.erb
136
+ - lib/porkadot/assets/kubelet-default/install.sh.erb
136
137
  - lib/porkadot/assets/kubelet.rb
137
138
  - lib/porkadot/assets/kubelet/bootstrap-kubelet.conf.erb
138
139
  - lib/porkadot/assets/kubelet/config.yaml.erb
@@ -142,25 +143,34 @@ files:
142
143
  - lib/porkadot/assets/kubelet/kubelet.service.erb
143
144
  - lib/porkadot/assets/kubelet/setup-containerd.sh.erb
144
145
  - lib/porkadot/assets/kubernetes.rb
146
+ - lib/porkadot/assets/kubernetes/install.secrets.sh.erb
145
147
  - lib/porkadot/assets/kubernetes/install.sh.erb
146
148
  - lib/porkadot/assets/kubernetes/kubeconfig.yaml.erb
147
- - lib/porkadot/assets/kubernetes/manifests/000-metallb.yaml.erb
148
- - lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb
149
- - lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb
150
- - lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb
149
+ - lib/porkadot/assets/kubernetes/kustomization.yaml.erb
150
+ - lib/porkadot/assets/kubernetes/manifests/addons/coredns/coredns.yaml.erb
151
+ - lib/porkadot/assets/kubernetes/manifests/addons/coredns/dns-horizontal-autoscaler.yaml.erb
152
+ - lib/porkadot/assets/kubernetes/manifests/addons/coredns/kustomization.yaml.erb
153
+ - lib/porkadot/assets/kubernetes/manifests/addons/flannel/flannel.yaml.erb
154
+ - lib/porkadot/assets/kubernetes/manifests/addons/flannel/kustomization.yaml.erb
155
+ - lib/porkadot/assets/kubernetes/manifests/addons/kubelet-rubber-stamp/kubelet-rubber-stamp.yaml.erb
156
+ - lib/porkadot/assets/kubernetes/manifests/addons/kubelet-rubber-stamp/kustomization.yaml.erb
157
+ - lib/porkadot/assets/kubernetes/manifests/addons/kustomization.yaml.erb
158
+ - lib/porkadot/assets/kubernetes/manifests/addons/metallb/000-metallb.yaml.erb
159
+ - lib/porkadot/assets/kubernetes/manifests/addons/metallb/kustomization.yaml.erb
160
+ - lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.config.yaml.erb
161
+ - lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.secrets.yaml.erb
162
+ - lib/porkadot/assets/kubernetes/manifests/addons/metallb/metallb.yaml.erb
163
+ - lib/porkadot/assets/kubernetes/manifests/addons/storage-version-migrator/kustomization.yaml.erb
164
+ - lib/porkadot/assets/kubernetes/manifests/addons/storage-version-migrator/storage-version-migrator.yaml.erb
151
165
  - lib/porkadot/assets/kubernetes/manifests/kube-apiserver.secrets.yaml.erb
152
166
  - lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb
153
167
  - lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.secrets.yaml.erb
154
168
  - lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.yaml.erb
155
169
  - lib/porkadot/assets/kubernetes/manifests/kube-proxy.yaml.erb
156
170
  - lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb
157
- - lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb
158
171
  - lib/porkadot/assets/kubernetes/manifests/kubelet.yaml.erb
159
- - lib/porkadot/assets/kubernetes/manifests/metallb.config.yaml.erb
160
- - lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb
161
- - lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb
172
+ - lib/porkadot/assets/kubernetes/manifests/kustomization.yaml.erb
162
173
  - lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb
163
- - lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb
164
174
  - lib/porkadot/cmd.rb
165
175
  - lib/porkadot/cmd/cli.rb
166
176
  - lib/porkadot/cmd/install.rb
@@ -168,16 +178,15 @@ files:
168
178
  - lib/porkadot/cmd/render.rb
169
179
  - lib/porkadot/cmd/render/certs.rb
170
180
  - lib/porkadot/config.rb
181
+ - lib/porkadot/configs/addons.rb
171
182
  - lib/porkadot/configs/bootstrap.rb
172
183
  - lib/porkadot/configs/certs.rb
173
184
  - lib/porkadot/configs/certs/etcd.rb
174
185
  - lib/porkadot/configs/certs/front_proxy.rb
175
186
  - lib/porkadot/configs/certs/k8s.rb
176
- - lib/porkadot/configs/cni.rb
177
187
  - lib/porkadot/configs/etcd.rb
178
188
  - lib/porkadot/configs/kubelet.rb
179
189
  - lib/porkadot/configs/kubernetes.rb
180
- - lib/porkadot/configs/loadbalancer.rb
181
190
  - lib/porkadot/const.rb
182
191
  - lib/porkadot/default.yaml
183
192
  - lib/porkadot/install/base.rb
@@ -1,22 +0,0 @@
1
-
2
- module Porkadot; module Configs
3
- class Cni
4
- include Porkadot::ConfigUtils
5
- attr_reader :type
6
-
7
- def initialize config
8
- @config = config
9
- @type = config.raw.cni.type
10
- @raw = config.raw.cni.send(config.raw.cni.type.to_sym)
11
- end
12
-
13
- def target_path
14
- File.join(self.config.assets_dir, 'kubernetes')
15
- end
16
-
17
- def manifests_path
18
- File.join(self.target_path, 'manifests')
19
- end
20
-
21
- end
22
- end; end
@@ -1,26 +0,0 @@
1
-
2
- module Porkadot; module Configs
3
- class Lb
4
- include Porkadot::ConfigUtils
5
- attr_reader :type
6
-
7
- def initialize config
8
- @config = config
9
- @type = config.raw.lb.type
10
- @raw = config.raw.lb.send(config.raw.lb.type.to_sym)
11
- end
12
-
13
- def target_path
14
- File.join(self.config.assets_dir, 'kubernetes')
15
- end
16
-
17
- def manifests_path
18
- File.join(self.target_path, 'manifests')
19
- end
20
-
21
- def lb_config
22
- return self.raw.config
23
- end
24
-
25
- end
26
- end; end