- only install a base config - wait for 3 masters before deploying helm charts - remove cluster-domain - manage nginx ingres via rke2 helmconfig - fix container version for ceph
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'json'
|
||||
require 'open3'
|
||||
|
||||
Facter.add(:k8s_masters) do
|
||||
confine do
|
||||
File.exist?('/etc/rancher/rke2/rke2.yaml') &&
|
||||
File.executable?('/usr/bin/kubectl')
|
||||
end
|
||||
|
||||
setcode do
|
||||
env = { 'KUBECONFIG' => '/etc/rancher/rke2/rke2.yaml' }
|
||||
cmd = ['/usr/bin/kubectl', 'get', 'nodes', '-o', 'json']
|
||||
|
||||
stdout, stderr, status = Open3.capture3(env, *cmd)
|
||||
|
||||
if status.success?
|
||||
json = JSON.parse(stdout)
|
||||
|
||||
master_count = json['items'].count do |item|
|
||||
roles = item.dig('metadata', 'labels') || {}
|
||||
|
||||
# Look for well-known labels assigned to control-plane nodes
|
||||
roles.any? do |key, _|
|
||||
key =~ %r{node-role\.kubernetes\.io/(control-plane|master|etcd)}
|
||||
end
|
||||
end
|
||||
|
||||
master_count
|
||||
else
|
||||
Facter.debug("kubectl error: #{stderr}")
|
||||
0
|
||||
end
|
||||
rescue StandardError => e
|
||||
Facter.debug("Exception in k8s_masters fact: #{e.message}")
|
||||
0
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user