porkadot 0.2.0 → 0.19.0
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.
- checksums.yaml +4 -4
- data/hack/gen-storage-version-migrator.sh +7 -0
- data/hack/storage-version-migrator/kustomization.yaml +13 -0
- data/lib/porkadot/assets.rb +9 -0
- data/lib/porkadot/assets/etcd.rb +1 -1
- data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +2 -0
- data/lib/porkadot/assets/kubelet/config.yaml.erb +3 -0
- data/lib/porkadot/assets/kubelet/install-deps.sh.erb +11 -0
- data/lib/porkadot/assets/kubelet/install-pkgs.sh.erb +25 -2
- data/lib/porkadot/assets/kubelet/kubelet.service.erb +3 -1
- data/lib/porkadot/assets/kubernetes.rb +4 -1
- data/lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb +209 -0
- data/lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb +110 -0
- data/lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb +52 -431
- data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +1 -1
- data/lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb +12 -3
- data/lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb +13 -0
- data/lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb +116 -26
- data/lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb +23 -1
- data/lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb +354 -0
- data/lib/porkadot/cmd/render/certs.rb +1 -1
- data/lib/porkadot/configs/certs.rb +1 -1
- data/lib/porkadot/configs/certs/k8s.rb +6 -0
- data/lib/porkadot/configs/kubernetes.rb +1 -0
- data/lib/porkadot/default.yaml +4 -3
- data/lib/porkadot/version.rb +1 -1
- metadata +8 -3
- data/lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb +0 -130
@@ -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.
|
27
|
+
image: yuanying/kubelet-rubber-stamp:0.3.0.y01
|
28
28
|
args:
|
29
29
|
- "--v=2"
|
30
30
|
imagePullPolicy: Always
|
@@ -51,17 +51,26 @@ roleRef:
|
|
51
51
|
name: kubelet-rubber-stamp
|
52
52
|
apiGroup: rbac.authorization.k8s.io
|
53
53
|
---
|
54
|
-
apiVersion: rbac.authorization.k8s.io/
|
54
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
55
55
|
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
|
-
-
|
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
|
-
|
235
|
-
|
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:
|
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.
|
291
|
-
imagePullPolicy:
|
380
|
+
image: metallb/controller:v0.9.5
|
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
|
-
|
397
|
+
kubernetes.io/os: linux
|
308
398
|
securityContext:
|
309
399
|
runAsNonRoot: true
|
310
400
|
runAsUser: 65534
|
@@ -36,7 +36,6 @@ spec:
|
|
36
36
|
<%= k.to_s %>: <%= v %>
|
37
37
|
<%- end -%>
|
38
38
|
<%- _, port = global_config.k8s.control_plane_endpoint_host_and_port -%>
|
39
|
-
loadBalancerIP: <%= host %>
|
40
39
|
ports:
|
41
40
|
- name: https
|
42
41
|
port: <%= port %>
|
@@ -67,3 +66,26 @@ data:
|
|
67
66
|
- context:
|
68
67
|
cluster: local
|
69
68
|
user: service-account
|
69
|
+
---
|
70
|
+
apiVersion: v1
|
71
|
+
kind: ConfigMap
|
72
|
+
metadata:
|
73
|
+
name: kubeconfig-in-cluster-latest
|
74
|
+
namespace: kube-system
|
75
|
+
data:
|
76
|
+
kubeconfig: |
|
77
|
+
apiVersion: v1
|
78
|
+
clusters:
|
79
|
+
- name: local
|
80
|
+
cluster:
|
81
|
+
server: https://porkadot-kubernetes-latest:<%= port %>
|
82
|
+
certificate-authority: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
83
|
+
users:
|
84
|
+
- name: service-account
|
85
|
+
user:
|
86
|
+
# Use service account token
|
87
|
+
tokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
|
88
|
+
contexts:
|
89
|
+
- context:
|
90
|
+
cluster: local
|
91
|
+
user: service-account
|
@@ -0,0 +1,354 @@
|
|
1
|
+
apiVersion: v1
|
2
|
+
kind: Namespace
|
3
|
+
metadata:
|
4
|
+
name: kube-system
|
5
|
+
---
|
6
|
+
apiVersion: apiextensions.k8s.io/v1
|
7
|
+
kind: CustomResourceDefinition
|
8
|
+
metadata:
|
9
|
+
annotations:
|
10
|
+
api-approved.kubernetes.io: https://github.com/kubernetes/enhancements/pull/747
|
11
|
+
name: storagestates.migration.k8s.io
|
12
|
+
spec:
|
13
|
+
group: migration.k8s.io
|
14
|
+
names:
|
15
|
+
kind: StorageState
|
16
|
+
listKind: StorageStateList
|
17
|
+
plural: storagestates
|
18
|
+
singular: storagestate
|
19
|
+
preserveUnknownFields: false
|
20
|
+
scope: Cluster
|
21
|
+
versions:
|
22
|
+
- name: v1alpha1
|
23
|
+
schema:
|
24
|
+
openAPIV3Schema:
|
25
|
+
description: The state of the storage of a specific resource.
|
26
|
+
properties:
|
27
|
+
apiVersion:
|
28
|
+
description: 'APIVersion defines the versioned schema of this representation
|
29
|
+
of an object. Servers should convert recognized schemas to the latest
|
30
|
+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
31
|
+
type: string
|
32
|
+
kind:
|
33
|
+
description: 'Kind is a string value representing the REST resource this
|
34
|
+
object represents. Servers may infer this from the endpoint the client
|
35
|
+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
36
|
+
type: string
|
37
|
+
metadata:
|
38
|
+
properties:
|
39
|
+
name:
|
40
|
+
description: name must be "<.spec.resource.resouce>.<.spec.resource.group>".
|
41
|
+
type: string
|
42
|
+
type: object
|
43
|
+
spec:
|
44
|
+
description: Specification of the storage state.
|
45
|
+
properties:
|
46
|
+
resource:
|
47
|
+
description: The resource this storageState is about.
|
48
|
+
properties:
|
49
|
+
group:
|
50
|
+
description: The name of the group.
|
51
|
+
type: string
|
52
|
+
resource:
|
53
|
+
description: The name of the resource.
|
54
|
+
type: string
|
55
|
+
type: object
|
56
|
+
type: object
|
57
|
+
status:
|
58
|
+
description: Status of the storage state.
|
59
|
+
properties:
|
60
|
+
currentStorageVersionHash:
|
61
|
+
description: The hash value of the current storage version, as shown
|
62
|
+
in the discovery document served by the API server. Storage Version
|
63
|
+
is the version to which objects are converted to before persisted.
|
64
|
+
type: string
|
65
|
+
lastHeartbeatTime:
|
66
|
+
description: LastHeartbeatTime is the last time the storage migration
|
67
|
+
triggering controller checks the storage version hash of this resource
|
68
|
+
in the discovery document and updates this field.
|
69
|
+
format: date-time
|
70
|
+
type: string
|
71
|
+
persistedStorageVersionHashes:
|
72
|
+
description: The hash values of storage versions that persisted instances
|
73
|
+
of spec.resource might still be encoded in. "Unknown" is a valid
|
74
|
+
value in the list, and is the default value. It is not safe to upgrade
|
75
|
+
or downgrade to an apiserver binary that does not support all versions
|
76
|
+
listed in this field, or if "Unknown" is listed. Once the storage
|
77
|
+
version migration for this resource has completed, the value of
|
78
|
+
this field is refined to only contain the currentStorageVersionHash.
|
79
|
+
Once the apiserver has changed the storage version, the new storage
|
80
|
+
version is appended to the list.
|
81
|
+
items:
|
82
|
+
type: string
|
83
|
+
type: array
|
84
|
+
type: object
|
85
|
+
type: object
|
86
|
+
served: true
|
87
|
+
storage: true
|
88
|
+
subresources:
|
89
|
+
status: {}
|
90
|
+
---
|
91
|
+
apiVersion: apiextensions.k8s.io/v1
|
92
|
+
kind: CustomResourceDefinition
|
93
|
+
metadata:
|
94
|
+
annotations:
|
95
|
+
api-approved.kubernetes.io: https://github.com/kubernetes/community/pull/2524
|
96
|
+
name: storageversionmigrations.migration.k8s.io
|
97
|
+
spec:
|
98
|
+
group: migration.k8s.io
|
99
|
+
names:
|
100
|
+
kind: StorageVersionMigration
|
101
|
+
listKind: StorageVersionMigrationList
|
102
|
+
plural: storageversionmigrations
|
103
|
+
singular: storageversionmigration
|
104
|
+
preserveUnknownFields: false
|
105
|
+
scope: Cluster
|
106
|
+
versions:
|
107
|
+
- name: v1alpha1
|
108
|
+
schema:
|
109
|
+
openAPIV3Schema:
|
110
|
+
description: StorageVersionMigration represents a migration of stored data
|
111
|
+
to the latest storage version.
|
112
|
+
properties:
|
113
|
+
apiVersion:
|
114
|
+
description: 'APIVersion defines the versioned schema of this representation
|
115
|
+
of an object. Servers should convert recognized schemas to the latest
|
116
|
+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
|
117
|
+
type: string
|
118
|
+
kind:
|
119
|
+
description: 'Kind is a string value representing the REST resource this
|
120
|
+
object represents. Servers may infer this from the endpoint the client
|
121
|
+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
|
122
|
+
type: string
|
123
|
+
metadata:
|
124
|
+
type: object
|
125
|
+
spec:
|
126
|
+
description: Specification of the migration.
|
127
|
+
properties:
|
128
|
+
continueToken:
|
129
|
+
description: The token used in the list options to get the next chunk
|
130
|
+
of objects to migrate. When the .status.conditions indicates the
|
131
|
+
migration is "Running", users can use this token to check the progress
|
132
|
+
of the migration.
|
133
|
+
type: string
|
134
|
+
resource:
|
135
|
+
description: The resource that is being migrated. The migrator sends
|
136
|
+
requests to the endpoint serving the resource. Immutable.
|
137
|
+
properties:
|
138
|
+
group:
|
139
|
+
description: The name of the group.
|
140
|
+
type: string
|
141
|
+
resource:
|
142
|
+
description: The name of the resource.
|
143
|
+
type: string
|
144
|
+
version:
|
145
|
+
description: The name of the version.
|
146
|
+
type: string
|
147
|
+
type: object
|
148
|
+
required:
|
149
|
+
- resource
|
150
|
+
type: object
|
151
|
+
status:
|
152
|
+
description: Status of the migration.
|
153
|
+
properties:
|
154
|
+
conditions:
|
155
|
+
description: The latest available observations of the migration's
|
156
|
+
current state.
|
157
|
+
items:
|
158
|
+
description: Describes the state of a migration at a certain point.
|
159
|
+
properties:
|
160
|
+
lastUpdateTime:
|
161
|
+
description: The last time this condition was updated.
|
162
|
+
format: date-time
|
163
|
+
type: string
|
164
|
+
message:
|
165
|
+
description: A human readable message indicating details about
|
166
|
+
the transition.
|
167
|
+
type: string
|
168
|
+
reason:
|
169
|
+
description: The reason for the condition's last transition.
|
170
|
+
type: string
|
171
|
+
status:
|
172
|
+
description: Status of the condition, one of True, False, Unknown.
|
173
|
+
type: string
|
174
|
+
type:
|
175
|
+
description: Type of the condition.
|
176
|
+
type: string
|
177
|
+
required:
|
178
|
+
- status
|
179
|
+
- type
|
180
|
+
type: object
|
181
|
+
type: array
|
182
|
+
type: object
|
183
|
+
type: object
|
184
|
+
served: true
|
185
|
+
storage: true
|
186
|
+
subresources:
|
187
|
+
status: {}
|
188
|
+
---
|
189
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
190
|
+
kind: ClusterRole
|
191
|
+
metadata:
|
192
|
+
name: storage-version-migration-crd-creator
|
193
|
+
rules:
|
194
|
+
- apiGroups:
|
195
|
+
- apiextensions.k8s.io
|
196
|
+
resources:
|
197
|
+
- customresourcedefinitions
|
198
|
+
verbs:
|
199
|
+
- create
|
200
|
+
- delete
|
201
|
+
- get
|
202
|
+
---
|
203
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
204
|
+
kind: ClusterRole
|
205
|
+
metadata:
|
206
|
+
name: storage-version-migration-initializer
|
207
|
+
rules:
|
208
|
+
- apiGroups:
|
209
|
+
- migration.k8s.io
|
210
|
+
resources:
|
211
|
+
- storageversionmigrations
|
212
|
+
verbs:
|
213
|
+
- create
|
214
|
+
---
|
215
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
216
|
+
kind: ClusterRole
|
217
|
+
metadata:
|
218
|
+
name: storage-version-migration-trigger
|
219
|
+
rules:
|
220
|
+
- apiGroups:
|
221
|
+
- migration.k8s.io
|
222
|
+
resources:
|
223
|
+
- storagestates
|
224
|
+
verbs:
|
225
|
+
- watch
|
226
|
+
- get
|
227
|
+
- list
|
228
|
+
- delete
|
229
|
+
- create
|
230
|
+
- update
|
231
|
+
- apiGroups:
|
232
|
+
- migration.k8s.io
|
233
|
+
resources:
|
234
|
+
- storageversionmigrations
|
235
|
+
verbs:
|
236
|
+
- watch
|
237
|
+
- get
|
238
|
+
- list
|
239
|
+
- delete
|
240
|
+
- create
|
241
|
+
---
|
242
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
243
|
+
kind: ClusterRoleBinding
|
244
|
+
metadata:
|
245
|
+
name: storage-version-migration-crd-creator
|
246
|
+
roleRef:
|
247
|
+
apiGroup: rbac.authorization.k8s.io
|
248
|
+
kind: ClusterRole
|
249
|
+
name: storage-version-migration-crd-creator
|
250
|
+
subjects:
|
251
|
+
- kind: ServiceAccount
|
252
|
+
name: default
|
253
|
+
namespace: kube-system
|
254
|
+
---
|
255
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
256
|
+
kind: ClusterRoleBinding
|
257
|
+
metadata:
|
258
|
+
name: storage-version-migration-initializer
|
259
|
+
roleRef:
|
260
|
+
apiGroup: rbac.authorization.k8s.io
|
261
|
+
kind: ClusterRole
|
262
|
+
name: storage-version-migration-initializer
|
263
|
+
subjects:
|
264
|
+
- kind: ServiceAccount
|
265
|
+
name: default
|
266
|
+
namespace: kube-system
|
267
|
+
---
|
268
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
269
|
+
kind: ClusterRoleBinding
|
270
|
+
metadata:
|
271
|
+
name: storage-version-migration-migrator
|
272
|
+
roleRef:
|
273
|
+
apiGroup: rbac.authorization.k8s.io
|
274
|
+
kind: ClusterRole
|
275
|
+
name: cluster-admin
|
276
|
+
subjects:
|
277
|
+
- kind: ServiceAccount
|
278
|
+
name: default
|
279
|
+
namespace: kube-system
|
280
|
+
---
|
281
|
+
apiVersion: rbac.authorization.k8s.io/v1
|
282
|
+
kind: ClusterRoleBinding
|
283
|
+
metadata:
|
284
|
+
name: storage-version-migration-trigger
|
285
|
+
roleRef:
|
286
|
+
apiGroup: rbac.authorization.k8s.io
|
287
|
+
kind: ClusterRole
|
288
|
+
name: storage-version-migration-trigger
|
289
|
+
subjects:
|
290
|
+
- kind: ServiceAccount
|
291
|
+
name: default
|
292
|
+
namespace: kube-system
|
293
|
+
---
|
294
|
+
apiVersion: apps/v1
|
295
|
+
kind: Deployment
|
296
|
+
metadata:
|
297
|
+
labels:
|
298
|
+
app: migrator
|
299
|
+
name: migrator
|
300
|
+
namespace: kube-system
|
301
|
+
spec:
|
302
|
+
replicas: 1
|
303
|
+
selector:
|
304
|
+
matchLabels:
|
305
|
+
app: migrator
|
306
|
+
template:
|
307
|
+
metadata:
|
308
|
+
labels:
|
309
|
+
app: migrator
|
310
|
+
spec:
|
311
|
+
containers:
|
312
|
+
- command:
|
313
|
+
- /migrator
|
314
|
+
- --v=2
|
315
|
+
- --alsologtostderr
|
316
|
+
- --kube-api-qps=40
|
317
|
+
- --kube-api-burst=1000
|
318
|
+
image: asia.gcr.io/k8s-artifacts-prod/storage-migrator/storage-version-migration-migrator:v0.0.3
|
319
|
+
livenessProbe:
|
320
|
+
httpGet:
|
321
|
+
path: /healthz
|
322
|
+
port: 2112
|
323
|
+
scheme: HTTP
|
324
|
+
initialDelaySeconds: 10
|
325
|
+
timeoutSeconds: 60
|
326
|
+
name: migrator
|
327
|
+
---
|
328
|
+
apiVersion: apps/v1
|
329
|
+
kind: Deployment
|
330
|
+
metadata:
|
331
|
+
labels:
|
332
|
+
app: trigger
|
333
|
+
name: trigger
|
334
|
+
namespace: kube-system
|
335
|
+
spec:
|
336
|
+
replicas: 1
|
337
|
+
selector:
|
338
|
+
matchLabels:
|
339
|
+
app: trigger
|
340
|
+
template:
|
341
|
+
metadata:
|
342
|
+
labels:
|
343
|
+
app: trigger
|
344
|
+
spec:
|
345
|
+
containers:
|
346
|
+
- image: asia.gcr.io/k8s-artifacts-prod/storage-migrator/storage-version-migration-trigger:v0.0.3
|
347
|
+
livenessProbe:
|
348
|
+
httpGet:
|
349
|
+
path: /healthz
|
350
|
+
port: 2113
|
351
|
+
scheme: HTTP
|
352
|
+
initialDelaySeconds: 10
|
353
|
+
timeoutSeconds: 60
|
354
|
+
name: trigger
|