porkadot 0.1.0 → 0.18.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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/porkadot/assets.rb +24 -0
  3. data/lib/porkadot/assets/bootstrap.rb +2 -2
  4. data/lib/porkadot/assets/etcd.rb +4 -1
  5. data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +2 -0
  6. data/lib/porkadot/assets/kubelet.rb +3 -0
  7. data/lib/porkadot/assets/kubelet/config.yaml.erb +2 -0
  8. data/lib/porkadot/assets/kubelet/install-deps.sh.erb +21 -3
  9. data/lib/porkadot/assets/kubelet/install-pkgs.sh.erb +9 -1
  10. data/lib/porkadot/assets/kubernetes.rb +9 -0
  11. data/lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb +202 -0
  12. data/lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb +110 -0
  13. data/lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb +10 -10
  14. data/lib/porkadot/assets/kubernetes/manifests/kube-apiserver.secrets.yaml.erb +37 -0
  15. data/lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb +0 -36
  16. data/lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.secrets.yaml.erb +16 -0
  17. data/lib/porkadot/assets/kubernetes/manifests/kube-controller-manager.yaml.erb +0 -15
  18. data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +1 -1
  19. data/lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb +11 -2
  20. data/lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb +13 -0
  21. data/lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb +116 -26
  22. data/lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb +1 -1
  23. data/lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb +23 -1
  24. data/lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb +327 -0
  25. data/lib/porkadot/config.rb +8 -0
  26. data/lib/porkadot/configs/bootstrap.rb +13 -1
  27. data/lib/porkadot/configs/certs.rb +1 -1
  28. data/lib/porkadot/configs/certs/k8s.rb +6 -0
  29. data/lib/porkadot/configs/etcd.rb +7 -3
  30. data/lib/porkadot/configs/kubelet.rb +9 -1
  31. data/lib/porkadot/configs/kubernetes.rb +9 -0
  32. data/lib/porkadot/default.yaml +3 -2
  33. data/lib/porkadot/install/bootstrap.rb +7 -0
  34. data/lib/porkadot/install/kubelet.rb +4 -0
  35. data/lib/porkadot/install/kubernetes.rb +4 -0
  36. data/lib/porkadot/version.rb +1 -1
  37. metadata +8 -2
@@ -154,11 +154,11 @@ spec:
154
154
  requiredDuringSchedulingIgnoredDuringExecution:
155
155
  nodeSelectorTerms:
156
156
  - matchExpressions:
157
- - key: beta.kubernetes.io/os
157
+ - key: kubernetes.io/os
158
158
  operator: In
159
159
  values:
160
160
  - linux
161
- - key: beta.kubernetes.io/arch
161
+ - key: kubernetes.io/arch
162
162
  operator: In
163
163
  values:
164
164
  - amd64
@@ -248,11 +248,11 @@ spec:
248
248
  requiredDuringSchedulingIgnoredDuringExecution:
249
249
  nodeSelectorTerms:
250
250
  - matchExpressions:
251
- - key: beta.kubernetes.io/os
251
+ - key: kubernetes.io/os
252
252
  operator: In
253
253
  values:
254
254
  - linux
255
- - key: beta.kubernetes.io/arch
255
+ - key: kubernetes.io/arch
256
256
  operator: In
257
257
  values:
258
258
  - arm64
@@ -342,11 +342,11 @@ spec:
342
342
  requiredDuringSchedulingIgnoredDuringExecution:
343
343
  nodeSelectorTerms:
344
344
  - matchExpressions:
345
- - key: beta.kubernetes.io/os
345
+ - key: kubernetes.io/os
346
346
  operator: In
347
347
  values:
348
348
  - linux
349
- - key: beta.kubernetes.io/arch
349
+ - key: kubernetes.io/arch
350
350
  operator: In
351
351
  values:
352
352
  - arm
@@ -436,11 +436,11 @@ spec:
436
436
  requiredDuringSchedulingIgnoredDuringExecution:
437
437
  nodeSelectorTerms:
438
438
  - matchExpressions:
439
- - key: beta.kubernetes.io/os
439
+ - key: kubernetes.io/os
440
440
  operator: In
441
441
  values:
442
442
  - linux
443
- - key: beta.kubernetes.io/arch
443
+ - key: kubernetes.io/arch
444
444
  operator: In
445
445
  values:
446
446
  - ppc64le
@@ -530,11 +530,11 @@ spec:
530
530
  requiredDuringSchedulingIgnoredDuringExecution:
531
531
  nodeSelectorTerms:
532
532
  - matchExpressions:
533
- - key: beta.kubernetes.io/os
533
+ - key: kubernetes.io/os
534
534
  operator: In
535
535
  values:
536
536
  - linux
537
- - key: beta.kubernetes.io/arch
537
+ - key: kubernetes.io/arch
538
538
  operator: In
539
539
  values:
540
540
  - s390x
@@ -0,0 +1,37 @@
1
+ <% k8s = global_config.k8s -%>
2
+ ---
3
+ apiVersion: v1
4
+ data:
5
+ apiserver.crt: <%= certs.kubernetes.to_base64(:apiserver_cert) %>
6
+ apiserver.key: <%= certs.kubernetes.to_base64(:apiserver_key) %>
7
+ ca.crt: <%= certs.kubernetes.to_base64(:ca_cert) %>
8
+ front-proxy-ca.crt: <%= certs.front_proxy.to_base64(:ca_cert) %>
9
+ front-proxy-client.crt: <%= certs.front_proxy.to_base64(:client_cert) %>
10
+ front-proxy-client.key: <%= certs.front_proxy.to_base64(:client_key) %>
11
+ kubelet-client.crt: <%= certs.kubernetes.to_base64(:kubelet_client_cert) %>
12
+ kubelet-client.key: <%= certs.kubernetes.to_base64(:kubelet_client_key) %>
13
+ sa.pub: <%= certs.kubernetes.to_base64(:sa_public_key) %>
14
+ kind: Secret
15
+ metadata:
16
+ name: kube-apiserver
17
+ namespace: kube-system
18
+ labels:
19
+ <%- k8s.apiserver.labels.each do |k, v| -%>
20
+ <%= k.to_s %>: <%= v %>
21
+ <%- end -%>
22
+ type: Opaque
23
+ ---
24
+ apiVersion: v1
25
+ data:
26
+ ca.crt: <%= certs.etcd.to_base64(:ca_cert) %>
27
+ etcd-client.crt: <%= certs.etcd.to_base64(:client_cert) %>
28
+ etcd-client.key: <%= certs.etcd.to_base64(:client_key) %>
29
+ kind: Secret
30
+ metadata:
31
+ name: etcd-tls
32
+ namespace: kube-system
33
+ labels:
34
+ <%- k8s.apiserver.labels.each do |k, v| -%>
35
+ <%= k.to_s %>: <%= v %>
36
+ <%- end -%>
37
+ type: Opaque
@@ -1,41 +1,5 @@
1
1
  <% k8s = global_config.k8s -%>
2
2
  ---
3
- apiVersion: v1
4
- data:
5
- apiserver.crt: <%= certs.kubernetes.to_base64(:apiserver_cert) %>
6
- apiserver.key: <%= certs.kubernetes.to_base64(:apiserver_key) %>
7
- ca.crt: <%= certs.kubernetes.to_base64(:ca_cert) %>
8
- front-proxy-ca.crt: <%= certs.front_proxy.to_base64(:ca_cert) %>
9
- front-proxy-client.crt: <%= certs.front_proxy.to_base64(:client_cert) %>
10
- front-proxy-client.key: <%= certs.front_proxy.to_base64(:client_key) %>
11
- kubelet-client.crt: <%= certs.kubernetes.to_base64(:kubelet_client_cert) %>
12
- kubelet-client.key: <%= certs.kubernetes.to_base64(:kubelet_client_key) %>
13
- sa.pub: <%= certs.kubernetes.to_base64(:sa_public_key) %>
14
- kind: Secret
15
- metadata:
16
- name: kube-apiserver
17
- namespace: kube-system
18
- labels:
19
- <%- k8s.apiserver.labels.each do |k, v| -%>
20
- <%= k.to_s %>: <%= v %>
21
- <%- end -%>
22
- type: Opaque
23
- ---
24
- apiVersion: v1
25
- data:
26
- ca.crt: <%= certs.etcd.to_base64(:ca_cert) %>
27
- etcd-client.crt: <%= certs.etcd.to_base64(:client_cert) %>
28
- etcd-client.key: <%= certs.etcd.to_base64(:client_key) %>
29
- kind: Secret
30
- metadata:
31
- name: etcd-tls
32
- namespace: kube-system
33
- labels:
34
- <%- k8s.apiserver.labels.each do |k, v| -%>
35
- <%= k.to_s %>: <%= v %>
36
- <%- end -%>
37
- type: Opaque
38
- ---
39
3
  apiVersion: "apps/v1"
40
4
  kind: DaemonSet
41
5
  metadata:
@@ -0,0 +1,16 @@
1
+ <% k8s = global_config.k8s -%>
2
+ ---
3
+ apiVersion: v1
4
+ data:
5
+ ca.crt: <%= certs.kubernetes.to_base64(:ca_cert) %>
6
+ ca.key: <%= certs.kubernetes.to_base64(:ca_key) %>
7
+ sa.key: <%= certs.kubernetes.to_base64(:sa_private_key) %>
8
+ kind: Secret
9
+ metadata:
10
+ name: kube-controller-manager
11
+ namespace: kube-system
12
+ labels:
13
+ <%- k8s.controller_manager.labels.each do |k, v| -%>
14
+ <%= k.to_s %>: <%= v %>
15
+ <%- end -%>
16
+ type: Opaque
@@ -44,21 +44,6 @@ metadata:
44
44
  <%= k.to_s %>: <%= v %>
45
45
  <%- end -%>
46
46
  ---
47
- apiVersion: v1
48
- data:
49
- ca.crt: <%= certs.kubernetes.to_base64(:ca_cert) %>
50
- ca.key: <%= certs.kubernetes.to_base64(:ca_key) %>
51
- sa.key: <%= certs.kubernetes.to_base64(:sa_private_key) %>
52
- kind: Secret
53
- metadata:
54
- name: kube-controller-manager
55
- namespace: kube-system
56
- labels:
57
- <%- k8s.controller_manager.labels.each do |k, v| -%>
58
- <%= k.to_s %>: <%= v %>
59
- <%- end -%>
60
- type: Opaque
61
- ---
62
47
  apiVersion: apps/v1
63
48
  kind: Deployment
64
49
  metadata:
@@ -62,7 +62,7 @@ rules:
62
62
  verbs: ["get", "watch", "list"]
63
63
  - apiGroups: [""] # "" indicates the core API group
64
64
  resources: ["secrets", "configmaps"]
65
- verbs: ["get"]
65
+ verbs: ["get", "watch", "list"]
66
66
  ---
67
67
  apiVersion: rbac.authorization.k8s.io/v1
68
68
  kind: RoleBinding
@@ -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.2.0.y01
27
+ image: yuanying/kubelet-rubber-stamp:0.3.0.y01
28
28
  args:
29
29
  - "--v=2"
30
30
  imagePullPolicy: Always
@@ -56,12 +56,21 @@ kind: ClusterRole
56
56
  metadata:
57
57
  name: kubelet-rubber-stamp
58
58
  rules:
59
+ - apiGroups:
60
+ - certificates.k8s.io
61
+ resources:
62
+ - signers
63
+ # legacy-unknown: support before kubernetes-1.18.0
64
+ resourceNames:
65
+ - "kubernetes.io/legacy-unknown"
66
+ - "kubernetes.io/kubelet-serving"
67
+ verbs:
68
+ - approve
59
69
  - apiGroups:
60
70
  - certificates.k8s.io
61
71
  resources:
62
72
  - certificatesigningrequests
63
73
  verbs:
64
- - delete
65
74
  - get
66
75
  - list
67
76
  - watch
@@ -0,0 +1,13 @@
1
+ <% require 'securerandom' -%>
2
+ <% k8s = global_config.k8s -%>
3
+ ---
4
+ apiVersion: v1
5
+ stringData:
6
+ secretkey: <%= SecureRandom.base64(128) %>
7
+ kind: Secret
8
+ metadata:
9
+ name: memberlist
10
+ namespace: metallb-system
11
+ labels:
12
+ app: metallb
13
+ type: Opaque
@@ -8,6 +8,48 @@ metadata:
8
8
  ---
9
9
  apiVersion: policy/v1beta1
10
10
  kind: PodSecurityPolicy
11
+ metadata:
12
+ labels:
13
+ app: metallb
14
+ name: controller
15
+ namespace: metallb-system
16
+ spec:
17
+ allowPrivilegeEscalation: false
18
+ allowedCapabilities: []
19
+ allowedHostPaths: []
20
+ defaultAddCapabilities: []
21
+ defaultAllowPrivilegeEscalation: false
22
+ fsGroup:
23
+ ranges:
24
+ - max: 65535
25
+ min: 1
26
+ rule: MustRunAs
27
+ hostIPC: false
28
+ hostNetwork: false
29
+ hostPID: false
30
+ privileged: false
31
+ readOnlyRootFilesystem: true
32
+ requiredDropCapabilities:
33
+ - ALL
34
+ runAsUser:
35
+ ranges:
36
+ - max: 65535
37
+ min: 1
38
+ rule: MustRunAs
39
+ seLinux:
40
+ rule: RunAsAny
41
+ supplementalGroups:
42
+ ranges:
43
+ - max: 65535
44
+ min: 1
45
+ rule: MustRunAs
46
+ volumes:
47
+ - configMap
48
+ - secret
49
+ - emptyDir
50
+ ---
51
+ apiVersion: policy/v1beta1
52
+ kind: PodSecurityPolicy
11
53
  metadata:
12
54
  labels:
13
55
  app: metallb
@@ -19,13 +61,21 @@ spec:
19
61
  - NET_ADMIN
20
62
  - NET_RAW
21
63
  - SYS_ADMIN
64
+ allowedHostPaths: []
65
+ defaultAddCapabilities: []
66
+ defaultAllowPrivilegeEscalation: false
22
67
  fsGroup:
23
68
  rule: RunAsAny
69
+ hostIPC: false
24
70
  hostNetwork: true
71
+ hostPID: false
25
72
  hostPorts:
26
73
  - max: 7472
27
74
  min: 7472
28
75
  privileged: true
76
+ readOnlyRootFilesystem: true
77
+ requiredDropCapabilities:
78
+ - ALL
29
79
  runAsUser:
30
80
  rule: RunAsAny
31
81
  seLinux:
@@ -33,7 +83,9 @@ spec:
33
83
  supplementalGroups:
34
84
  rule: RunAsAny
35
85
  volumes:
36
- - '*'
86
+ - configMap
87
+ - secret
88
+ - emptyDir
37
89
  ---
38
90
  apiVersion: v1
39
91
  kind: ServiceAccount
@@ -80,6 +132,14 @@ rules:
80
132
  verbs:
81
133
  - create
82
134
  - patch
135
+ - apiGroups:
136
+ - policy
137
+ resourceNames:
138
+ - controller
139
+ resources:
140
+ - podsecuritypolicies
141
+ verbs:
142
+ - use
83
143
  ---
84
144
  apiVersion: rbac.authorization.k8s.io/v1
85
145
  kind: ClusterRole
@@ -106,7 +166,7 @@ rules:
106
166
  - create
107
167
  - patch
108
168
  - apiGroups:
109
- - extensions
169
+ - policy
110
170
  resourceNames:
111
171
  - speaker
112
172
  resources:
@@ -132,6 +192,21 @@ rules:
132
192
  - watch
133
193
  ---
134
194
  apiVersion: rbac.authorization.k8s.io/v1
195
+ kind: Role
196
+ metadata:
197
+ labels:
198
+ app: metallb
199
+ name: pod-lister
200
+ namespace: metallb-system
201
+ rules:
202
+ - apiGroups:
203
+ - ''
204
+ resources:
205
+ - pods
206
+ verbs:
207
+ - list
208
+ ---
209
+ apiVersion: rbac.authorization.k8s.io/v1
135
210
  kind: ClusterRoleBinding
136
211
  metadata:
137
212
  labels:
@@ -178,6 +253,21 @@ subjects:
178
253
  - kind: ServiceAccount
179
254
  name: speaker
180
255
  ---
256
+ apiVersion: rbac.authorization.k8s.io/v1
257
+ kind: RoleBinding
258
+ metadata:
259
+ labels:
260
+ app: metallb
261
+ name: pod-lister
262
+ namespace: metallb-system
263
+ roleRef:
264
+ apiGroup: rbac.authorization.k8s.io
265
+ kind: Role
266
+ name: pod-lister
267
+ subjects:
268
+ - kind: ServiceAccount
269
+ name: speaker
270
+ ---
181
271
  apiVersion: apps/v1
182
272
  kind: DaemonSet
183
273
  metadata:
@@ -200,24 +290,6 @@ spec:
200
290
  app: metallb
201
291
  component: speaker
202
292
  spec:
203
- initContainers:
204
- - command:
205
- - "iptables"
206
- - "-P"
207
- - "FORWARD"
208
- - "ACCEPT"
209
- image: <%= k8s.image_repository %>/hyperkube:<%= k8s.kubernetes_version %>
210
- imagePullPolicy: IfNotPresent
211
- name: default-iptables
212
- securityContext:
213
- allowPrivilegeEscalation: false
214
- capabilities:
215
- add:
216
- - NET_ADMIN
217
- - NET_RAW
218
- drop:
219
- - ALL
220
- readOnlyRootFilesystem: true
221
293
  containers:
222
294
  - args:
223
295
  - --port=7472
@@ -231,8 +303,26 @@ spec:
231
303
  valueFrom:
232
304
  fieldRef:
233
305
  fieldPath: status.hostIP
234
- image: metallb/speaker:v0.8.2
235
- imagePullPolicy: IfNotPresent
306
+ - name: METALLB_ML_BIND_ADDR
307
+ valueFrom:
308
+ fieldRef:
309
+ fieldPath: status.podIP
310
+ # needed when another software is also using memberlist / port 7946
311
+ #- name: METALLB_ML_BIND_PORT
312
+ # value: "7946"
313
+ - name: METALLB_ML_LABELS
314
+ value: "app=metallb,component=speaker"
315
+ - name: METALLB_ML_NAMESPACE
316
+ valueFrom:
317
+ fieldRef:
318
+ fieldPath: metadata.namespace
319
+ - name: METALLB_ML_SECRET_KEY
320
+ valueFrom:
321
+ secretKeyRef:
322
+ name: memberlist
323
+ key: secretkey
324
+ image: metallb/speaker:v0.9.4
325
+ imagePullPolicy: Always
236
326
  name: speaker
237
327
  ports:
238
328
  - containerPort: 7472
@@ -255,7 +345,7 @@ spec:
255
345
  nodeSelector:
256
346
  beta.kubernetes.io/os: linux
257
347
  serviceAccountName: speaker
258
- terminationGracePeriodSeconds: 0
348
+ terminationGracePeriodSeconds: 2
259
349
  tolerations:
260
350
  - effect: NoSchedule
261
351
  key: node-role.kubernetes.io/master
@@ -287,8 +377,8 @@ spec:
287
377
  - args:
288
378
  - --port=7472
289
379
  - --config=config
290
- image: metallb/controller:v0.8.2
291
- imagePullPolicy: IfNotPresent
380
+ image: metallb/controller:v0.9.4
381
+ imagePullPolicy: Always
292
382
  name: controller
293
383
  ports:
294
384
  - containerPort: 7472
@@ -304,7 +394,7 @@ spec:
304
394
  - all
305
395
  readOnlyRootFilesystem: true
306
396
  nodeSelector:
307
- beta.kubernetes.io/os: linux
397
+ kubernetes.io/os: linux
308
398
  securityContext:
309
399
  runAsNonRoot: true
310
400
  runAsUser: 65534