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 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