Skip to content

Commit 0fd97f3

Browse files
authored
F #-: Update OneKE, use new VR and service scripts (#43)
* Starting RKE2 "manually" (after the DNS server is set) * fixes DNS-related issues in Cilium. * VR: Apply "packer fmt" * Bring back OneKE from "legacy" (rename) * Update OneKE, use new VR and service scripts * OneKE: Drop vnf-restore / rely on one-context (fix)
1 parent 3e5c9f4 commit 0fd97f3

26 files changed

+327
-445
lines changed
File renamed without changes.
File renamed without changes.

appliances/legacy/OneKE/appliance/cilium.rb renamed to appliances/OneKE/cilium.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
require_relative 'config.rb'
88
require_relative 'helpers.rb'
99

10-
def configure_cilium(manifest_dir = K8S_MANIFEST_DIR, endpoint = K8S_CONTROL_PLANE_EP)
10+
def configure_cilium(manifest_dir = K8S_MANIFEST_DIR, endpoint = ONEAPP_K8S_CONTROL_PLANE_EP)
1111
msg :info, 'Configure Cilium'
1212

1313
ep = URI.parse "https://#{endpoint}"
@@ -64,7 +64,7 @@ def extract_cilium_ranges(ranges = ONEAPP_K8S_CILIUM_RANGES)
6464
ranges.compact
6565
.map(&:strip)
6666
.reject(&:empty?)
67-
.map { |item| item.split('/').map(&:strip) }
67+
.map { |item| item.split(%[/]).map(&:strip) }
6868
.reject { |item| item.length > 2 }
6969
.reject { |item| item.map(&:empty?).any? }
7070
.reject { |item| !(ipv4?(item.first) && integer?(item.last)) }

appliances/legacy/OneKE/appliance/cilium_spec.rb renamed to appliances/OneKE/cilium_spec.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
require 'tmpdir'
66
require 'yaml'
77

8+
require_relative 'helpers.rb'
89
require_relative 'cilium.rb'
910

1011
RSpec.describe 'extract_cilium_ranges' do
@@ -35,7 +36,7 @@
3536

3637
RSpec.describe 'configure_cilium' do
3738
it 'should apply user-defined ranges (empty)' do
38-
stub_const 'K8S_CONTROL_PLANE_EP', '192.168.150.86:6443'
39+
stub_const 'ONEAPP_K8S_CONTROL_PLANE_EP', '192.168.150.86:6443'
3940
stub_const 'ONEAPP_K8S_CNI_PLUGIN', 'cilium'
4041
stub_const 'ONEAPP_K8S_CNI_CONFIG', nil
4142
stub_const 'ONEAPP_K8S_CILIUM_RANGES', []
@@ -73,7 +74,7 @@
7374
end
7475

7576
it 'should apply user-defined ranges' do
76-
stub_const 'K8S_CONTROL_PLANE_EP', '192.168.150.86:6443'
77+
stub_const 'ONEAPP_K8S_CONTROL_PLANE_EP', '192.168.150.86:6443'
7778
stub_const 'ONEAPP_K8S_CNI_PLUGIN', 'cilium'
7879
stub_const 'ONEAPP_K8S_CILIUM_RANGES', ['192.168.150.128/25', '10.11.12.0/24']
7980
output = YAML.load_stream <<~MANIFEST

appliances/legacy/OneKE/appliance/cleaner.rb renamed to appliances/OneKE/cleaner.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def fetch_cleaner(addon_dir = ONE_ADDON_DIR, cron = '*/2 * * * *', ttl = 180)
4141
imagePullPolicy: IfNotPresent
4242
command:
4343
- /usr/local/bin/ruby
44-
- /etc/one-appliance/service.d/appliance/cleaner.rb
44+
- /etc/one-appliance/service.d/OneKE/cleaner.rb
4545
volumeMounts:
4646
- name: kubectl
4747
mountPath: /var/lib/rancher/rke2/bin/kubectl
@@ -53,8 +53,10 @@ def fetch_cleaner(addon_dir = ONE_ADDON_DIR, cron = '*/2 * * * *', ttl = 180)
5353
mountPath: /usr/bin/onegate
5454
- name: onegaterb
5555
mountPath: /usr/bin/onegate.rb
56+
- name: lib
57+
mountPath: /etc/one-appliance/lib/
5658
- name: appliance
57-
mountPath: /etc/one-appliance/service.d/appliance/
59+
mountPath: /etc/one-appliance/service.d/OneKE/
5860
volumes:
5961
- name: kubectl
6062
hostPath:
@@ -76,9 +78,13 @@ def fetch_cleaner(addon_dir = ONE_ADDON_DIR, cron = '*/2 * * * *', ttl = 180)
7678
hostPath:
7779
path: /usr/bin/onegate.rb
7880
type: File
81+
- name: lib
82+
hostPath:
83+
path: /etc/one-appliance/lib/
84+
type: Directory
7985
- name: appliance
8086
hostPath:
81-
path: /etc/one-appliance/service.d/appliance/
87+
path: /etc/one-appliance/service.d/OneKE/
8288
type: Directory
8389
restartPolicy: Never
8490
MANIFEST

appliances/legacy/OneKE/appliance/cleaner_spec.rb renamed to appliances/OneKE/cleaner_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'json'
44
require 'rspec'
55

6+
require_relative 'helpers.rb'
67
require_relative 'cleaner.rb'
78

89
RSpec.describe 'detect_invalid_nodes' do

appliances/legacy/OneKE/appliance/config.rb renamed to appliances/OneKE/config.rb

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
# frozen_string_literal: true
22

3-
def env(name, default)
4-
value = ENV.fetch name.to_s, ''
5-
value = value.empty? ? default : value
6-
value = %w[YES 1].include?(value.upcase) if default.instance_of?(String) && %w[YES NO].include?(default.upcase)
7-
value
3+
begin
4+
require '/etc/one-appliance/lib/helpers.rb'
5+
rescue LoadError
6+
require_relative '../lib/helpers.rb'
87
end
98

109
ONE_SERVICE_VERSION = env :ONE_SERVICE_VERSION, '1.27'
@@ -20,39 +19,47 @@ def env(name, default)
2019

2120
ONEAPP_K8S_CNI_PLUGIN = env :ONEAPP_K8S_CNI_PLUGIN, 'cilium'
2221
ONEAPP_K8S_CNI_CONFIG = env :ONEAPP_K8S_CNI_CONFIG, nil
23-
ONEAPP_K8S_CILIUM_RANGES = ENV.select { |key, _| key.start_with? 'ONEAPP_K8S_CILIUM_RANGE' }.values.freeze
22+
ONEAPP_K8S_CILIUM_RANGES = ENV.select { |key, _| key.start_with? 'ONEAPP_K8S_CILIUM_RANGE' } .values
2423

2524
ONEAPP_K8S_LONGHORN_CHART_VERSION = env :ONEAPP_K8S_LONGHORN_CHART_VERSION, '1.4.1'
2625
ONEAPP_K8S_LONGHORN_ENABLED = env :ONEAPP_K8S_LONGHORN_ENABLED, 'NO'
2726

27+
ONEAPP_STORAGE_DEVICE = env :ONEAPP_STORAGE_DEVICE, nil # for example '/dev/vdb'
28+
ONEAPP_STORAGE_FILESYSTEM = env :ONEAPP_STORAGE_FILESYSTEM, 'xfs'
29+
ONEAPP_STORAGE_MOUNTPOINT = env :ONEAPP_STORAGE_MOUNTPOINT, '/var/lib/longhorn'
30+
2831
ONEAPP_K8S_METALLB_CHART_VERSION = env :ONEAPP_K8S_METALLB_CHART_VERSION, '0.13.9'
2932
ONEAPP_K8S_METALLB_ENABLED = env :ONEAPP_K8S_METALLB_ENABLED, 'NO'
3033
ONEAPP_K8S_METALLB_CONFIG = env :ONEAPP_K8S_METALLB_CONFIG, nil
31-
ONEAPP_K8S_METALLB_RANGES = ENV.select { |key, _| key.start_with? 'ONEAPP_K8S_METALLB_RANGE' }.values.freeze
34+
ONEAPP_K8S_METALLB_RANGES = ENV.select { |key, _| key.start_with? 'ONEAPP_K8S_METALLB_RANGE' } .values
3235

3336
ONEAPP_K8S_TRAEFIK_CHART_VERSION = env :ONEAPP_K8S_TRAEFIK_CHART_VERSION, '23.0.0'
3437
ONEAPP_K8S_TRAEFIK_ENABLED = env :ONEAPP_K8S_TRAEFIK_ENABLED, 'NO'
3538

36-
ONEAPP_VROUTER_ETH0_VIP0 = env :ONEAPP_VROUTER_ETH0_VIP0, nil
37-
ONEAPP_VROUTER_ETH1_VIP0 = env :ONEAPP_VROUTER_ETH1_VIP0, nil
39+
ONEAPP_VROUTER_ETH0_VIP0 = env :ONEAPP_VROUTER_ETH0_VIP0, nil
40+
ONEAPP_VROUTER_ETH1_VIP0 = env :ONEAPP_VROUTER_ETH1_VIP0, nil
41+
42+
ONEAPP_VNF_HAPROXY_LB0_IP = env :ONEAPP_VNF_HAPROXY_LB0_IP, ONEAPP_VROUTER_ETH0_VIP0
43+
ONEAPP_VNF_HAPROXY_LB0_PORT = env :ONEAPP_VNF_HAPROXY_LB0_PORT, '9345'
44+
ONEAPP_VNF_HAPROXY_LB1_IP = env :ONEAPP_VNF_HAPROXY_LB1_IP, ONEAPP_VROUTER_ETH0_VIP0
45+
ONEAPP_VNF_HAPROXY_LB1_PORT = env :ONEAPP_VNF_HAPROXY_LB1_PORT, '6443'
46+
ONEAPP_VNF_HAPROXY_LB2_IP = env :ONEAPP_VNF_HAPROXY_LB2_IP, ONEAPP_VROUTER_ETH0_VIP0
3847
ONEAPP_VNF_HAPROXY_LB2_PORT = env :ONEAPP_VNF_HAPROXY_LB2_PORT, '443'
48+
ONEAPP_VNF_HAPROXY_LB3_IP = env :ONEAPP_VNF_HAPROXY_LB3_IP, ONEAPP_VROUTER_ETH0_VIP0
3949
ONEAPP_VNF_HAPROXY_LB3_PORT = env :ONEAPP_VNF_HAPROXY_LB3_PORT, '80'
4050

41-
ONEAPP_K8S_EXTRA_SANS = env :ONEAPP_K8S_EXTRA_SANS, 'localhost,127.0.0.1'
51+
ONEAPP_VNF_DNS_ENABLED = env :ONEAPP_VNF_DNS_ENABLED, 'YES'
4252

43-
ONEAPP_STORAGE_DEVICE = env :ONEAPP_STORAGE_DEVICE, nil # for example '/dev/vdb'
44-
ONEAPP_STORAGE_FILESYSTEM = env :ONEAPP_STORAGE_FILESYSTEM, 'xfs'
45-
ONEAPP_STORAGE_MOUNTPOINT = env :ONEAPP_STORAGE_MOUNTPOINT, '/var/lib/longhorn'
53+
ONEAPP_RKE2_SUPERVISOR_EP = env :ONEAPP_RKE2_SUPERVISOR_EP, "#{ONEAPP_VROUTER_ETH0_VIP0}:#{ONEAPP_VNF_HAPROXY_LB0_PORT}"
54+
ONEAPP_K8S_CONTROL_PLANE_EP = env :ONEAPP_K8S_CONTROL_PLANE_EP, "#{ONEAPP_VROUTER_ETH0_VIP0}:#{ONEAPP_VNF_HAPROXY_LB1_PORT}"
55+
ONEAPP_K8S_EXTRA_SANS = env :ONEAPP_K8S_EXTRA_SANS, 'localhost,127.0.0.1'
4656

4757
ONE_ADDON_DIR = env :ONE_ADDON_DIR, "#{ONE_SERVICE_SETUP_DIR}/addons"
4858
ONE_AIRGAP_DIR = env :ONE_AIRGAP_DIR, "#{ONE_SERVICE_SETUP_DIR}/airgap"
4959

5060
K8S_MANIFEST_DIR = env :K8S_MANIFEST_DIR, '/var/lib/rancher/rke2/server/manifests'
5161
K8S_IMAGE_DIR = env :K8S_IMAGE_DIR, '/var/lib/rancher/rke2/agent/images'
5262

53-
K8S_SUPERVISOR_EP = "#{ONEAPP_VROUTER_ETH0_VIP0}:9345"
54-
K8S_CONTROL_PLANE_EP = "#{ONEAPP_VROUTER_ETH0_VIP0}:6443"
55-
5663
RETRIES = 86
5764
SECONDS = 5
5865

appliances/legacy/OneKE/appliance/helpers.rb renamed to appliances/OneKE/helpers.rb

Lines changed: 8 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,17 @@
11
# frozen_string_literal: true
22

33
require 'base64'
4-
require 'date'
54
require 'fileutils'
65
require 'json'
7-
require 'ipaddr'
8-
require 'logger'
96
require 'net/http'
10-
require 'open3'
11-
require 'socket'
127
require 'tempfile'
138
require 'uri'
149
require 'yaml'
1510

16-
LOGGER_STDOUT = Logger.new(STDOUT)
17-
LOGGER_STDERR = Logger.new(STDERR)
18-
19-
LOGGERS = {
20-
info: LOGGER_STDOUT.method(:info),
21-
debug: LOGGER_STDERR.method(:debug),
22-
warn: LOGGER_STDERR.method(:warn),
23-
error: LOGGER_STDERR.method(:error)
24-
}.freeze
25-
26-
def msg(level, string)
27-
LOGGERS[level].call string
28-
end
29-
30-
def slurp(path)
31-
Base64.encode64(File.read(path)).lines.map(&:strip).join
32-
end
33-
34-
def file(path, content, mode: 'u=rw,go=r', overwrite: false)
35-
return if !overwrite && File.exist?(path)
36-
37-
FileUtils.mkdir_p File.dirname path
38-
39-
File.write path, content
40-
41-
FileUtils.chmod mode, path
42-
end
43-
44-
def bash(script, chomp: false, terminate: true)
45-
command = 'exec /bin/bash --login -s'
46-
47-
stdin_data = <<~SCRIPT
48-
export DEBIAN_FRONTEND=noninteractive
49-
set -o errexit -o nounset -o pipefail
50-
set -x
51-
#{script}
52-
SCRIPT
53-
54-
stdout, stderr, status = Open3.capture3 command, stdin_data: stdin_data
55-
unless status.exitstatus.zero?
56-
error_message = "#{status.exitstatus}: #{stderr}"
57-
msg :error, error_message
58-
59-
raise error_message unless terminate
60-
61-
exit status.exitstatus
62-
end
63-
64-
chomp ? stdout.chomp : stdout
11+
begin
12+
require '/etc/one-appliance/lib/helpers.rb'
13+
rescue LoadError
14+
require_relative '../lib/helpers.rb'
6515
end
6616

6717
def kubectl(arguments, namespace: nil, kubeconfig: KUBECONFIG)
@@ -135,10 +85,10 @@ def extract_images(manifest)
13585
end
13686

13787
containers = []
138-
containers += document.dig('spec', 'template', 'spec', 'containers') || []
139-
containers += document.dig('spec', 'template', 'spec', 'initContainers') || []
140-
containers += document.dig('spec', 'jobTemplate', 'spec', 'template', 'spec', 'containers') || []
141-
containers += document.dig('spec', 'jobTemplate', 'spec', 'template', 'spec', 'initContainers') || []
88+
containers += document.dig('spec', 'template', 'spec', 'containers').to_a
89+
containers += document.dig('spec', 'template', 'spec', 'initContainers').to_a
90+
containers += document.dig('spec', 'jobTemplate', 'spec', 'template', 'spec', 'containers').to_a
91+
containers += document.dig('spec', 'jobTemplate', 'spec', 'template', 'spec', 'initContainers').to_a
14292

14393
images += containers.map { |container| container.dig 'image' }
14494
end
@@ -193,30 +143,6 @@ def install_packages(packages, hold: false)
193143
SCRIPT
194144
end
195145

196-
def ipv4?(string)
197-
string.is_a?(String) && IPAddr.new(string) ? true : false
198-
rescue IPAddr::InvalidAddressError
199-
false
200-
end
201-
202-
def integer?(string)
203-
Integer(string) ? true : false
204-
rescue ArgumentError
205-
false
206-
end
207-
208-
alias port? integer?
209-
210-
def tcp_port_open?(ipv4, port, seconds = 5)
211-
# > If a block is given, the block is called with the socket.
212-
# > The value of the block is returned.
213-
# > The socket is closed when this method returns.
214-
Socket.tcp(ipv4, port, connect_timeout: seconds) {}
215-
true
216-
rescue Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::EHOSTUNREACH, Errno::ETIMEDOUT
217-
false
218-
end
219-
220146
def http_status_200?(url,
221147
cacert = '/var/lib/rancher/rke2/server/tls/server-ca.crt',
222148
cert = '/var/lib/rancher/rke2/server/tls/client-admin.crt',

0 commit comments

Comments
 (0)