porkadot 0.2.2 → 0.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/hack/gen-storage-version-migrator.sh +7 -0
- data/hack/storage-version-migrator/kustomization.yaml +77 -0
- data/lib/porkadot/assets.rb +9 -0
- data/lib/porkadot/assets/bootstrap/manifests/kube-apiserver.bootstrap.yaml.erb +4 -30
- data/lib/porkadot/assets/bootstrap/manifests/kube-controller-manager.bootstrap.yaml.erb +13 -16
- data/lib/porkadot/assets/bootstrap/manifests/kube-proxy.bootstrap.yaml.erb +3 -2
- data/lib/porkadot/assets/bootstrap/manifests/kube-scheduler.bootstrap.yaml.erb +3 -5
- data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +2 -0
- data/lib/porkadot/assets/kubelet.rb +1 -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 +19 -2
- data/lib/porkadot/assets/kubelet/kubelet.service.erb +3 -1
- data/lib/porkadot/assets/kubelet/setup-containerd.sh.erb +10 -0
- 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 -0
- data/lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb +357 -0
- data/lib/porkadot/cmd/cli.rb +16 -0
- data/lib/porkadot/cmd/render/certs.rb +1 -1
- data/lib/porkadot/configs/certs/k8s.rb +6 -0
- data/lib/porkadot/configs/kubernetes.rb +30 -1
- data/lib/porkadot/default.yaml +4 -3
- data/lib/porkadot/install/kubelet.rb +24 -0
- data/lib/porkadot/version.rb +1 -1
- metadata +9 -3
- data/lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb +0 -130
data/lib/porkadot/cmd/cli.rb
CHANGED
@@ -13,6 +13,22 @@ module Porkadot; module Cmd
|
|
13
13
|
desc "install", "Install kubernetes"
|
14
14
|
subcommand "install", Porkadot::Cmd::Install::Cli
|
15
15
|
|
16
|
+
desc "setup-containerd", "Setup containerd"
|
17
|
+
option :node, type: :string
|
18
|
+
option :force, type: :boolean, default: false
|
19
|
+
def setup_containerd
|
20
|
+
logger.info "Setup containerd"
|
21
|
+
kubelets = Porkadot::Install::KubeletList.new(self.config)
|
22
|
+
nodes = []
|
23
|
+
if node = options[:node]
|
24
|
+
nodes = kubelets[node]
|
25
|
+
else
|
26
|
+
nodes = kubelets.kubelets.values
|
27
|
+
end
|
28
|
+
kubelets.setup_containerd hosts: nodes, force: options[:force]
|
29
|
+
""
|
30
|
+
end
|
31
|
+
|
16
32
|
desc "set-config", "Set cluster to kubeconfig"
|
17
33
|
def set_config
|
18
34
|
name = config.k8s.cluster_name
|
@@ -40,7 +40,7 @@ module Porkadot; module Cmd; module Render; module Certs
|
|
40
40
|
certs.apiserver_cert(true)
|
41
41
|
logger.info "--> Kubelet client key and certs"
|
42
42
|
certs.kubelet_client_key
|
43
|
-
certs.kubelet_client_cert
|
43
|
+
certs.kubelet_client_cert(true)
|
44
44
|
# logger.info "--> Bootstrap client key and certs"
|
45
45
|
# bootstrap_client_key = self.private_key(self.assets.k8s_bootstrap_key_path)
|
46
46
|
# self.client_cert(self.assets.k8s_bootstrap_cert_path, '/O=porkadot:node-bootstrappers/CN=node-bootstrapper', bootstrap_client_key, ca_cert, ca_key)
|
@@ -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
|
|
@@ -68,11 +69,14 @@ module Porkadot; module Configs
|
|
68
69
|
}
|
69
70
|
end
|
70
71
|
|
71
|
-
def args
|
72
|
+
def args bootstrap: false
|
72
73
|
extra = {}
|
73
74
|
if self.extra_args
|
74
75
|
extra = self.extra_args.map{|i| i.split('=', 2)}.to_h
|
75
76
|
end
|
77
|
+
if bootstrap
|
78
|
+
extra = self.bootstrap_args.merge(extra)
|
79
|
+
end
|
76
80
|
return self.default_args.merge(extra)
|
77
81
|
end
|
78
82
|
|
@@ -95,6 +99,10 @@ module Porkadot; module Configs
|
|
95
99
|
'kube-apiserver'
|
96
100
|
end
|
97
101
|
|
102
|
+
def bootstrap_args
|
103
|
+
return {}
|
104
|
+
end
|
105
|
+
|
98
106
|
def default_args
|
99
107
|
return %W(
|
100
108
|
--advertise-address=$(POD_IP)
|
@@ -102,6 +110,7 @@ module Porkadot; module Configs
|
|
102
110
|
--authorization-mode=Node,RBAC
|
103
111
|
--bind-address=0.0.0.0
|
104
112
|
--client-ca-file=/etc/kubernetes/pki/kubernetes/ca.crt
|
113
|
+
--enable-admission-plugins=NodeRestriction
|
105
114
|
--enable-bootstrap-token-auth=true
|
106
115
|
--etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt
|
107
116
|
--etcd-certfile=/etc/kubernetes/pki/etcd/etcd-client.crt
|
@@ -142,6 +151,14 @@ module Porkadot; module Configs
|
|
142
151
|
'kube-scheduler'
|
143
152
|
end
|
144
153
|
|
154
|
+
def bootstrap_args
|
155
|
+
return %W(
|
156
|
+
--kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
|
157
|
+
--authentication-kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
|
158
|
+
--authorization-kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
|
159
|
+
).map {|i| i.split('=', 2)}.to_h
|
160
|
+
end
|
161
|
+
|
145
162
|
def default_args
|
146
163
|
return %W(
|
147
164
|
--leader-elect=true
|
@@ -163,6 +180,12 @@ module Porkadot; module Configs
|
|
163
180
|
'kube-controller-manager'
|
164
181
|
end
|
165
182
|
|
183
|
+
def bootstrap_args
|
184
|
+
return %W(
|
185
|
+
--kubeconfig=/etc/kubernetes/bootstrap/kubeconfig-bootstrap.yaml
|
186
|
+
).map {|i| i.split('=', 2)}.to_h
|
187
|
+
end
|
188
|
+
|
166
189
|
def default_args
|
167
190
|
return %W(
|
168
191
|
--allocate-node-cidrs=true
|
@@ -201,6 +224,12 @@ module Porkadot; module Configs
|
|
201
224
|
'kube-proxy'
|
202
225
|
end
|
203
226
|
|
227
|
+
def bootstrap_args
|
228
|
+
return %W(
|
229
|
+
--config=/etc/kubernetes/bootstrap/kube-proxy-bootstrap.yaml
|
230
|
+
).map {|i| i.split('=', 2)}.to_h
|
231
|
+
end
|
232
|
+
|
204
233
|
def default_args
|
205
234
|
return %W(
|
206
235
|
--config=/var/lib/kube-proxy/config.conf
|
data/lib/porkadot/default.yaml
CHANGED
@@ -27,10 +27,11 @@ lb:
|
|
27
27
|
|
28
28
|
etcd:
|
29
29
|
image_repository: gcr.io/etcd-development/etcd
|
30
|
-
image_tag: v3.3
|
30
|
+
image_tag: v3.4.3
|
31
|
+
extra_env: []
|
31
32
|
|
32
33
|
kubernetes:
|
33
|
-
kubernetes_version: v1.
|
34
|
+
kubernetes_version: v1.19.6
|
34
35
|
image_repository: k8s.gcr.io
|
35
36
|
|
36
37
|
networking:
|
@@ -101,7 +102,7 @@ kubernetes:
|
|
101
102
|
webhook:
|
102
103
|
cacheAuthorizedTTL: 0s
|
103
104
|
cacheUnauthorizedTTL: 0s
|
104
|
-
cgroupDriver:
|
105
|
+
cgroupDriver: systemd
|
105
106
|
clusterDNS: []
|
106
107
|
clusterDomain: cluster.local
|
107
108
|
cpuManagerReconcilePeriod: 0s
|
@@ -16,6 +16,30 @@ module Porkadot; module Install
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
def setup_containerd hosts: nil, force: false
|
20
|
+
unless hosts
|
21
|
+
hosts = []
|
22
|
+
self.kubelets.each do |_, v|
|
23
|
+
hosts << v
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
on(hosts) do |host|
|
28
|
+
execute(:mkdir, '-p', Porkadot::Install::KUBE_TEMP)
|
29
|
+
if test("[ -d #{KUBE_TEMP} ]")
|
30
|
+
execute(:rm, '-rf', KUBE_TEMP)
|
31
|
+
execute(:rm, '-rf', KUBE_SECRETS_TEMP)
|
32
|
+
end
|
33
|
+
upload! host.config.target_path, KUBE_TEMP, recursive: true
|
34
|
+
upload! host.config.target_secrets_path, KUBE_SECRETS_TEMP, recursive: true
|
35
|
+
execute(:cp, '-r', KUBE_SECRETS_TEMP + '/*', KUBE_TEMP)
|
36
|
+
|
37
|
+
as user: 'root' do
|
38
|
+
execute(:bash, File.join(KUBE_TEMP, 'setup-containerd.sh'))
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
19
43
|
def install hosts: nil, force: false
|
20
44
|
unless hosts
|
21
45
|
hosts = []
|
data/lib/porkadot/version.rb
CHANGED
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.
|
4
|
+
version: 0.19.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- OTSUKA, Yuanying
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -113,6 +113,8 @@ files:
|
|
113
113
|
- config/porkadot.yaml
|
114
114
|
- config/unstable.yaml
|
115
115
|
- exe/porkadot
|
116
|
+
- hack/gen-storage-version-migrator.sh
|
117
|
+
- hack/storage-version-migrator/kustomization.yaml
|
116
118
|
- lib/porkadot.rb
|
117
119
|
- lib/porkadot/assets.rb
|
118
120
|
- lib/porkadot/assets/bootstrap.rb
|
@@ -138,8 +140,11 @@ files:
|
|
138
140
|
- lib/porkadot/assets/kubelet/install-pkgs.sh.erb
|
139
141
|
- lib/porkadot/assets/kubelet/install.sh.erb
|
140
142
|
- lib/porkadot/assets/kubelet/kubelet.service.erb
|
143
|
+
- lib/porkadot/assets/kubelet/setup-containerd.sh.erb
|
141
144
|
- lib/porkadot/assets/kubernetes.rb
|
142
145
|
- lib/porkadot/assets/kubernetes/install.sh.erb
|
146
|
+
- lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb
|
147
|
+
- lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb
|
143
148
|
- lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb
|
144
149
|
- lib/porkadot/assets/kubernetes/manifests/kube-apiserver.secrets.yaml.erb
|
145
150
|
- lib/porkadot/assets/kubernetes/manifests/kube-apiserver.yaml.erb
|
@@ -149,9 +154,10 @@ files:
|
|
149
154
|
- lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb
|
150
155
|
- lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb
|
151
156
|
- lib/porkadot/assets/kubernetes/manifests/kubelet.yaml.erb
|
157
|
+
- lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb
|
152
158
|
- lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb
|
153
|
-
- lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb
|
154
159
|
- lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb
|
160
|
+
- lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb
|
155
161
|
- lib/porkadot/cmd.rb
|
156
162
|
- lib/porkadot/cmd/cli.rb
|
157
163
|
- lib/porkadot/cmd/install.rb
|
@@ -1,130 +0,0 @@
|
|
1
|
-
<% k8s = global_config.k8s -%>
|
2
|
-
---
|
3
|
-
apiVersion: v1
|
4
|
-
kind: ServiceAccount
|
5
|
-
metadata:
|
6
|
-
name: pod-checkpointer
|
7
|
-
namespace: kube-system
|
8
|
-
---
|
9
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
10
|
-
kind: Role
|
11
|
-
metadata:
|
12
|
-
name: pod-checkpointer
|
13
|
-
namespace: kube-system
|
14
|
-
rules:
|
15
|
-
- apiGroups: [""] # "" indicates the core API group
|
16
|
-
resources: ["pods"]
|
17
|
-
verbs: ["get", "watch", "list"]
|
18
|
-
- apiGroups: [""] # "" indicates the core API group
|
19
|
-
resources: ["secrets", "configmaps"]
|
20
|
-
verbs: ["get"]
|
21
|
-
---
|
22
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
23
|
-
kind: RoleBinding
|
24
|
-
metadata:
|
25
|
-
name: pod-checkpointer
|
26
|
-
namespace: kube-system
|
27
|
-
roleRef:
|
28
|
-
apiGroup: rbac.authorization.k8s.io
|
29
|
-
kind: Role
|
30
|
-
name: pod-checkpointer
|
31
|
-
subjects:
|
32
|
-
- kind: ServiceAccount
|
33
|
-
name: pod-checkpointer
|
34
|
-
namespace: kube-system
|
35
|
-
---
|
36
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
37
|
-
kind: ClusterRole
|
38
|
-
metadata:
|
39
|
-
name: pod-checkpointer
|
40
|
-
rules:
|
41
|
-
- apiGroups: [""]
|
42
|
-
resources: ["nodes", "nodes/proxy"]
|
43
|
-
verbs: ["get"]
|
44
|
-
---
|
45
|
-
apiVersion: rbac.authorization.k8s.io/v1
|
46
|
-
kind: ClusterRoleBinding
|
47
|
-
metadata:
|
48
|
-
name: pod-checkpointer
|
49
|
-
roleRef:
|
50
|
-
apiGroup: rbac.authorization.k8s.io
|
51
|
-
kind: ClusterRole
|
52
|
-
name: pod-checkpointer
|
53
|
-
subjects:
|
54
|
-
- kind: ServiceAccount
|
55
|
-
name: pod-checkpointer
|
56
|
-
namespace: kube-system
|
57
|
-
---
|
58
|
-
apiVersion: apps/v1
|
59
|
-
kind: DaemonSet
|
60
|
-
metadata:
|
61
|
-
name: pod-checkpointer
|
62
|
-
namespace: kube-system
|
63
|
-
labels:
|
64
|
-
tier: control-plane
|
65
|
-
k8s-app: pod-checkpointer
|
66
|
-
spec:
|
67
|
-
selector:
|
68
|
-
matchLabels:
|
69
|
-
tier: control-plane
|
70
|
-
k8s-app: pod-checkpointer
|
71
|
-
template:
|
72
|
-
metadata:
|
73
|
-
labels:
|
74
|
-
tier: control-plane
|
75
|
-
k8s-app: pod-checkpointer
|
76
|
-
annotations:
|
77
|
-
checkpointer.alpha.coreos.com/checkpoint: "true"
|
78
|
-
spec:
|
79
|
-
containers:
|
80
|
-
- name: pod-checkpointer
|
81
|
-
image: quay.io/coreos/pod-checkpointer:83e25e5968391b9eb342042c435d1b3eeddb2be1
|
82
|
-
command:
|
83
|
-
- /checkpoint
|
84
|
-
- --lock-file=/var/run/lock/pod-checkpointer.lock
|
85
|
-
- --kubeconfig=/etc/checkpointer/kubeconfig
|
86
|
-
- --checkpoint-grace-period=5m
|
87
|
-
env:
|
88
|
-
- name: NODE_NAME
|
89
|
-
valueFrom:
|
90
|
-
fieldRef:
|
91
|
-
fieldPath: spec.nodeName
|
92
|
-
- name: POD_NAME
|
93
|
-
valueFrom:
|
94
|
-
fieldRef:
|
95
|
-
fieldPath: metadata.name
|
96
|
-
- name: POD_NAMESPACE
|
97
|
-
valueFrom:
|
98
|
-
fieldRef:
|
99
|
-
fieldPath: metadata.namespace
|
100
|
-
imagePullPolicy: Always
|
101
|
-
volumeMounts:
|
102
|
-
- mountPath: /etc/checkpointer
|
103
|
-
name: kubeconfig
|
104
|
-
- mountPath: /etc/kubernetes
|
105
|
-
name: etc-kubernetes
|
106
|
-
- mountPath: /var/run
|
107
|
-
name: var-run
|
108
|
-
serviceAccountName: pod-checkpointer
|
109
|
-
hostNetwork: true
|
110
|
-
nodeSelector:
|
111
|
-
k8s.unstable.cloud/master: ""
|
112
|
-
restartPolicy: Always
|
113
|
-
tolerations:
|
114
|
-
- key: node-role.kubernetes.io/master
|
115
|
-
operator: Exists
|
116
|
-
effect: NoSchedule
|
117
|
-
volumes:
|
118
|
-
- name: kubeconfig
|
119
|
-
configMap:
|
120
|
-
name: kubeconfig-in-cluster
|
121
|
-
- name: etc-kubernetes
|
122
|
-
hostPath:
|
123
|
-
path: /etc/kubernetes
|
124
|
-
- name: var-run
|
125
|
-
hostPath:
|
126
|
-
path: /var/run
|
127
|
-
updateStrategy:
|
128
|
-
rollingUpdate:
|
129
|
-
maxUnavailable: 1
|
130
|
-
type: RollingUpdate
|