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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/hack/gen-storage-version-migrator.sh +7 -0
  3. data/hack/storage-version-migrator/kustomization.yaml +77 -0
  4. data/lib/porkadot/assets.rb +9 -0
  5. data/lib/porkadot/assets/bootstrap/manifests/kube-apiserver.bootstrap.yaml.erb +4 -30
  6. data/lib/porkadot/assets/bootstrap/manifests/kube-controller-manager.bootstrap.yaml.erb +13 -16
  7. data/lib/porkadot/assets/bootstrap/manifests/kube-proxy.bootstrap.yaml.erb +3 -2
  8. data/lib/porkadot/assets/bootstrap/manifests/kube-scheduler.bootstrap.yaml.erb +3 -5
  9. data/lib/porkadot/assets/etcd/etcd-server.yaml.erb +2 -0
  10. data/lib/porkadot/assets/kubelet.rb +1 -0
  11. data/lib/porkadot/assets/kubelet/config.yaml.erb +3 -0
  12. data/lib/porkadot/assets/kubelet/install-deps.sh.erb +11 -0
  13. data/lib/porkadot/assets/kubelet/install-pkgs.sh.erb +19 -2
  14. data/lib/porkadot/assets/kubelet/kubelet.service.erb +3 -1
  15. data/lib/porkadot/assets/kubelet/setup-containerd.sh.erb +10 -0
  16. data/lib/porkadot/assets/kubernetes.rb +4 -1
  17. data/lib/porkadot/assets/kubernetes/manifests/coredns.yaml.erb +209 -0
  18. data/lib/porkadot/assets/kubernetes/manifests/dns-horizontal-autoscaler.yaml.erb +110 -0
  19. data/lib/porkadot/assets/kubernetes/manifests/flannel.yaml.erb +52 -431
  20. data/lib/porkadot/assets/kubernetes/manifests/kube-scheduler.yaml.erb +1 -1
  21. data/lib/porkadot/assets/kubernetes/manifests/kubelet-rubber-stamp.yaml.erb +12 -3
  22. data/lib/porkadot/assets/kubernetes/manifests/metallb.secrets.yaml.erb +13 -0
  23. data/lib/porkadot/assets/kubernetes/manifests/metallb.yaml.erb +116 -26
  24. data/lib/porkadot/assets/kubernetes/manifests/porkadot.yaml.erb +23 -0
  25. data/lib/porkadot/assets/kubernetes/manifests/storage-version-migrator.yaml.erb +357 -0
  26. data/lib/porkadot/cmd/cli.rb +16 -0
  27. data/lib/porkadot/cmd/render/certs.rb +1 -1
  28. data/lib/porkadot/configs/certs/k8s.rb +6 -0
  29. data/lib/porkadot/configs/kubernetes.rb +30 -1
  30. data/lib/porkadot/default.yaml +4 -3
  31. data/lib/porkadot/install/kubelet.rb +24 -0
  32. data/lib/porkadot/version.rb +1 -1
  33. metadata +9 -3
  34. data/lib/porkadot/assets/kubernetes/manifests/pod-checkpointer.yaml.erb +0 -130
@@ -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
@@ -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.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: cgroupfs
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 = []
@@ -1,3 +1,3 @@
1
1
  module Porkadot
2
- VERSION = "0.2.2"
2
+ VERSION = "0.19.1"
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.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: 2020-04-15 00:00:00.000000000 Z
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