hetzner-k3s 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +6 -6
- data/README.md +4 -1
- data/bin/build.sh +3 -3
- data/lib/hetzner/infra/server.rb +12 -2
- data/lib/hetzner/k3s/cluster.rb +33 -28
- data/lib/hetzner/k3s/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 60167b5a135a2932bff53b3d030b22940e3a7a943584ab9645d420fdfa2f59f4
|
4
|
+
data.tar.gz: 6b36f71696ffb4f94d1dfde94b5215c46b9f92fc482c0da148ea84c0cfa5a56f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 73242160d8701cfb92332bf18aefcf7e2c15275493b2e4dedfc16d1e577367e91e338b2c57fc3d5731a5f68317751e1644b7d2be4d505371ee1543f04365685f
|
7
|
+
data.tar.gz: 2da1c1ef1bf32b3c403868d47bc94fbeee1ad8479aa1272db9141c749b695e70489c85c19f8e891fd332a91de6deda000d273e959f1d1d6a1e88edf9efe4310f
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
hetzner-k3s (0.4.
|
4
|
+
hetzner-k3s (0.4.5)
|
5
5
|
bcrypt_pbkdf
|
6
6
|
ed25519
|
7
7
|
http
|
@@ -20,12 +20,12 @@ GEM
|
|
20
20
|
diff-lcs (1.4.4)
|
21
21
|
domain_name (0.5.20190701)
|
22
22
|
unf (>= 0.0.5, < 1.0.0)
|
23
|
-
dry-configurable (0.
|
23
|
+
dry-configurable (0.13.0)
|
24
24
|
concurrent-ruby (~> 1.0)
|
25
|
-
dry-core (~> 0.
|
26
|
-
dry-container (0.
|
25
|
+
dry-core (~> 0.6)
|
26
|
+
dry-container (0.9.0)
|
27
27
|
concurrent-ruby (~> 1.0)
|
28
|
-
dry-configurable (~> 0.
|
28
|
+
dry-configurable (~> 0.13, >= 0.13.0)
|
29
29
|
dry-core (0.7.1)
|
30
30
|
concurrent-ruby (~> 1.0)
|
31
31
|
dry-equalizer (0.3.0)
|
@@ -99,7 +99,7 @@ GEM
|
|
99
99
|
to_regexp (0.2.1)
|
100
100
|
unf (0.1.4)
|
101
101
|
unf_ext
|
102
|
-
unf_ext (0.0.
|
102
|
+
unf_ext (0.0.8)
|
103
103
|
yajl-ruby (1.4.1)
|
104
104
|
yaml-safe_load_stream (0.1.1)
|
105
105
|
|
data/README.md
CHANGED
@@ -38,7 +38,7 @@ This will install the `hetzner-k3s` executable in your PATH.
|
|
38
38
|
Alternatively, if you don't want to set up a Ruby runtime but have Docker installed, you can use a container. Run the following from inside the directory where you have the config file for the cluster (described in the next section):
|
39
39
|
|
40
40
|
```bash
|
41
|
-
docker run --rm -it -v ${PWD}:/cluster -v ${HOME}/.ssh:/tmp/.ssh vitobotta/hetzner-k3s:v0.4.
|
41
|
+
docker run --rm -it -v ${PWD}:/cluster -v ${HOME}/.ssh:/tmp/.ssh vitobotta/hetzner-k3s:v0.4.6 create-cluster --config-file /cluster/test.yaml
|
42
42
|
```
|
43
43
|
|
44
44
|
Replace `test.yaml` with the name of your config file.
|
@@ -242,6 +242,9 @@ I recommend that you create a separate Hetzner project for each cluster, because
|
|
242
242
|
|
243
243
|
## changelog
|
244
244
|
|
245
|
+
- 0.4.5
|
246
|
+
- Added a check to abort gracefully when for some reason one or more servers are not created, for example due to temporary problems with the Hetzner API.
|
247
|
+
|
245
248
|
- 0.4.5
|
246
249
|
- Fix network creation (bug introduced in the previous version)
|
247
250
|
|
data/bin/build.sh
CHANGED
@@ -6,9 +6,9 @@ set -e
|
|
6
6
|
|
7
7
|
IMAGE="vitobotta/hetzner-k3s"
|
8
8
|
|
9
|
-
docker build -t ${IMAGE}:v0.4.
|
9
|
+
docker build -t ${IMAGE}:v0.4.6 \
|
10
10
|
--platform=linux/amd64 \
|
11
|
-
--cache-from ${IMAGE}:v0.4.
|
11
|
+
--cache-from ${IMAGE}:v0.4.5 \
|
12
12
|
--build-arg BUILDKIT_INLINE_CACHE=1 .
|
13
13
|
|
14
|
-
docker push vitobotta/hetzner-k3s:v0.4.
|
14
|
+
docker push vitobotta/hetzner-k3s:v0.4.6
|
data/lib/hetzner/infra/server.rb
CHANGED
@@ -40,12 +40,22 @@ module Hetzner
|
|
40
40
|
placement_group: placement_group_id
|
41
41
|
}
|
42
42
|
|
43
|
-
response = hetzner_client.post("/servers", server_config)
|
43
|
+
response = hetzner_client.post("/servers", server_config)
|
44
|
+
response_body = response.body
|
45
|
+
|
46
|
+
server = JSON.parse(response_body)["server"]
|
47
|
+
|
48
|
+
unless server
|
49
|
+
puts "Error creating server #{server_name}. Response details below:"
|
50
|
+
puts
|
51
|
+
p response
|
52
|
+
return
|
53
|
+
end
|
44
54
|
|
45
55
|
puts "...server #{server_name} created."
|
46
56
|
puts
|
47
57
|
|
48
|
-
|
58
|
+
server
|
49
59
|
end
|
50
60
|
|
51
61
|
def delete(server_name:)
|
data/lib/hetzner/k3s/cluster.rb
CHANGED
@@ -157,6 +157,11 @@ class Cluster
|
|
157
157
|
|
158
158
|
threads.each(&:join) unless threads.empty?
|
159
159
|
|
160
|
+
if server_configs.size != servers.size
|
161
|
+
puts "Something went wrong while creating some servers, please try again."
|
162
|
+
exit 1
|
163
|
+
end
|
164
|
+
|
160
165
|
puts
|
161
166
|
threads = servers.map do |server|
|
162
167
|
Thread.new { wait_for_ssh server }
|
@@ -230,28 +235,28 @@ class Cluster
|
|
230
235
|
taint = schedule_workloads_on_masters? ? " " : " --node-taint CriticalAddonsOnly=true:NoExecute "
|
231
236
|
|
232
237
|
<<~EOF
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
238
|
+
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="#{k3s_version}" K3S_TOKEN="#{k3s_token}" INSTALL_K3S_EXEC="server \
|
239
|
+
--disable-cloud-controller \
|
240
|
+
--disable servicelb \
|
241
|
+
--disable traefik \
|
242
|
+
--disable local-storage \
|
243
|
+
--disable metrics-server \
|
244
|
+
--write-kubeconfig-mode=644 \
|
245
|
+
--node-name="$(hostname -f)" \
|
246
|
+
--cluster-cidr=10.244.0.0/16 \
|
247
|
+
--etcd-expose-metrics=true \
|
248
|
+
--kube-controller-manager-arg="address=0.0.0.0" \
|
249
|
+
--kube-controller-manager-arg="bind-address=0.0.0.0" \
|
250
|
+
--kube-proxy-arg="metrics-bind-address=0.0.0.0" \
|
251
|
+
--kube-scheduler-arg="address=0.0.0.0" \
|
252
|
+
--kube-scheduler-arg="bind-address=0.0.0.0" \
|
253
|
+
#{taint} \
|
254
|
+
--kubelet-arg="cloud-provider=external" \
|
255
|
+
--advertise-address=$(hostname -I | awk '{print $2}') \
|
256
|
+
--node-ip=$(hostname -I | awk '{print $2}') \
|
257
|
+
--node-external-ip=$(hostname -I | awk '{print $1}') \
|
258
|
+
--flannel-iface=#{flannel_interface} \
|
259
|
+
#{server} #{tls_sans}" sh -
|
255
260
|
EOF
|
256
261
|
end
|
257
262
|
|
@@ -259,12 +264,12 @@ class Cluster
|
|
259
264
|
flannel_interface = find_flannel_interface(worker)
|
260
265
|
|
261
266
|
<<~EOF
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
267
|
+
curl -sfL https://get.k3s.io | K3S_TOKEN="#{k3s_token}" INSTALL_K3S_VERSION="#{k3s_version}" K3S_URL=https://#{first_master_private_ip}:6443 INSTALL_K3S_EXEC="agent \
|
268
|
+
--node-name="$(hostname -f)" \
|
269
|
+
--kubelet-arg="cloud-provider=external" \
|
270
|
+
--node-ip=$(hostname -I | awk '{print $2}') \
|
271
|
+
--node-external-ip=$(hostname -I | awk '{print $1}') \
|
272
|
+
--flannel-iface=#{flannel_interface}" sh -
|
268
273
|
EOF
|
269
274
|
end
|
270
275
|
|
data/lib/hetzner/k3s/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hetzner-k3s
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vito Botta
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|