diff --git a/lib/services/kubernetes.go b/lib/services/kubernetes.go index 5b553c281da43..63fad6c8e92bf 100644 --- a/lib/services/kubernetes.go +++ b/lib/services/kubernetes.go @@ -251,8 +251,10 @@ func getOrSetDefaultGCPDescription(cluster gcp.GKECluster) string { // labelsFromGCPKubeCluster creates kube cluster labels. func labelsFromGCPKubeCluster(cluster gcp.GKECluster) map[string]string { - labels := maps.Clone(cluster.Labels) + labels := make(map[string]string) + maps.Copy(labels, cluster.Labels) labels[types.OriginLabel] = types.OriginCloud + labels[types.CloudLabel] = types.CloudGCP labels[types.DiscoveryLabelGCPLocation] = cluster.Location diff --git a/lib/services/kubernetes_test.go b/lib/services/kubernetes_test.go index eaed30dc3b36c..a32c9964aa20c 100644 --- a/lib/services/kubernetes_test.go +++ b/lib/services/kubernetes_test.go @@ -213,6 +213,41 @@ func TestNewKubeClusterFromGCPGKE(t *testing.T) { require.False(t, actual.IsAWS()) } +func TestNewKubeClusterFromGCPGKEWithoutLabels(t *testing.T) { + expected, err := types.NewKubernetesClusterV3(types.Metadata{ + Name: "cluster1", + Description: "desc1", + Labels: map[string]string{ + types.DiscoveryLabelGCPLocation: "central-1", + types.DiscoveryLabelGCPProjectID: "p1", + types.CloudLabel: types.CloudGCP, + types.OriginLabel: types.OriginCloud, + }, + }, types.KubernetesClusterSpecV3{ + GCP: types.KubeGCP{ + Name: "cluster1", + ProjectID: "p1", + Location: "central-1", + }, + }) + require.NoError(t, err) + + cluster := gcp.GKECluster{ + Name: "cluster1", + Status: containerpb.Cluster_RUNNING, + Labels: nil, + ProjectID: "p1", + Location: "central-1", + Description: "desc1", + } + actual, err := NewKubeClusterFromGCPGKE(cluster) + require.NoError(t, err) + require.Empty(t, cmp.Diff(expected, actual)) + require.True(t, actual.IsGCP()) + require.False(t, actual.IsAzure()) + require.False(t, actual.IsAWS()) +} + var kubeServerYAML = `--- kind: kube_server version: v3