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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ffa9a3f4a629e25c670c3d4b3301aed094275d320db95e038ceac3e3ebebe1e2
4
- data.tar.gz: ada1a6fb351c70f5c3a2ad52139b96911bcaa99b7d2351c89f770204dc9883c2
3
+ metadata.gz: 60167b5a135a2932bff53b3d030b22940e3a7a943584ab9645d420fdfa2f59f4
4
+ data.tar.gz: 6b36f71696ffb4f94d1dfde94b5215c46b9f92fc482c0da148ea84c0cfa5a56f
5
5
  SHA512:
6
- metadata.gz: 6dcd87e350acedf02f21bc7732f6515c74a3ee4482f554f982a05bfa96be39bda1d205014a3ff66efc8ea69fda545a9b5fc363ab8f6f0f16036ddebe87b3fc16
7
- data.tar.gz: 2789c63c71e81b9334c9e95de8cd0e0f088f2f40bedaaf942e18003de70bac24535164f5ef225e6a9568360293611d1e20d192b1a88f306e425fb44e96a1d211
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.3)
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.12.1)
23
+ dry-configurable (0.13.0)
24
24
  concurrent-ruby (~> 1.0)
25
- dry-core (~> 0.5, >= 0.5.0)
26
- dry-container (0.8.0)
25
+ dry-core (~> 0.6)
26
+ dry-container (0.9.0)
27
27
  concurrent-ruby (~> 1.0)
28
- dry-configurable (~> 0.1, >= 0.1.3)
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.7.7)
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.5 create-cluster --config-file /cluster/test.yaml
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.5 \
9
+ docker build -t ${IMAGE}:v0.4.6 \
10
10
  --platform=linux/amd64 \
11
- --cache-from ${IMAGE}:v0.4.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.5
14
+ docker push vitobotta/hetzner-k3s:v0.4.6
@@ -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).body
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
- JSON.parse(response)["server"]
58
+ server
49
59
  end
50
60
 
51
61
  def delete(server_name:)
@@ -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
- curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="#{k3s_version}" K3S_TOKEN="#{k3s_token}" INSTALL_K3S_EXEC="server \
234
- --disable-cloud-controller \
235
- --disable servicelb \
236
- --disable traefik \
237
- --disable local-storage \
238
- --disable metrics-server \
239
- --write-kubeconfig-mode=644 \
240
- --node-name="$(hostname -f)" \
241
- --cluster-cidr=10.244.0.0/16 \
242
- --etcd-expose-metrics=true \
243
- --kube-controller-manager-arg="address=0.0.0.0" \
244
- --kube-controller-manager-arg="bind-address=0.0.0.0" \
245
- --kube-proxy-arg="metrics-bind-address=0.0.0.0" \
246
- --kube-scheduler-arg="address=0.0.0.0" \
247
- --kube-scheduler-arg="bind-address=0.0.0.0" \
248
- #{taint} \
249
- --kubelet-arg="cloud-provider=external" \
250
- --advertise-address=$(hostname -I | awk '{print $2}') \
251
- --node-ip=$(hostname -I | awk '{print $2}') \
252
- --node-external-ip=$(hostname -I | awk '{print $1}') \
253
- --flannel-iface=#{flannel_interface} \
254
- #{server} #{tls_sans}" sh -
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
- 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 \
263
- --node-name="$(hostname -f)" \
264
- --kubelet-arg="cloud-provider=external" \
265
- --node-ip=$(hostname -I | awk '{print $2}') \
266
- --node-external-ip=$(hostname -I | awk '{print $1}') \
267
- --flannel-iface=#{flannel_interface}" sh -
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
 
@@ -1,5 +1,5 @@
1
1
  module Hetzner
2
2
  module K3s
3
- VERSION = "0.4.5"
3
+ VERSION = "0.4.6"
4
4
  end
5
5
  end
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.5
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-03 00:00:00.000000000 Z
11
+ date: 2021-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor