From 8b409e8f777a305454616554c40c905acad596ac Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Tue, 30 May 2017 10:43:04 +0200 Subject: [PATCH] aggregation: add ExternalName service support --- .../src/k8s.io/apiserver/pkg/util/proxy/proxy.go | 8 ++++++++ .../apiserver/pkg/util/proxy/proxy_test.go | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy.go b/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy.go index 4f7051e0da0..db631dfde3b 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy.go +++ b/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy.go @@ -113,6 +113,14 @@ func ResolveCluster(services listersv1.ServiceLister, namespace, id string) (*ur Scheme: "https", Host: net.JoinHostPort(svc.Spec.ClusterIP, fmt.Sprintf("%d", svcPort.Port)), }, nil + case svc.Spec.Type == v1.ServiceTypeExternalName: + if port.Type != intstr.Int { + return nil, fmt.Errorf("named ports not supported") + } + return &url.URL{ + Scheme: "https", + Host: net.JoinHostPort(svc.Spec.ExternalName, port.String()), + }, nil default: return nil, fmt.Errorf("unsupported service type %q", svc.Spec.Type) } diff --git a/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy_test.go b/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy_test.go index ddcee7a8aad..f21cfeed114 100644 --- a/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy_test.go +++ b/staging/src/k8s.io/apiserver/pkg/util/proxy/proxy_test.go @@ -174,6 +174,22 @@ func TestResolve(t *testing.T) { clusterMode: expectation{url: "https://np:443"}, endpointMode: expectation{url: "https://127.0.0.1:1443"}, }, + { + name: "external name", + services: []*v1.Service{ + { + ObjectMeta: metav1.ObjectMeta{Namespace: "one", Name: "alfa"}, + Spec: v1.ServiceSpec{ + Type: v1.ServiceTypeExternalName, + ExternalName: "foo.bar.com", + }, + }, + }, + endpoints: nil, + + clusterMode: expectation{url: "https://foo.bar.com:443"}, + endpointMode: expectation{error: true}, + }, { name: "missing service", services: nil,