mirror of https://github.com/k3s-io/k3s
[Release-1.24] August Test Backports (#8128)
* Unit test for MustFindString (#8013) * Consolidate CopyFile functions (#8079) * Remove unnecessary E2E envs Signed-off-by: Derek Nola <derek.nola@suse.com>pull/8146/head
parent
3efc14ea6a
commit
3b650c974d
|
@ -161,7 +161,7 @@ func createCNIConf(dir string, nodeConfig *config.Node) error {
|
|||
|
||||
if nodeConfig.AgentConfig.FlannelCniConfFile != "" {
|
||||
logrus.Debugf("Using %s as the flannel CNI conf", nodeConfig.AgentConfig.FlannelCniConfFile)
|
||||
return util.CopyFile(nodeConfig.AgentConfig.FlannelCniConfFile, p)
|
||||
return util.CopyFile(nodeConfig.AgentConfig.FlannelCniConfFile, p, false)
|
||||
}
|
||||
return util.WriteFile(p, cniConf)
|
||||
}
|
||||
|
|
|
@ -16,10 +16,12 @@ func WriteFile(name string, content string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func CopyFile(sourceFile string, destinationFile string) error {
|
||||
func CopyFile(sourceFile string, destinationFile string, ignoreNotExist bool) error {
|
||||
os.MkdirAll(filepath.Dir(destinationFile), 0755)
|
||||
input, err := os.ReadFile(sourceFile)
|
||||
if err != nil {
|
||||
if errors.Is(err, os.ErrNotExist) && ignoreNotExist {
|
||||
return nil
|
||||
} else if err != nil {
|
||||
return errors.Wrapf(err, "copying %s to %s", sourceFile, destinationFile)
|
||||
}
|
||||
err = os.WriteFile(destinationFile, input, 0644)
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/erikdubbelboer/gspt"
|
||||
"github.com/k3s-io/k3s/pkg/agent/util"
|
||||
"github.com/k3s-io/k3s/pkg/bootstrap"
|
||||
"github.com/k3s-io/k3s/pkg/cli/cmds"
|
||||
"github.com/k3s-io/k3s/pkg/clientaccess"
|
||||
|
@ -210,20 +211,6 @@ func rotate(app *cli.Context, cfg *cmds.Server) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func copyFile(src, destDir string) error {
|
||||
_, err := os.Stat(src)
|
||||
if err == nil {
|
||||
input, err := os.ReadFile(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return os.WriteFile(filepath.Join(destDir, filepath.Base(src)), input, 0644)
|
||||
} else if errors.Is(err, os.ErrNotExist) {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func backupCertificates(serverDataDir, agentDataDir string) (string, error) {
|
||||
serverTLSDir := filepath.Join(serverDataDir, "tls")
|
||||
tlsBackupDir := filepath.Join(serverDataDir, "tls-"+strconv.Itoa(int(time.Now().Unix())))
|
||||
|
@ -234,18 +221,20 @@ func backupCertificates(serverDataDir, agentDataDir string) (string, error) {
|
|||
if err := copy.Copy(serverTLSDir, tlsBackupDir); err != nil {
|
||||
return "", err
|
||||
}
|
||||
agentCerts := []string{
|
||||
filepath.Join(agentDataDir, "client-"+version.Program+"-controller.crt"),
|
||||
filepath.Join(agentDataDir, "client-"+version.Program+"-controller.key"),
|
||||
filepath.Join(agentDataDir, "client-kubelet.crt"),
|
||||
filepath.Join(agentDataDir, "client-kubelet.key"),
|
||||
filepath.Join(agentDataDir, "serving-kubelet.crt"),
|
||||
filepath.Join(agentDataDir, "serving-kubelet.key"),
|
||||
filepath.Join(agentDataDir, "client-kube-proxy.crt"),
|
||||
filepath.Join(agentDataDir, "client-kube-proxy.key"),
|
||||
certs := []string{
|
||||
"client-" + version.Program + "-controller.crt",
|
||||
"client-" + version.Program + "-controller.key",
|
||||
"client-kubelet.crt",
|
||||
"client-kubelet.key",
|
||||
"serving-kubelet.crt",
|
||||
"serving-kubelet.key",
|
||||
"client-kube-proxy.crt",
|
||||
"client-kube-proxy.key",
|
||||
}
|
||||
for _, cert := range agentCerts {
|
||||
if err := copyFile(cert, tlsBackupDir); err != nil {
|
||||
for _, cert := range certs {
|
||||
agentCert := filepath.Join(agentDataDir, cert)
|
||||
tlsBackupCert := filepath.Join(tlsBackupDir, cert)
|
||||
if err := util.CopyFile(agentCert, tlsBackupCert, true); err != nil {
|
||||
return "", err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package configfilearg
|
||||
|
||||
import (
|
||||
"os"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
@ -72,3 +73,57 @@ func Test_UnitMustParse(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_UnitMustFindString(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
args []string
|
||||
target string
|
||||
setup func() error // Optional, delete if unused
|
||||
teardown func() error // Optional, delete if unused
|
||||
want string
|
||||
}{
|
||||
{
|
||||
name: "Target not found in config file",
|
||||
args: []string{"--foo", "bar"},
|
||||
target: "token",
|
||||
|
||||
want: "",
|
||||
|
||||
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/data.yaml") },
|
||||
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||
},
|
||||
{
|
||||
name: "Target found in config file",
|
||||
args: []string{"--foo", "bar"},
|
||||
target: "token",
|
||||
|
||||
want: "12345",
|
||||
|
||||
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
||||
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||
},
|
||||
{
|
||||
name: "Override flag found, function is short-circuited",
|
||||
args: []string{"--foo", "bar", "-h"},
|
||||
target: "token",
|
||||
|
||||
want: "-h",
|
||||
|
||||
setup: func() error { return os.Setenv("K3S_CONFIG_FILE", "./testdata/defaultdata.yaml") },
|
||||
teardown: func() error { return os.Unsetenv("K3S_CONFIG_FILE") },
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
defer tt.teardown()
|
||||
if err := tt.setup(); err != nil {
|
||||
t.Errorf("Setup for MustFindString() failed = %v", err)
|
||||
return
|
||||
}
|
||||
if got := MustFindString(tt.args, tt.target); got != tt.want {
|
||||
t.Errorf("MustFindString() = %+v\nWant = %+v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,9 +11,9 @@ NETWORK4_PREFIX = "10.10.10"
|
|||
NETWORK6_PREFIX = "fd11:decf:c0ff:ee"
|
||||
install_type = ""
|
||||
|
||||
def provision(vm, roles, role_num, node_num)
|
||||
def provision(vm, role, role_num, node_num)
|
||||
vm.box = NODE_BOXES[node_num]
|
||||
vm.hostname = "#{roles[0]}-#{role_num}"
|
||||
vm.hostname = role
|
||||
node_ip4 = "#{NETWORK4_PREFIX}.#{100+node_num}"
|
||||
node_ip6 = "#{NETWORK6_PREFIX}::#{10+node_num}"
|
||||
node_ip6_gw = "#{NETWORK6_PREFIX}::1"
|
||||
|
@ -36,7 +36,7 @@ def provision(vm, roles, role_num, node_num)
|
|||
|
||||
vm.provision "Ping Check", type: "shell", inline: "ping -c 2 k3s.io"
|
||||
|
||||
if roles.include?("server") && role_num == 0
|
||||
if role.include?("server") && role_num == 0
|
||||
vm.provision :k3s, run: 'once' do |k3s|
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
k3s.args = "server "
|
||||
|
@ -53,7 +53,7 @@ def provision(vm, roles, role_num, node_num)
|
|||
YAML
|
||||
k3s.env = ["K3S_KUBECONFIG_MODE=0644", install_type]
|
||||
end
|
||||
elsif roles.include?("server") && role_num != 0
|
||||
elsif role.include?("server") && role_num != 0
|
||||
vm.provision :k3s, run: 'once' do |k3s|
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
k3s.args = "server "
|
||||
|
@ -70,7 +70,7 @@ def provision(vm, roles, role_num, node_num)
|
|||
k3s.env = ["K3S_KUBECONFIG_MODE=0644", install_type]
|
||||
end
|
||||
end
|
||||
if roles.include?("agent")
|
||||
if role.include?("agent")
|
||||
vm.provision :k3s, run: 'once' do |k3s|
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
k3s.args = "agent "
|
||||
|
@ -105,10 +105,9 @@ Vagrant.configure("2") do |config|
|
|||
# over the node roles themselves
|
||||
NODE_ROLES.length.times do |i|
|
||||
name = NODE_ROLES[i]
|
||||
role_num = name.split("-", -1).pop.to_i
|
||||
config.vm.define name do |node|
|
||||
roles = name.split("-", -1)
|
||||
role_num = roles.pop.to_i
|
||||
provision(node.vm, roles, role_num, i)
|
||||
provision(node.vm, name, role_num, i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,9 +11,9 @@ NETWORK4_PREFIX = "10.10.10"
|
|||
PUBLIC_NETWORK4_PREFIX = "10.100.100"
|
||||
install_type = ""
|
||||
|
||||
def provision(vm, roles, role_num, node_num)
|
||||
def provision(vm, role, role_num, node_num)
|
||||
vm.box = NODE_BOXES[node_num]
|
||||
vm.hostname = "#{roles[0]}-#{role_num}"
|
||||
vm.hostname = role
|
||||
node_ip4 = "#{NETWORK4_PREFIX}.#{100+node_num}"
|
||||
node_ip4_public = "#{PUBLIC_NETWORK4_PREFIX}.#{100+node_num}"
|
||||
vm.network "private_network", :ip => node_ip4, :netmask => "255.255.255.0"
|
||||
|
@ -27,7 +27,7 @@ def provision(vm, roles, role_num, node_num)
|
|||
|
||||
install_type = getInstallType(vm, RELEASE_VERSION, GITHUB_BRANCH)
|
||||
|
||||
if roles.include?("server") && role_num == 0
|
||||
if role.include?("server") && role_num == 0
|
||||
vm.provision :k3s, run: 'once' do |k3s|
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
k3s.args = "server "
|
||||
|
@ -41,7 +41,7 @@ def provision(vm, roles, role_num, node_num)
|
|||
k3s.env = ["K3S_KUBECONFIG_MODE=0644", install_type]
|
||||
end
|
||||
end
|
||||
if roles.include?("agent")
|
||||
if role.include?("agent")
|
||||
vm.provision :k3s, run: 'once' do |k3s|
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
k3s.args = "agent "
|
||||
|
@ -77,10 +77,9 @@ Vagrant.configure("2") do |config|
|
|||
# over the node roles themselves
|
||||
NODE_ROLES.length.times do |i|
|
||||
name = NODE_ROLES[i]
|
||||
role_num = name.split("-", -1).pop.to_i
|
||||
config.vm.define name do |node|
|
||||
roles = name.split("-", -1)
|
||||
role_num = roles.pop.to_i
|
||||
provision(node.vm, roles, role_num, i)
|
||||
provision(node.vm, name, role_num, i)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -5,7 +5,6 @@ NODE_BOXES = (ENV['E2E_NODE_BOXES'] ||
|
|||
['generic/ubuntu2004', 'generic/ubuntu2004', 'generic/ubuntu2004', 'generic/ubuntu2004', 'generic/ubuntu2004'])
|
||||
GITHUB_BRANCH = (ENV['E2E_GITHUB_BRANCH'] || "master")
|
||||
RELEASE_VERSION = (ENV['E2E_RELEASE_VERSION'] || "")
|
||||
EXTERNAL_DB = (ENV['E2E_EXTERNAL_DB'] || "etcd")
|
||||
NODE_CPUS = (ENV['E2E_NODE_CPUS'] || 2).to_i
|
||||
NODE_MEMORY = (ENV['E2E_NODE_MEMORY'] || 1024).to_i
|
||||
# Virtualbox >= 6.1.28 require `/etc/vbox/network.conf` for expanded private networks
|
||||
|
@ -35,10 +34,10 @@ def provision(vm, role, role_num, node_num)
|
|||
k3s.args = "server "
|
||||
k3s.config = <<~YAML
|
||||
token: vagrant
|
||||
cluster-init: true
|
||||
node-external-ip: #{NETWORK_PREFIX}.100
|
||||
flannel-iface: eth1
|
||||
tls-san: #{NETWORK_PREFIX}.100.nip.io
|
||||
#{db_type}
|
||||
YAML
|
||||
k3s.env = %W[K3S_KUBECONFIG_MODE=0644 #{install_type}]
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
|
@ -52,7 +51,6 @@ def provision(vm, role, role_num, node_num)
|
|||
token: vagrant
|
||||
node-external-ip: #{node_ip}
|
||||
flannel-iface: eth1
|
||||
#{db_type}
|
||||
YAML
|
||||
k3s.env = %W[K3S_KUBECONFIG_MODE=0644 K3S_TOKEN=vagrant #{install_type}]
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
|
@ -67,7 +65,6 @@ def provision(vm, role, role_num, node_num)
|
|||
token: vagrant
|
||||
node-external-ip: #{node_ip}
|
||||
flannel-iface: eth1
|
||||
#{db_type}
|
||||
YAML
|
||||
k3s.env = %W[K3S_KUBECONFIG_MODE=0644 #{install_type}]
|
||||
k3s.config_mode = '0644' # side-step https://github.com/k3s-io/k3s/issues/4321
|
||||
|
@ -75,24 +72,10 @@ def provision(vm, role, role_num, node_num)
|
|||
end
|
||||
if vm.box.to_s.include?("microos")
|
||||
vm.provision 'k3s-reload', type: 'reload', run: 'once'
|
||||
if !EXTERNAL_DB.empty?
|
||||
vm.provision "shell", inline: "docker start #{EXTERNAL_DB}"
|
||||
end
|
||||
end
|
||||
# This step does not run by default and is designed to be called by higher level tools
|
||||
end
|
||||
|
||||
def getDBType(role, role_num, vm)
|
||||
if ( EXTERNAL_DB == "" || EXTERNAL_DB == "etcd" )
|
||||
if role.include?("server") && role_num == 0
|
||||
return "cluster-init: true"
|
||||
end
|
||||
else
|
||||
puts "Unknown EXTERNAL_DB: " + EXTERNAL_DB
|
||||
abort
|
||||
end
|
||||
return ""
|
||||
end
|
||||
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vagrant.plugins = ["vagrant-k3s", "vagrant-reload"]
|
||||
|
|
|
@ -25,7 +25,6 @@ var ci = flag.Bool("ci", false, "running on CI")
|
|||
var local = flag.Bool("local", false, "deploy a locally built K3s binary")
|
||||
|
||||
// Environment Variables Info:
|
||||
// E2E_EXTERNAL_DB: mysql, postgres, etcd (default: etcd)
|
||||
// E2E_RELEASE_VERSION=v1.23.1+k3s2 (default: latest commit from master)
|
||||
|
||||
func Test_E2ESnapshotRestore(t *testing.T) {
|
||||
|
|
Loading…
Reference in New Issue