Updating ControlPlane to support NodeName field

This commit is contained in:
Rob Scott 2020-11-10 17:51:02 -08:00
parent d985438772
commit 877ad98c53
No known key found for this signature in database
GPG Key ID: 90C19B2D4A99C91B
3 changed files with 17 additions and 8 deletions

View File

@ -14,6 +14,7 @@ go_library(
visibility = ["//visibility:public"],
deps = [
"//pkg/api/v1/endpoints:go_default_library",
"//pkg/features:go_default_library",
"//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
@ -23,6 +24,7 @@ go_library(
"//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/rest:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/storage:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/discovery/v1beta1:go_default_library",
"//staging/src/k8s.io/client-go/util/retry:go_default_library",

View File

@ -23,8 +23,10 @@ import (
apiequality "k8s.io/apimachinery/pkg/api/equality"
"k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
discoveryclient "k8s.io/client-go/kubernetes/typed/discovery/v1beta1"
"k8s.io/kubernetes/pkg/features"
utilnet "k8s.io/utils/net"
)
@ -166,17 +168,22 @@ func getEndpointsFromAddresses(addresses []corev1.EndpointAddress, addressType d
// endpointFromAddress generates an Endpoint from an EndpointAddress resource.
func endpointFromAddress(address corev1.EndpointAddress, ready bool) discovery.Endpoint {
topology := map[string]string{}
if address.NodeName != nil {
topology["kubernetes.io/hostname"] = *address.NodeName
}
return discovery.Endpoint{
ep := discovery.Endpoint{
Addresses: []string{address.IP},
Conditions: discovery.EndpointConditions{Ready: &ready},
TargetRef: address.TargetRef,
Topology: topology,
}
if address.NodeName != nil {
ep.Topology = map[string]string{
"kubernetes.io/hostname": *address.NodeName,
}
if utilfeature.DefaultFeatureGate.Enabled(features.EndpointSliceNodeName) {
ep.NodeName = address.NodeName
}
}
return ep
}
// allAddressesIPv6 returns true if all provided addresses are IPv6.

View File

@ -232,7 +232,7 @@ func TestEndpointsAdapterUpdate(t *testing.T) {
// with one that has an IPv4 address type.
endpoints4, _ := generateEndpointsAndSlice("foo", "testing", []int{80}, []string{"10.1.2.7", "10.1.2.8"})
_, epSlice4IP := generateEndpointsAndSlice("foo", "testing", []int{80}, []string{"10.1.2.7", "10.1.2.8"})
epSlice4IP.AddressType = discovery.AddressTypeIP
epSlice4IP.AddressType = discovery.AddressType("IP")
_, epSlice4IPv4 := generateEndpointsAndSlice("foo", "testing", []int{80}, []string{"10.1.2.7", "10.1.2.8"})
testCases := map[string]struct {