// This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. //go:build integration_k8s package k8s import ( "context" "fmt" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/siderolabs/talos/internal/integration/base" "github.com/siderolabs/talos/pkg/machinery/constants" ) // VersionSuite verifies Talos version. type VersionSuite struct { base.K8sSuite } // SuiteName ... func (suite *VersionSuite) SuiteName() string { return "k8s.VersionSuite" } // TestExpectedVersion verifies that node versions matches expected. func (suite *VersionSuite) TestExpectedVersion() { // verify k8s version (api server) apiServerVersion, err := suite.DiscoveryClient.ServerVersion() suite.Require().NoError(err) expectedAPIServerVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion) suite.Assert().Equal(expectedAPIServerVersion, apiServerVersion.GitVersion) checkKernelVersion := suite.Capabilities().RunsTalosKernel // verify each node (kubelet version, Talos version, etc.) nodes, err := suite.Clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) suite.Require().NoError(err) expectedTalosVersion := fmt.Sprintf("Talos (%s)", suite.Version) expectedContainerRuntimeVersion := fmt.Sprintf("containerd://%s", constants.DefaultContainerdVersion) expectedKubeletVersion := fmt.Sprintf("v%s", constants.DefaultKubernetesVersion) expectedKernelVersion := constants.DefaultKernelVersion for _, node := range nodes.Items { suite.Assert().Equal(expectedTalosVersion, node.Status.NodeInfo.OSImage) suite.Assert().Equal("linux", node.Status.NodeInfo.OperatingSystem) suite.Assert().Equal(expectedContainerRuntimeVersion, node.Status.NodeInfo.ContainerRuntimeVersion) suite.Assert().Equal(expectedKubeletVersion, node.Status.NodeInfo.KubeletVersion) if checkKernelVersion { suite.Assert().Equal(expectedKernelVersion, node.Status.NodeInfo.KernelVersion) } } } func init() { allSuites = append(allSuites, new(VersionSuite)) }