apiserver identity: update Lease creation integration test to validate new naming format and hostname label

Signed-off-by: Andrew Sy Kim <andrewsy@google.com>
This commit is contained in:
Andrew Sy Kim 2022-10-24 11:24:59 -04:00
parent 21507902ba
commit f74f819e1a

View File

@ -18,11 +18,14 @@ package controlplane
import ( import (
"context" "context"
"strings" "fmt"
"hash/fnv"
"os"
"testing" "testing"
"time" "time"
coordinationv1 "k8s.io/api/coordination/v1" coordinationv1 "k8s.io/api/coordination/v1"
corev1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
@ -40,6 +43,12 @@ const (
testLeaseName = "apiserver-lease-test" testLeaseName = "apiserver-lease-test"
) )
func expectedAPIServerIdentity(hostname string) string {
h := fnv.New32a()
h.Write([]byte(hostname))
return "kube-apiserver-" + fmt.Sprint(h.Sum32())
}
func TestCreateLeaseOnStart(t *testing.T) { func TestCreateLeaseOnStart(t *testing.T) {
defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.APIServerIdentity, true)() defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.APIServerIdentity, true)()
result := kubeapiservertesting.StartTestServerOrDie(t, nil, nil, framework.SharedEtcd()) result := kubeapiservertesting.StartTestServerOrDie(t, nil, nil, framework.SharedEtcd())
@ -50,6 +59,11 @@ func TestCreateLeaseOnStart(t *testing.T) {
t.Fatalf("Unexpected error: %v", err) t.Fatalf("Unexpected error: %v", err)
} }
hostname, err := os.Hostname()
if err != nil {
t.Fatalf("Unexpected error getting apiserver hostname: %v", err)
}
t.Logf(`Waiting the kube-apiserver Lease to be created`) t.Logf(`Waiting the kube-apiserver Lease to be created`)
if err := wait.PollImmediate(500*time.Millisecond, 10*time.Second, func() (bool, error) { if err := wait.PollImmediate(500*time.Millisecond, 10*time.Second, func() (bool, error) {
leases, err := kubeclient. leases, err := kubeclient.
@ -59,10 +73,25 @@ func TestCreateLeaseOnStart(t *testing.T) {
if err != nil { if err != nil {
return false, err return false, err
} }
if leases != nil && len(leases.Items) == 1 && strings.HasPrefix(leases.Items[0].Name, "kube-apiserver-") {
return true, nil if leases == nil {
}
return false, nil return false, nil
}
if len(leases.Items) != 1 {
return false, nil
}
lease := leases.Items[0]
if lease.Name != expectedAPIServerIdentity(hostname) {
return false, fmt.Errorf("unexpected apiserver identity, got: %v, expected: %v", lease.Name, expectedAPIServerIdentity(hostname))
}
if lease.Labels[corev1.LabelHostname] != hostname {
return false, fmt.Errorf("unexpected hostname label, got: %v, expected: %v", lease.Labels[corev1.LabelHostname], hostname)
}
return true, nil
}); err != nil { }); err != nil {
t.Fatalf("Failed to see the kube-apiserver lease: %v", err) t.Fatalf("Failed to see the kube-apiserver lease: %v", err)
} }