hetzner-k3s 0.4.5 → 0.4.6
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/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
|