mirror of
https://github.com/ubicloud/ubicloud.git
synced 2025-10-04 22:02:18 +08:00
So far, we only listened on the IPv4 IP of nodes, creating the k8s apiserver load balancer in IPv4 mode. From now on, we will also listen on the IPv6 IP, making the LB dual stack.
73 lines
1.7 KiB
Ruby
Executable file
73 lines
1.7 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
require "json"
|
|
require "yaml"
|
|
require_relative "../../common/lib/util"
|
|
|
|
params = JSON.parse($stdin.read)
|
|
|
|
begin
|
|
is_control_plane = params.fetch("is_control_plane")
|
|
endpoint = params.fetch("endpoint")
|
|
join_token = params.fetch("join_token")
|
|
discovery_token_ca_cert_hash = params.fetch("discovery_token_ca_cert_hash")
|
|
node_name = params.fetch("node_name")
|
|
node_ipv4 = params.fetch("node_ipv4")
|
|
node_ipv6 = params.fetch("node_ipv6")
|
|
if is_control_plane
|
|
certificate_key = params.fetch("certificate_key")
|
|
end
|
|
rescue KeyError => e
|
|
puts "Needed #{e.key} in parameters"
|
|
exit 1
|
|
end
|
|
|
|
config = {
|
|
"apiVersion" => "kubeadm.k8s.io/v1beta4",
|
|
"kind" => "JoinConfiguration",
|
|
"discovery" => {
|
|
"bootstrapToken" => {
|
|
"token" => join_token,
|
|
"apiServerEndpoint" => endpoint,
|
|
"caCertHashes" => [discovery_token_ca_cert_hash]
|
|
}
|
|
},
|
|
"nodeRegistration" => {
|
|
"name" => node_name,
|
|
"kubeletExtraArgs" => [
|
|
{
|
|
"name" => "node-ip",
|
|
"value" => "#{node_ipv4},#{node_ipv6}"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
if is_control_plane
|
|
config["controlPlane"] = {
|
|
"certificateKey" => certificate_key,
|
|
"localAPIEndpoint" => {
|
|
"advertiseAddress" => node_ipv4,
|
|
"bindPort" => 6443
|
|
},
|
|
"apiServer" => {
|
|
"extraArgs" => [
|
|
{
|
|
"name" => "bind-address",
|
|
"value" => "::"
|
|
},
|
|
{
|
|
"name" => "advertise-address",
|
|
"value" => node_ipv4
|
|
}
|
|
]
|
|
}
|
|
}
|
|
end
|
|
|
|
config_path = "/tmp/join-config.yaml"
|
|
safe_write_to_file(config_path, config.to_yaml)
|
|
r("kubeadm join --config #{config_path}")
|
|
|
|
r("sudo /home/ubi/kubernetes/bin/setup-cni")
|