Skip to content

Commit

Permalink
k8s-calico-ipvs3 added
Browse files Browse the repository at this point in the history
  • Loading branch information
nik-netlox committed Sep 18, 2023
1 parent 94fc27f commit 117ce4d
Show file tree
Hide file tree
Showing 30 changed files with 1,424 additions and 0 deletions.
94 changes: 94 additions & 0 deletions cicd/k8s-calico-ipvs3/Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

require "yaml"
settings = YAML.load_file "yaml/settings.yaml"

workers = settings["nodes"]["workers"]["count"]
loxilbs = (ENV['LOXILBS'] || "2").to_i

Vagrant.configure("2") do |config|

if Vagrant.has_plugin?("vagrant-vbguest")
config.vbguest.auto_update = false
end
config.vm.define "host" do |host|
host.vm.hostname = 'host1'
host.vm.box = settings["software"]["cluster"]["box"]
host.vm.network :private_network, ip: "192.168.80.9", :netmask => "255.255.255.0"
host.vm.network :private_network, ip: "192.168.90.9", :netmask => "255.255.255.0"
host.vm.provision :shell, :path => "node_scripts/host.sh"
host.vm.provider :virtualbox do |vbox|
vbox.customize ["modifyvm", :id, "--memory", 2048]
vbox.customize ["modifyvm", :id, "--cpus", 1]
end
end

(1..loxilbs).each do |node_number|
config.vm.define "llb#{node_number}" do |loxilb|
loxilb.vm.box = settings["software"]["loxilb"]["box"]["name"]
loxilb.vm.box_version = settings["software"]["loxilb"]["box"]["version"]
loxilb.vm.hostname = "llb#{node_number}"
ip = node_number + 251
loxilb.vm.network :private_network, ip: "192.168.80.#{ip}", :netmask => "255.255.255.0"
loxilb.vm.provision :shell, :path => "node_scripts/loxilb.sh"
loxilb.vm.provider :virtualbox do |vbox|
vbox.customize ["modifyvm", :id, "--memory", 6000]
vbox.customize ["modifyvm", :id, "--cpus", 4]
vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
end
end
end

config.vm.define "master" do |master|
master.vm.box = settings["software"]["cluster"]["box"]
master.vm.hostname = 'master'
master.vm.network :private_network, ip: settings["network"]["control_ip"], :netmask => "255.255.255.0"
master.vm.provision "shell",
env: {
"DNS_SERVERS" => settings["network"]["dns_servers"].join(" "),
"ENVIRONMENT" => settings["environment"],
"KUBERNETES_VERSION" => settings["software"]["kubernetes"],
"OS" => settings["software"]["os"]
},
path: "node_scripts/common.sh"
master.vm.provision "shell",
env: {
"CALICO_VERSION" => settings["software"]["calico"],
"CONTROL_IP" => settings["network"]["control_ip"],
"POD_CIDR" => settings["network"]["pod_cidr"],
"SERVICE_CIDR" => settings["network"]["service_cidr"]
},
path: "node_scripts/master.sh"

master.vm.provider :virtualbox do |vbox|
vbox.customize ["modifyvm", :id, "--memory", 4096]
vbox.customize ["modifyvm", :id, "--cpus", 2]
vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
end
end

(1..workers).each do |node_number|
config.vm.define "worker#{node_number}" do |worker|
worker.vm.box = settings["software"]["cluster"]["box"]
worker.vm.hostname = "worker#{node_number}"
ip = node_number + 200
worker.vm.network :private_network, ip: "192.168.80.#{ip}", :netmask => "255.255.255.0"
worker.vm.provision "shell",
env: {
"DNS_SERVERS" => settings["network"]["dns_servers"].join(" "),
"ENVIRONMENT" => settings["environment"],
"KUBERNETES_VERSION" => settings["software"]["kubernetes"],
"OS" => settings["software"]["os"]
},
path: "node_scripts/common.sh"
worker.vm.provision "shell", path: "node_scripts/worker.sh"

worker.vm.provider :virtualbox do |vbox|
vbox.customize ["modifyvm", :id, "--memory", 4096]
vbox.customize ["modifyvm", :id, "--cpus", 2]
vbox.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
end
end
end
end
224 changes: 224 additions & 0 deletions cicd/k8s-calico-ipvs3/bird_config/bird.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
# This is a basic configuration file, which contains boilerplate options and
# some basic examples. It allows the BIRD daemon to start but will not cause
# anything else to happen.
#
# Please refer to the BIRD User's Guide documentation, which is also available
# online at http://bird.network.cz/ in HTML format, for more information on
# configuring BIRD and adding routing protocols.

# Configure logging
#log syslog all;
log "/var/log/bird.log" { debug, trace, info, remote, warning, error, auth, fatal, bug };

# Set router ID. It is a unique identification of your router, usually one of
# IPv4 addresses of the router. It is recommended to configure it explicitly.
router id 192.168.80.9;

# Turn on global debugging of all protocols (all messages or just selected classes)
# debug protocols all;
# debug protocols { events, states };

# Turn on internal watchdog
# watchdog warning 5 s;
# watchdog timeout 30 s;

# You can define your own constants
# define my_asn = 65000;
# define my_addr = 198.51.100.1;

# Tables master4 and master6 are defined by default
# ipv4 table master4;
# ipv6 table master6;

# Define more tables, e.g. for policy routing or as MRIB
# ipv4 table mrib4;
# ipv6 table mrib6;

# The Device protocol is not a real routing protocol. It does not generate any
# routes and it only serves as a module for getting information about network
# interfaces from the kernel. It is necessary in almost any configuration.
protocol device {
}

# The direct protocol is not a real routing protocol. It automatically generates
# direct routes to all network interfaces. Can exist in as many instances as you
# wish if you want to populate multiple routing tables with direct routes.
protocol direct {
#disabled; # Disable by default
ipv4; # Connect to default IPv4 table
#ipv6; # ... and to default IPv6 table
}

# The Kernel protocol is not a real routing protocol. Instead of communicating
# with other routers in the network, it performs synchronization of BIRD
# routing tables with the OS kernel. One instance per table.
protocol kernel {
ipv4 { # Connect protocol to IPv4 table by channel
# table master4; # Default IPv4 table is master4
# import all; # Import to table, default is import all
export all; # Export to protocol. default is export none
};
# learn; # Learn alien routes from the kernel
# kernel table 10; # Kernel table to synchronize with (default: main)
}

# Another instance for IPv6, skipping default options
protocol kernel {
ipv6 { export all; };
}

# Static routes (Again, there can be multiple instances, for different address
# families and to disable/enable various groups of static routes on the fly).
protocol static {
ipv4; # Again, IPv4 channel with default options

# route 0.0.0.0/0 via 198.51.100.10;
# route 192.0.2.0/24 blackhole;
# route 10.0.0.0/8 unreachable;
# route 10.2.0.0/24 via "eth0";
# # Static routes can be defined with optional attributes
# route 10.1.1.0/24 via 198.51.100.3 { rip_metric = 3; };
# route 10.1.2.0/24 via 198.51.100.3 { ospf_metric1 = 100; };
# route 10.1.3.0/24 via 198.51.100.4 { ospf_metric2 = 100; };
}

# Pipe protocol connects two routing tables. Beware of loops.
# protocol pipe {
# table master4; # No ipv4/ipv6 channel definition like in other protocols
# peer table mrib4;
# import all; # Direction peer table -> table
# export all; # Direction table -> peer table
# }

# RIP example, both RIP and RIPng are supported
# protocol rip {
# ipv4 {
# # Export direct, static routes and ones from RIP itself
# import all;
# export where source ~ [ RTS_DEVICE, RTS_STATIC, RTS_RIP ];
# };
# interface "eth*" {
# update time 10; # Default period is 30
# timeout time 60; # Default timeout is 180
# authentication cryptographic; # No authentication by default
# password "hello" { algorithm hmac sha256; }; # Default is MD5
# };
# }

# OSPF example, both OSPFv2 and OSPFv3 are supported
# protocol ospf v3 {
# ipv6 {
# import all;
# export where source = RTS_STATIC;
# };
# area 0 {
# interface "eth*" {
# type broadcast; # Detected by default
# cost 10; # Interface metric
# hello 5; # Default hello perid 10 is too long
# };
# interface "tun*" {
# type ptp; # PtP mode, avoids DR selection
# cost 100; # Interface metric
# hello 5; # Default hello perid 10 is too long
# };
# interface "dummy0" {
# stub; # Stub interface, just propagate it
# };
# };
#}

# Define simple filter as an example for BGP import filter
# See https://gitlab.labs.nic.cz/labs/bird/wikis/BGP_filtering for more examples
# filter rt_import
# {
# if bgp_path.first != 64496 then accept;
# if bgp_path.len > 64 then accept;
# if bgp_next_hop != from then accept;
# reject;
# }

# BGP example, explicit name 'uplink1' is used instead of default 'bgp1'
# protocol bgp uplink1 {
# description "My BGP uplink";
# local 198.51.100.1 as 65000;
# neighbor 198.51.100.10 as 64496;
# hold time 90; # Default is 240
# password "secret"; # Password used for MD5 authentication
#
# ipv4 { # regular IPv4 unicast (1/1)
# import filter rt_import;
# export where source ~ [ RTS_STATIC, RTS_BGP ];
# };
#
# ipv6 { # regular IPv6 unicast (2/1)
# import filter rt_import;
# export filter { # The same as 'where' expression above
# if source ~ [ RTS_STATIC, RTS_BGP ]
# then accept;
# else reject;
# };
# };
#
# ipv4 multicast { # IPv4 multicast topology (1/2)
# table mrib4; # explicit IPv4 table
# import filter rt_import;
# export all;
# };
#
# ipv6 multicast { # IPv6 multicast topology (2/2)
# table mrib6; # explicit IPv6 table
# import filter rt_import;
# export all;
# };
#}

# Template example. Using templates to define IBGP route reflector clients.
# template bgp rr_clients {
# local 10.0.0.1 as 65000;
# neighbor as 65000;
# rr client;
# rr cluster id 1.0.0.1;
#
# ipv4 {
# import all;
# export where source = RTS_BGP;
# };
#
# ipv6 {
# import all;
# export where source = RTS_BGP;
# };
# }
#
# protocol bgp client1 from rr_clients {
# neighbor 10.0.1.1;
# }
#
# protocol bgp client2 from rr_clients {
# neighbor 10.0.2.1;
# }
#
# protocol bgp client3 from rr_clients {
# neighbor 10.0.3.1;
# }
#
protocol bgp llb1 {
local as 64512;
neighbor 192.168.80.252 as 64511;

ipv4 {
import all;
export all;
};
}

protocol bgp llb2 {
neighbor 192.168.80.253 as 64511;

ipv4 {
import all;
export all;
};
}

37 changes: 37 additions & 0 deletions cicd/k8s-calico-ipvs3/config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
VMs=$(vagrant global-status | grep -i virtualbox)
while IFS= read -a VMs; do
read -a vm <<< "$VMs"
cd ${vm[4]} 2>&1>/dev/null
echo "Destroying ${vm[1]}"
vagrant destroy -f ${vm[1]}
cd - 2>&1>/dev/null
done <<< "$VMs"

vagrant up

for((i=1; i<=60; i++))
do
fin=1
pods=$(vagrant ssh master -c 'kubectl get pods -A' 2> /dev/null | grep -v "NAMESPACE")

while IFS= read -a pods; do
read -a pod <<< "$pods"
if [[ ${pod[3]} != *"Running"* ]]; then
echo "${pod[1]} is not UP yet"
fin=0
fi
done <<< "$pods"
if [ $fin == 1 ];
then
break;
fi
echo "Will try after 10s"
sleep 10
done

sudo sysctl net.ipv4.conf.vboxnet1.arp_accept=1

#Create fullnat Service
vagrant ssh master -c 'kubectl apply -f /vagrant/yaml/tcp_fullnat.yml' 2> /dev/null
vagrant ssh master -c 'kubectl apply -f /vagrant/yaml/udp_fullnat.yml' 2> /dev/null
19 changes: 19 additions & 0 deletions cicd/k8s-calico-ipvs3/configs/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakNDQWVhZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJek1Ea3hPREE0TURBeU4xb1hEVE16TURreE5UQTRNREF5TjFvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTkVJCjJjVE83YWxyaStmS0dBaWZqZXBGWXpoMGdCWmZ6K1JnTFcxV1JsV1NZVnhzNFUvcThTMHhJZzhJWW9SS3F2ZWEKcmtNTlVYVVZtUXVUQ3kwclJzRE9hRlpGN2VjVC9ST3JQRjFvY0NZOVJyaWRJOWFnMlNFNU9HMnRkbStuZ0V0WQpmdElHYWdESnRwQzVLZmkvdjluYzF3RmxVSW14YStVeTllajhUeWlWNG8xbVFLTklNY3dXd2diWlZxV1dPOG1jCmhHckF2MUhMRnFVOUVNRmR4OFZXMW5SN01qeVJPTU8wTlJIQXBDV1A4SmEwQXJlaTFDcmJSSStHcG8xb2cyZlUKVXhxcXB1ZVNIVkFtOTJVb2VpNk9DTDRiWFV2TXViU3lMaXh1cjJUUzZXclZiZUtPSVNCZ3VHdHNHeC90T3M2YgpFT1VYRXZhTG5PTTVXcHZjUzhrQ0F3RUFBYU5aTUZjd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZLU3VHT1ZuRnArYU5ZQkZKVUVZTDB5Rm5HNEtNQlVHQTFVZEVRUU8KTUF5Q0NtdDFZbVZ5Ym1WMFpYTXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBRm1iN0hqMEJ6TVBmRlZnd0ZYOQpKUWUyVkl0aDlaaWVSZEFaVkU2OWlnQkRMWldmOWo4TXRGTWRUQkM3SlNxeWpETXVURDNXdDJPWnNnTXZBZ0syCjVLcU40VGk4QysyWCtFa2JZUjNvOFJVemZON3ViNlFscUZNR1cwSzFrajlOYTlpZlBWRE1qZUY3dVpiYnFkcXcKRFlmdGczOW9tSjI5dEdCekFScmNRdkwzQXViN2lKOU5IL1dZcGFvcXZpaURGYnU1ODRObThpWjkvSXI2c1JCTQo2aExGakZiTGFCbC8vWmdsRjRKNWdOT1J5RGpxVUYwMkx0SXZRdG8ySTJEYm1GbVVuK2VsUTFGT1VFa0hJaWtVCmJFNEFTbUFoSnVvNHBQVlY1a0s2UGpBZDBWOVVDNkxZNFdnd2p4TllIdWM1eEhHRFYwM1BqQTdWOTJFYmxXM3UKTEJBPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://192.168.80.250:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQWdtZ0F3SUJBZ0lJUFUvMFNDVUV6RkV3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TXpBNU1UZ3dPREF3TWpkYUZ3MHlOREE1TVRjd09EQXdNekJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXRSM25wbW5jMGVPaUtXeG8KSFN1alFpRXNHZXZSSHkwSTFMUkJuc0x0WS91ZE9EQ256WWplTDBFeGtzTllqR2xzTEUvOUxEbE9VY3BUd0dCZwpxVnRaYnBzNUo2RjNZeElVUkdLSUo1N3AzSklGNmNNa0dNbmorOFoxYlRmQ09wd3JWVUdaTUhlSmFwOWljWUZ0CncvdjRXUnkxQ09laWZLRDBRVU9lRVlXL00ySC9JWDhLbzErdGNINHF6RXpmZlRkVE9qZmFNM1NZSWxqMXZSRmoKZDhWeGFOMjBDWUFQa1QrcXJuaTNCV2FGKzl1cDZ1S0tKcmd0dmJvTkZia0lORy9xcTVsWVlhdy9ZYTN4ZGFmNApyeGM3bCtWdDAxU2Jndmx4UllmeWdrS3BEMzZqUWIvaFNkV0FHb28yOFFOYVMwS1JHMUJLaDVpcjIxV1dRMjI1CmxkQjVpd0lEQVFBQm8xWXdWREFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0RBWURWUjBUQVFIL0JBSXdBREFmQmdOVkhTTUVHREFXZ0JTa3JoamxaeGFmbWpXQVJTVkJHQzlNaFp4dQpDakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBYzR0ZnRIbTdUb2dYQm8xWm1hakxwWkRMZGdtdy9tNGcxeG0xCkhmVG9McC84YkloV2xOdHZxYzI1U1Z2ZEVyMFpveHRhdC80M1JvRTZBZHlxTUNqeU93QnQ1ejZQY3FqeUNQZDcKbDJBMjY0a2tpLy9DYjdYVnlOTWZGb0tpK1JHdlZuWENkQVBQWTE3U1dtNk1aSnJ2NGxaTTkwOXVjb0Npc1lOTwp0RTBVS0gzRHZaSlVGd2FCU0JZdTZPT0ZtTmJ5dlRnbE9KdzRWaW5rUTFTN0dOcTU3VHNSbDA4V1ZUZFI1bStJCkkvNGFBWk5IeklaMVNKWldia2tydDdmUmg3RGhZUFNiNVd3SjhhMi9KSzltN09GVHlFeEljUnIxUHNEQVd0VHIKd1Y4SDZ0b2VNK1ZjU2FTQVdrZHZhMklMWlZ5cU9sSWdKN0Exb1p2Z2QxUTBGemttWGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBdFIzbnBtbmMwZU9pS1d4b0hTdWpRaUVzR2V2Ukh5MEkxTFJCbnNMdFkvdWRPRENuCnpZamVMMEV4a3NOWWpHbHNMRS85TERsT1VjcFR3R0JncVZ0WmJwczVKNkYzWXhJVVJHS0lKNTdwM0pJRjZjTWsKR01uais4WjFiVGZDT3B3clZVR1pNSGVKYXA5aWNZRnR3L3Y0V1J5MUNPZWlmS0QwUVVPZUVZVy9NMkgvSVg4SwpvMSt0Y0g0cXpFemZmVGRUT2pmYU0zU1lJbGoxdlJGamQ4VnhhTjIwQ1lBUGtUK3FybmkzQldhRis5dXA2dUtLCkpyZ3R2Ym9ORmJrSU5HL3FxNWxZWWF3L1lhM3hkYWY0cnhjN2wrVnQwMVNiZ3ZseFJZZnlna0twRDM2alFiL2gKU2RXQUdvbzI4UU5hUzBLUkcxQktoNWlyMjFXV1EyMjVsZEI1aXdJREFRQUJBb0lCQUcrMW9EbU9OZnJuTWcvbQpvMWpLbjRtY09EMU1xOUZVejR1U0dwODNqNEFKbzNFUzRZenVERXlOSTJ4b1BHZHVacC8yUGl0V3RTM1JZMUxXCm53Z1dKZFVJdkhuckoxM2R1czVyRDV1UWNxSHZGdUtWejkvU05tSUdpRXJ6QjBOckszY01YTlgrQkszVTNMMHgKbldneU0zMlRMVDN1ME5PWjJzMmVUUkoxc2ZhWVFnOGN3S0tXQjJhUWwwSXE5T1o3RnAxTWpLTTlpSm5SdmNtRApmRDQrdTd0T3QrZ0pjSEcxRXhnUEJ1VnJBbVZzNTRaY2xydzNUUHVzQmt5SHJ3NnpwR1Vmak84cU15czhaSUJpCjVmR3pQNnVFb0xDUXplelhOb1JTWUppV3plWjFjYTQ1LzEvS05PNkhqL2R5aTFFbmFvdHk2ZWljRGh6Z09GTEQKWVo4S2FrRUNnWUVBdzQ0aWsrYTFFbXN1Nzc1RCtYRGxZc1Vjc2srRVkrMERlV1pCOHZtamttL1htd3l0aEk3YwpXOGplRkFJRnhGdDVBMjFmUm16Z25Xc2RXTytqVlNoTGtSS2MvZ2lwVDBYNjZaakxydDdHU3N0RVVLMDJQUW9FCm82YmtNTUVtQkcvRjN3V0ZaK0hlYmpBb1pRUXR1K0c0T2lIOVZ3Y1AzT0lVSFl5Wmp3MC8xanNDZ1lFQTdSbEsKVFVWL1BHbHY3SGZGc2w5MlVxVUtlWUJLZHlxM284L3VSVnBPUGM0NzVZdHY3cWs3ZmlLaFBoanZ6SUVRMjRxcwpJY21qQkJ6TWkzWDcvVUhiQ3ZKLzFGaDhKeWpwdzRYU0xiRExjT293MW4wRFhIa3p6MDZvbHUrV3JqRVNqcndQCk9KczNSWEFNRkFaSEo4Rnd1dkd3akF2VG93Y3pCamQxSnp6T3BQRUNnWUVBcTloZ2pHWUZvc3pycnlRYzZidUsKNkRQZEZ0aUh0NlFWRkg2RzM3VCtSL1hlbXRNV1BGR3FWVUg3M2NzMU5DdEorWGdJYklQTEVxcUpYSmtoaC9qawpCdlU3WG9WUCsyaThxTUJyNVJ6QlZnS3Y0dEdEd3pubGY4WnQ2bVloT1c3YmpETjIyeVlDYUFRTHkxRlR1eklNCnlaRUs1b28vSjFUSVpuc2lpaklUY2ZjQ2dZQnRsaG5jbXptUzM1em1xL2xKVjR3bDZMaHRyaGs4K1JhRjlXNUkKeWRPT0I0dHhya0FmREVNK0twMWlTVDVVeEhiWk1rQWJJY3BoOVRtcFgvQUhmMi9Sb0lIcTBMY1psblJ0ZGFYTwpqbitKZ2dUdXJqdG1lM0t4NThaT2RSQ3RGR3RpWTVPWmMweFpvTTlFVmg1L1JvNW5LWnlUTGtnMGV2aGZjRFNLCjNUVVowUUtCZ0JvblpOL1FVeVBDUFFhdHB3Wm5MYTBXaWNQd3Q2TEJ4N0ZWYm1UbUxhZG5hOVNTMDB6azlKbFkKSm1KdG9ralU2U0o1TjlyUEM0SStxNmIxTDFCRDRpM2ZWVGdvRzNGL1R4MWhLVk5JVndkU3ZOVy9GUnlRYlp0SgpGMUJSVlB6Ni9MckhYeU5rMW1HcmZiTFhlNWlyaFVaczgycVREMnkrM2VxZk50aHFuUlpNCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg==
1 change: 1 addition & 0 deletions cicd/k8s-calico-ipvs3/configs/join.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
kubeadm join 192.168.80.250:6443 --token xznj68.toygwobued5ivlwv --discovery-token-ca-cert-hash sha256:bfd28724fb202d1b1780fe03d9a265a5c9bd656b0574132b026d4ae770b8b8e1
Loading

0 comments on commit 117ce4d

Please sign in to comment.