porkadot 0.2.2 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 958ab6006bc337cbefb89951fcc80af8f32d4799dcf6f7090a68c7901743d2df
4
- data.tar.gz: 1b9b98c07b61d6d3ed29879e81983a65637228be7ca494d4cff45a34cd64d08e
3
+ metadata.gz: d57037f96d15fcabbd441ec706449775c89984f0b6019b1f15f863ccc970360a
4
+ data.tar.gz: 8c03689d67687fde6012cda7f0cea22e0f1c8b7b96a64942649d43e76560aaa2
5
5
  SHA512:
6
- metadata.gz: bd2e2d802c35ace23dc60f202b8314974936b77a0b00c94a2013303b9dfd13519a0d673ee4fb2ef322e1d8d97f751db6d355ea9cf6e789219059c3028085cbe3
7
- data.tar.gz: a4291b924ae9f280b2beaee9fd7cb2ed1c711cd64a1e6c11061a5b26477de5b9913c7abc9d2baaa88d6e402d0f585aec7b8bad888eaa19c16af7697cc3a57015
6
+ metadata.gz: 9a941712075f648d17b5e6a75de10ce83974945ffb7feafcd630d4695d7ba7fab501d63e4a965319957ddf6676aa893e5035b01a2b93711ce1759153e35fc0d8
7
+ data.tar.gz: cb9b0ff915cea06c91a8da7fcdd894bee593bda0ec2efe3593a4b9dd5030b42269e5ba1f29230a77b076629651e387995cd2b1022906a66848cd74b84585c713
@@ -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={}
@@ -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
@@ -32,5 +32,7 @@ streamingConnectionIdleTimeout: 0s
32
32
  syncFrequency: 0s
33
33
  volumeStatsAggPeriod: 0s
34
34
  serverTLSBootstrap: true
35
+ featureGates:
36
+ CSIMigration: false
35
37
 
36
38
  # 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
@@ -22,7 +22,8 @@ if type apt-get > /dev/null 2>&1 ;then
22
22
  nfs-common \
23
23
  socat \
24
24
  udev \
25
- util-linux
25
+ util-linux \
26
+ open-iscsi
26
27
  fi
27
28
 
28
29
  cat <<EOF > /etc/sysctl.d/k8s.conf
@@ -30,4 +31,10 @@ net.bridge.bridge-nf-call-ip6tables = 1
30
31
  net.bridge.bridge-nf-call-iptables = 1
31
32
  EOF
32
33
 
34
+ cat <<EOF > /etc/iscsi/initiatorname.iscsi
35
+ InitiatorName=iqn.2020-04.cloud.unstable:<%= config.hostname %>
36
+ EOF
37
+
38
+ systemctl restart iscsid.service
39
+
33
40
  sysctl --system
@@ -29,6 +29,8 @@ module Porkadot; module Assets
29
29
  render_erb 'manifests/kubelet.yaml'
30
30
  render_erb "manifests/#{lb.type}.yaml"
31
31
  render_erb "manifests/#{cni.type}.yaml"
32
+ render_erb "manifests/coredns.yaml"
33
+ render_erb "manifests/dns-horizontal-autoscaler.yaml"
32
34
  render_erb "manifests/kube-apiserver.yaml"
33
35
  render_secrets_erb "manifests/kube-apiserver.secrets.yaml"
34
36
  render_erb "manifests/kube-proxy.yaml"
@@ -37,6 +39,7 @@ module Porkadot; module Assets
37
39
  render_secrets_erb "manifests/kube-controller-manager.secrets.yaml"
38
40
  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,202 @@
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
+ ---
38
+ apiVersion: rbac.authorization.k8s.io/v1
39
+ kind: ClusterRoleBinding
40
+ metadata:
41
+ annotations:
42
+ rbac.authorization.kubernetes.io/autoupdate: "true"
43
+ labels:
44
+ kubernetes.io/bootstrapping: rbac-defaults
45
+ addonmanager.kubernetes.io/mode: EnsureExists
46
+ name: system:coredns
47
+ roleRef:
48
+ apiGroup: rbac.authorization.k8s.io
49
+ kind: ClusterRole
50
+ name: system:coredns
51
+ subjects:
52
+ - kind: ServiceAccount
53
+ name: coredns
54
+ namespace: kube-system
55
+ ---
56
+ apiVersion: v1
57
+ kind: ConfigMap
58
+ metadata:
59
+ name: coredns
60
+ namespace: kube-system
61
+ labels:
62
+ addonmanager.kubernetes.io/mode: EnsureExists
63
+ data:
64
+ Corefile: |
65
+ .:53 {
66
+ errors
67
+ health {
68
+ lameduck 5s
69
+ }
70
+ ready
71
+ kubernetes <%= k8s.networking.dns_domain %> in-addr.arpa ip6.arpa {
72
+ pods insecure
73
+ fallthrough in-addr.arpa ip6.arpa
74
+ ttl 30
75
+ }
76
+ prometheus :9153
77
+ forward . /etc/resolv.conf
78
+ cache 30
79
+ loop
80
+ reload
81
+ loadbalance
82
+ }
83
+ ---
84
+ apiVersion: apps/v1
85
+ kind: Deployment
86
+ metadata:
87
+ name: coredns
88
+ namespace: kube-system
89
+ labels:
90
+ k8s-app: kube-dns
91
+ kubernetes.io/cluster-service: "true"
92
+ addonmanager.kubernetes.io/mode: Reconcile
93
+ kubernetes.io/name: "CoreDNS"
94
+ spec:
95
+ # replicas: not specified here:
96
+ # 1. In order to make Addon Manager do not reconcile this replicas parameter.
97
+ # 2. Default is 1.
98
+ # 3. Will be tuned in real time if DNS horizontal auto-scaling is turned on.
99
+ strategy:
100
+ type: RollingUpdate
101
+ rollingUpdate:
102
+ maxUnavailable: 1
103
+ selector:
104
+ matchLabels:
105
+ k8s-app: kube-dns
106
+ template:
107
+ metadata:
108
+ labels:
109
+ k8s-app: kube-dns
110
+ annotations:
111
+ seccomp.security.alpha.kubernetes.io/pod: 'runtime/default'
112
+ spec:
113
+ priorityClassName: system-cluster-critical
114
+ serviceAccountName: coredns
115
+ tolerations:
116
+ - key: "CriticalAddonsOnly"
117
+ operator: "Exists"
118
+ nodeSelector:
119
+ kubernetes.io/os: linux
120
+ containers:
121
+ - name: coredns
122
+ image: k8s.gcr.io/coredns:1.6.7
123
+ imagePullPolicy: IfNotPresent
124
+ resources:
125
+ limits:
126
+ memory: 170Mi
127
+ requests:
128
+ cpu: 100m
129
+ memory: 70Mi
130
+ args: [ "-conf", "/etc/coredns/Corefile" ]
131
+ volumeMounts:
132
+ - name: config-volume
133
+ mountPath: /etc/coredns
134
+ readOnly: true
135
+ ports:
136
+ - containerPort: 53
137
+ name: dns
138
+ protocol: UDP
139
+ - containerPort: 53
140
+ name: dns-tcp
141
+ protocol: TCP
142
+ - containerPort: 9153
143
+ name: metrics
144
+ protocol: TCP
145
+ livenessProbe:
146
+ httpGet:
147
+ path: /health
148
+ port: 8080
149
+ scheme: HTTP
150
+ initialDelaySeconds: 60
151
+ timeoutSeconds: 5
152
+ successThreshold: 1
153
+ failureThreshold: 5
154
+ readinessProbe:
155
+ httpGet:
156
+ path: /ready
157
+ port: 8181
158
+ scheme: HTTP
159
+ securityContext:
160
+ allowPrivilegeEscalation: false
161
+ capabilities:
162
+ add:
163
+ - NET_BIND_SERVICE
164
+ drop:
165
+ - all
166
+ readOnlyRootFilesystem: true
167
+ dnsPolicy: Default
168
+ volumes:
169
+ - name: config-volume
170
+ configMap:
171
+ name: coredns
172
+ items:
173
+ - key: Corefile
174
+ path: Corefile
175
+ ---
176
+ apiVersion: v1
177
+ kind: Service
178
+ metadata:
179
+ name: kube-dns
180
+ namespace: kube-system
181
+ annotations:
182
+ prometheus.io/port: "9153"
183
+ prometheus.io/scrape: "true"
184
+ labels:
185
+ k8s-app: kube-dns
186
+ kubernetes.io/cluster-service: "true"
187
+ addonmanager.kubernetes.io/mode: Reconcile
188
+ kubernetes.io/name: "CoreDNS"
189
+ spec:
190
+ selector:
191
+ k8s-app: kube-dns
192
+ clusterIP: <%= k8s.networking.dns_ip %>
193
+ ports:
194
+ - name: dns
195
+ port: 53
196
+ protocol: UDP
197
+ - name: dns-tcp
198
+ port: 53
199
+ protocol: TCP
200
+ - name: metrics
201
+ port: 9153
202
+ protocol: TCP
@@ -0,0 +1,110 @@
1
+ # Copyright 2016 The Kubernetes Authors.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ kind: ServiceAccount
16
+ apiVersion: v1
17
+ metadata:
18
+ name: kube-dns-autoscaler
19
+ namespace: kube-system
20
+ labels:
21
+ addonmanager.kubernetes.io/mode: Reconcile
22
+ ---
23
+ kind: ClusterRole
24
+ apiVersion: rbac.authorization.k8s.io/v1
25
+ metadata:
26
+ name: system:kube-dns-autoscaler
27
+ labels:
28
+ addonmanager.kubernetes.io/mode: Reconcile
29
+ rules:
30
+ - apiGroups: [""]
31
+ resources: ["nodes"]
32
+ verbs: ["list", "watch"]
33
+ - apiGroups: [""]
34
+ resources: ["replicationcontrollers/scale"]
35
+ verbs: ["get", "update"]
36
+ - apiGroups: ["apps"]
37
+ resources: ["deployments/scale", "replicasets/scale"]
38
+ verbs: ["get", "update"]
39
+ # Remove the configmaps rule once below issue is fixed:
40
+ # kubernetes-incubator/cluster-proportional-autoscaler#16
41
+ - apiGroups: [""]
42
+ resources: ["configmaps"]
43
+ verbs: ["get", "create"]
44
+ ---
45
+ kind: ClusterRoleBinding
46
+ apiVersion: rbac.authorization.k8s.io/v1
47
+ metadata:
48
+ name: system:kube-dns-autoscaler
49
+ labels:
50
+ addonmanager.kubernetes.io/mode: Reconcile
51
+ subjects:
52
+ - kind: ServiceAccount
53
+ name: kube-dns-autoscaler
54
+ namespace: kube-system
55
+ roleRef:
56
+ kind: ClusterRole
57
+ name: system:kube-dns-autoscaler
58
+ apiGroup: rbac.authorization.k8s.io
59
+
60
+ ---
61
+ apiVersion: apps/v1
62
+ kind: Deployment
63
+ metadata:
64
+ name: kube-dns-autoscaler
65
+ namespace: kube-system
66
+ labels:
67
+ k8s-app: kube-dns-autoscaler
68
+ kubernetes.io/cluster-service: "true"
69
+ addonmanager.kubernetes.io/mode: Reconcile
70
+ spec:
71
+ selector:
72
+ matchLabels:
73
+ k8s-app: kube-dns-autoscaler
74
+ template:
75
+ metadata:
76
+ labels:
77
+ k8s-app: kube-dns-autoscaler
78
+ annotations:
79
+ seccomp.security.alpha.kubernetes.io/pod: 'docker/default'
80
+ spec:
81
+ priorityClassName: system-cluster-critical
82
+ securityContext:
83
+ supplementalGroups: [ 65534 ]
84
+ fsGroup: 65534
85
+ nodeSelector:
86
+ kubernetes.io/os: linux
87
+ containers:
88
+ - name: autoscaler
89
+ image: k8s.gcr.io/cluster-proportional-autoscaler-amd64:1.7.1
90
+ resources:
91
+ requests:
92
+ cpu: "20m"
93
+ memory: "10Mi"
94
+ command:
95
+ - /cluster-proportional-autoscaler
96
+ - --namespace=kube-system
97
+ - --configmap=kube-dns-autoscaler
98
+ # Should keep target in sync with cluster/addons/dns/kube-dns.yaml.base
99
+ - --target=Deployment/coredns
100
+ # When cluster is using large nodes(with more cores), "coresPerReplica" should dominate.
101
+ # If using small nodes, "nodesPerReplica" should dominate.
102
+ - --default-params={"linear":{"coresPerReplica":256,"nodesPerReplica":16,"preventSinglePointFailure":true}}
103
+ - --logtostderr=true
104
+ - --v=2
105
+ tolerations:
106
+ - key: "CriticalAddonsOnly"
107
+ operator: "Exists"
108
+ nodeSelector:
109
+ kubernetes.io/os: linux
110
+ serviceAccountName: kube-dns-autoscaler
@@ -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
@@ -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
@@ -206,7 +206,7 @@ spec:
206
206
  - "-P"
207
207
  - "FORWARD"
208
208
  - "ACCEPT"
209
- image: <%= k8s.image_repository %>/hyperkube:<%= k8s.kubernetes_version %>
209
+ image: <%= k8s.image_repository %>/kube-proxy:<%= k8s.kubernetes_version %>
210
210
  imagePullPolicy: IfNotPresent
211
211
  name: default-iptables
212
212
  securityContext:
@@ -253,7 +253,7 @@ spec:
253
253
  readOnlyRootFilesystem: true
254
254
  hostNetwork: true
255
255
  nodeSelector:
256
- beta.kubernetes.io/os: linux
256
+ kubernetes.io/os: linux
257
257
  serviceAccountName: speaker
258
258
  terminationGracePeriodSeconds: 0
259
259
  tolerations:
@@ -304,7 +304,7 @@ spec:
304
304
  - all
305
305
  readOnlyRootFilesystem: true
306
306
  nodeSelector:
307
- beta.kubernetes.io/os: linux
307
+ kubernetes.io/os: linux
308
308
  securityContext:
309
309
  runAsNonRoot: true
310
310
  runAsUser: 65534
@@ -78,7 +78,7 @@ spec:
78
78
  spec:
79
79
  containers:
80
80
  - name: pod-checkpointer
81
- image: quay.io/coreos/pod-checkpointer:83e25e5968391b9eb342042c435d1b3eeddb2be1
81
+ image: yuanying/pod-checkpointer:v0.18.0
82
82
  command:
83
83
  - /checkpoint
84
84
  - --lock-file=/var/run/lock/pod-checkpointer.lock
@@ -66,3 +66,26 @@ data:
66
66
  - context:
67
67
  cluster: local
68
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,327 @@
1
+ apiVersion: apiextensions.k8s.io/v1beta1
2
+ kind: CustomResourceDefinition
3
+ metadata:
4
+ name: storageversionmigrations.migration.k8s.io
5
+ spec:
6
+ group: migration.k8s.io
7
+ names:
8
+ kind: StorageVersionMigration
9
+ listKind: StorageVersionMigrationList
10
+ plural: storageversionmigrations
11
+ singular: storageversionmigration
12
+ scope: Cluster
13
+ subresources:
14
+ status: {}
15
+ version: v1alpha1
16
+ versions:
17
+ - name: v1alpha1
18
+ served: true
19
+ storage: true
20
+ "validation":
21
+ "openAPIV3Schema":
22
+ description: StorageVersionMigration represents a migration of stored data to
23
+ the latest storage version.
24
+ type: object
25
+ properties:
26
+ apiVersion:
27
+ description: 'APIVersion defines the versioned schema of this representation
28
+ of an object. Servers should convert recognized schemas to the latest
29
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
30
+ type: string
31
+ kind:
32
+ description: 'Kind is a string value representing the REST resource this
33
+ object represents. Servers may infer this from the endpoint the client
34
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
35
+ type: string
36
+ metadata:
37
+ type: object
38
+ spec:
39
+ description: Specification of the migration.
40
+ type: object
41
+ required:
42
+ - resource
43
+ properties:
44
+ continueToken:
45
+ description: The token used in the list options to get the next chunk
46
+ of objects to migrate. When the .status.conditions indicates the migration
47
+ is "Running", users can use this token to check the progress of the
48
+ migration.
49
+ type: string
50
+ resource:
51
+ description: The resource that is being migrated. The migrator sends
52
+ requests to the endpoint serving the resource. Immutable.
53
+ type: object
54
+ properties:
55
+ group:
56
+ description: The name of the group.
57
+ type: string
58
+ resource:
59
+ description: The name of the resource.
60
+ type: string
61
+ version:
62
+ description: The name of the version.
63
+ type: string
64
+ status:
65
+ description: Status of the migration.
66
+ type: object
67
+ properties:
68
+ conditions:
69
+ description: The latest available observations of the migration's current
70
+ state.
71
+ type: array
72
+ items:
73
+ description: Describes the state of a migration at a certain point.
74
+ type: object
75
+ required:
76
+ - status
77
+ - type
78
+ properties:
79
+ lastUpdateTime:
80
+ description: The last time this condition was updated.
81
+ type: string
82
+ format: date-time
83
+ message:
84
+ description: A human readable message indicating details about
85
+ the transition.
86
+ type: string
87
+ reason:
88
+ description: The reason for the condition's last transition.
89
+ type: string
90
+ status:
91
+ description: Status of the condition, one of True, False, Unknown.
92
+ type: string
93
+ type:
94
+ description: Type of the condition.
95
+ type: string
96
+ ---
97
+ apiVersion: apiextensions.k8s.io/v1beta1
98
+ kind: CustomResourceDefinition
99
+ metadata:
100
+ name: storagestates.migration.k8s.io
101
+ spec:
102
+ group: migration.k8s.io
103
+ names:
104
+ kind: StorageState
105
+ listKind: StorageStateList
106
+ plural: storagestates
107
+ singular: storagestate
108
+ scope: Cluster
109
+ subresources:
110
+ status: {}
111
+ version: v1alpha1
112
+ versions:
113
+ - name: v1alpha1
114
+ served: true
115
+ storage: true
116
+ "validation":
117
+ "openAPIV3Schema":
118
+ description: The state of the storage of a specific resource.
119
+ type: object
120
+ properties:
121
+ apiVersion:
122
+ description: 'APIVersion defines the versioned schema of this representation
123
+ of an object. Servers should convert recognized schemas to the latest
124
+ internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
125
+ type: string
126
+ kind:
127
+ description: 'Kind is a string value representing the REST resource this
128
+ object represents. Servers may infer this from the endpoint the client
129
+ submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
130
+ type: string
131
+ metadata:
132
+ description: The name must be "<.spec.resource.resouce>.<.spec.resource.group>".
133
+ type: object
134
+ spec:
135
+ description: Specification of the storage state.
136
+ type: object
137
+ properties:
138
+ resource:
139
+ description: The resource this storageState is about.
140
+ type: object
141
+ properties:
142
+ group:
143
+ description: The name of the group.
144
+ type: string
145
+ resource:
146
+ description: The name of the resource.
147
+ type: string
148
+ status:
149
+ description: Status of the storage state.
150
+ type: object
151
+ properties:
152
+ currentStorageVersionHash:
153
+ description: The hash value of the current storage version, as shown
154
+ in the discovery document served by the API server. Storage Version
155
+ is the version to which objects are converted to before persisted.
156
+ type: string
157
+ lastHeartbeatTime:
158
+ description: LastHeartbeatTime is the last time the storage migration
159
+ triggering controller checks the storage version hash of this resource
160
+ in the discovery document and updates this field.
161
+ type: string
162
+ format: date-time
163
+ persistedStorageVersionHashes:
164
+ description: The hash values of storage versions that persisted instances
165
+ of spec.resource might still be encoded in. "Unknown" is a valid value
166
+ in the list, and is the default value. It is not safe to upgrade or
167
+ downgrade to an apiserver binary that does not support all versions
168
+ listed in this field, or if "Unknown" is listed. Once the storage
169
+ version migration for this resource has completed, the value of this
170
+ field is refined to only contain the currentStorageVersionHash. Once
171
+ the apiserver has changed the storage version, the new storage version
172
+ is appended to the list.
173
+ type: array
174
+ items:
175
+ type: string
176
+ ---
177
+ apiVersion: v1
178
+ kind: Namespace
179
+ metadata:
180
+ name: kube-system
181
+ ---
182
+ kind: ClusterRole
183
+ apiVersion: rbac.authorization.k8s.io/v1
184
+ metadata:
185
+ name: storage-version-migration-trigger
186
+ rules:
187
+ - apiGroups: ["migration.k8s.io"]
188
+ resources: ["storagestates"]
189
+ verbs: ["watch", "get", "list", "delete", "create", "update"]
190
+ - apiGroups: ["migration.k8s.io"]
191
+ resources: ["storageversionmigrations"]
192
+ verbs: ["watch", "get", "list", "delete", "create"]
193
+ ---
194
+ kind: ClusterRole
195
+ apiVersion: rbac.authorization.k8s.io/v1
196
+ metadata:
197
+ name: storage-version-migration-crd-creator
198
+ rules:
199
+ - apiGroups: ["apiextensions.k8s.io"]
200
+ resources: ["customresourcedefinitions"]
201
+ verbs: ["create", "delete", "get"]
202
+ ---
203
+ kind: ClusterRole
204
+ apiVersion: rbac.authorization.k8s.io/v1
205
+ metadata:
206
+ name: storage-version-migration-initializer
207
+ rules:
208
+ - apiGroups: ["migration.k8s.io"]
209
+ resources: ["storageversionmigrations"]
210
+ verbs: ["create"]
211
+ ---
212
+ kind: ClusterRoleBinding
213
+ apiVersion: rbac.authorization.k8s.io/v1
214
+ metadata:
215
+ name: storage-version-migration-migrator
216
+ subjects:
217
+ - kind: ServiceAccount
218
+ name: default
219
+ namespace: kube-system
220
+ roleRef:
221
+ kind: ClusterRole
222
+ name: cluster-admin
223
+ apiGroup: rbac.authorization.k8s.io
224
+ ---
225
+ kind: ClusterRoleBinding
226
+ apiVersion: rbac.authorization.k8s.io/v1
227
+ metadata:
228
+ name: storage-version-migration-trigger
229
+ subjects:
230
+ - kind: ServiceAccount
231
+ name: default
232
+ namespace: kube-system
233
+ roleRef:
234
+ kind: ClusterRole
235
+ name: storage-version-migration-trigger
236
+ apiGroup: rbac.authorization.k8s.io
237
+ ---
238
+ kind: ClusterRoleBinding
239
+ apiVersion: rbac.authorization.k8s.io/v1
240
+ metadata:
241
+ name: storage-version-migration-crd-creator
242
+ subjects:
243
+ - kind: ServiceAccount
244
+ name: default
245
+ namespace: kube-system
246
+ roleRef:
247
+ kind: ClusterRole
248
+ name: storage-version-migration-crd-creator
249
+ apiGroup: rbac.authorization.k8s.io
250
+ ---
251
+ kind: ClusterRoleBinding
252
+ apiVersion: rbac.authorization.k8s.io/v1
253
+ metadata:
254
+ name: storage-version-migration-initializer
255
+ subjects:
256
+ - kind: ServiceAccount
257
+ name: default
258
+ namespace: kube-system
259
+ roleRef:
260
+ kind: ClusterRole
261
+ name: storage-version-migration-initializer
262
+ apiGroup: rbac.authorization.k8s.io
263
+ ---
264
+ apiVersion: apps/v1
265
+ kind: Deployment
266
+ metadata:
267
+ name: trigger
268
+ namespace: kube-system
269
+ labels:
270
+ app: trigger
271
+ spec:
272
+ replicas: 1
273
+ selector:
274
+ matchLabels:
275
+ app: trigger
276
+ template:
277
+ metadata:
278
+ labels:
279
+ app: trigger
280
+ spec:
281
+ containers:
282
+ - name: trigger
283
+ image: yuanying/storage-version-migration-trigger:v0.1
284
+ args:
285
+ - --kubeconfig=/etc/trigger/kubeconfig
286
+ volumeMounts:
287
+ - mountPath: /etc/trigger
288
+ name: kubeconfig
289
+ volumes:
290
+ - name: kubeconfig
291
+ configMap:
292
+ name: kubeconfig-in-cluster-latest
293
+ ---
294
+ apiVersion: apps/v1
295
+ kind: Deployment
296
+ metadata:
297
+ name: migrator
298
+ namespace: kube-system
299
+ labels:
300
+ app: migrator
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
+ - name: migrator
313
+ image: yuanying/storage-version-migration-migrator:v0.1
314
+ command:
315
+ - /migrator
316
+ - --v=2
317
+ - --alsologtostderr
318
+ - --kube-api-qps=40
319
+ - --kube-api-burst=1000
320
+ - --kubeconfig=/etc/migrator/kubeconfig
321
+ volumeMounts:
322
+ - mountPath: /etc/migrator
323
+ name: kubeconfig
324
+ volumes:
325
+ - name: kubeconfig
326
+ configMap:
327
+ name: kubeconfig-in-cluster-latest
@@ -33,6 +33,12 @@ module Porkadot; module Configs; class Certs
33
33
  DNS:kubernetes.default
34
34
  DNS:kubernetes.default.svc
35
35
  DNS:kubernetes.default.svc.#{self.config.k8s.networking.dns_domain}
36
+ DNS:porkadot-kubernetes
37
+ DNS:porkadot-kubernetes.kube-system
38
+ DNS:porkadot-kubernetes.kube-system.svc
39
+ DNS:porkadot-kubernetes-latest
40
+ DNS:porkadot-kubernetes-latest.kube-system
41
+ DNS:porkadot-kubernetes-latest.kube-system.svc
36
42
  DNS:localhost
37
43
  IP:#{self.config.k8s.networking.kubernetes_ip}
38
44
  IP:127.0.0.1
@@ -56,6 +56,7 @@ module Porkadot; module Configs
56
56
  "#{RECOMMENDED_LABEL_PREFIX}/version": self.config.k8s.kubernetes_version,
57
57
  "#{RECOMMENDED_LABEL_PREFIX}/part-of": 'kubernetes',
58
58
  "#{RECOMMENDED_LABEL_PREFIX}/managed-by": 'porkadot',
59
+ "k8s-app": self.component_name,
59
60
  })
60
61
  end
61
62
 
@@ -27,10 +27,11 @@ lb:
27
27
 
28
28
  etcd:
29
29
  image_repository: gcr.io/etcd-development/etcd
30
- image_tag: v3.3.10
30
+ image_tag: v3.4.3
31
+ extra_env: []
31
32
 
32
33
  kubernetes:
33
- kubernetes_version: v1.17.3
34
+ kubernetes_version: v1.18.10
34
35
  image_repository: k8s.gcr.io
35
36
 
36
37
  networking:
@@ -1,3 +1,3 @@
1
1
  module Porkadot
2
- VERSION = "0.2.2"
2
+ VERSION = "0.18.0"
3
3
  end
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.2.2
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - OTSUKA, Yuanying
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-15 00:00:00.000000000 Z
11
+ date: 2020-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -140,6 +140,8 @@ files:
140
140
  - lib/porkadot/assets/kubelet/kubelet.service.erb
141
141
  - lib/porkadot/assets/kubernetes.rb
142
142
  - lib/porkadot/assets/kubernetes/install.sh.erb
143
+ - lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb
144
+ - lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb
143
145
  - lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb
144
146
  - lib/porkadot/assets/kubernetes/manifests/kube-apiserver.secrets.yaml.erb
145
147
  - lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb
@@ -152,6 +154,7 @@ files:
152
154
  - lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb
153
155
  - lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb
154
156
  - lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb
157
+ - lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb
155
158
  - lib/porkadot/cmd.rb
156
159
  - lib/porkadot/cmd/cli.rb
157
160
  - lib/porkadot/cmd/install.rb