mirror of
https://github.com/rancher/k3k.git
synced 2026-05-17 06:46:40 +00:00
89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package k3k_test
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
"github.com/rancher/k3k/pkg/apis/k3k.io/v1alpha1"
|
|
corev1 "k8s.io/api/core/v1"
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/utils/ptr"
|
|
)
|
|
|
|
var _ = When("a cluster is installed", func() {
|
|
|
|
var namespace string
|
|
|
|
BeforeEach(func() {
|
|
createdNS := &corev1.Namespace{ObjectMeta: v1.ObjectMeta{GenerateName: "ns-"}}
|
|
createdNS, err := k8s.CoreV1().Namespaces().Create(context.Background(), createdNS, v1.CreateOptions{})
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
namespace = createdNS.Name
|
|
})
|
|
|
|
It("will be created in shared mode", func() {
|
|
cluster := v1alpha1.Cluster{
|
|
ObjectMeta: v1.ObjectMeta{
|
|
Name: "mycluster",
|
|
Namespace: namespace,
|
|
},
|
|
Spec: v1alpha1.ClusterSpec{
|
|
Mode: v1alpha1.SharedClusterMode,
|
|
Servers: ptr.To[int32](1),
|
|
Agents: ptr.To[int32](0),
|
|
Version: "v1.26.1-k3s1",
|
|
},
|
|
}
|
|
|
|
err := k8sClient.Create(context.Background(), &cluster)
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
|
|
By("checking server and kubelet readiness state")
|
|
|
|
// check that the server Pod and the Kubelet are in Ready state
|
|
Eventually(func() bool {
|
|
podList, err := k8s.CoreV1().Pods(namespace).List(context.Background(), v1.ListOptions{})
|
|
Expect(err).To(Not(HaveOccurred()))
|
|
|
|
serverRunning := false
|
|
kubeletRunning := false
|
|
|
|
for _, pod := range podList.Items {
|
|
imageName := pod.Spec.Containers[0].Image
|
|
imageName = strings.Split(imageName, ":")[0] // remove tag
|
|
|
|
switch imageName {
|
|
case "rancher/k3s":
|
|
serverRunning = pod.Status.Phase == corev1.PodRunning
|
|
case "rancher/k3k-kubelet":
|
|
kubeletRunning = pod.Status.Phase == corev1.PodRunning
|
|
}
|
|
|
|
if serverRunning && kubeletRunning {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}).
|
|
WithTimeout(time.Minute).
|
|
WithPolling(time.Second * 5).
|
|
Should(BeTrue())
|
|
|
|
By("checking the existence of the bootstrap secret")
|
|
secretName := fmt.Sprintf("k3k-%s-bootstrap", cluster.Name)
|
|
|
|
Eventually(func() error {
|
|
_, err := k8s.CoreV1().Secrets(namespace).Get(context.Background(), secretName, v1.GetOptions{})
|
|
return err
|
|
}).
|
|
WithTimeout(time.Minute * 2).
|
|
WithPolling(time.Second * 5).
|
|
Should(BeNil())
|
|
})
|
|
})
|