Skip to content

Commit 86c01b2

Browse files
routesrv: require kubernetes option (#2950)
Require kubernetes option (explicitly or via -kubernetes flag). Initially routesrv implied this option as it was envisioned for serving Kubernetes dataclient routes. Later an endpoint to serve Redis endpoints was added by #2237 Within #2476 skipper allows Redis endpoints discovery without using kubernetes dataclient for routing. This behaviour is configured by the -kubernetes flag. The plan is to allow routesrv the same - provide Redis endpoints without using Kubernetes dataclient to create routes. This change is the first step that converts implied Kubernetes option into required. This is a breaking change for users that run routesrv without -kubernetes flag or use it from the library without setting Kubernetes option. For #2476 Signed-off-by: Alexander Yastrebov <[email protected]>
1 parent d4e9b79 commit 86c01b2

File tree

6 files changed

+24
-1
lines changed

6 files changed

+24
-1
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.20
1+
v0.21

cmd/routesrv/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@ func main() {
1212
log.Fatalf("Error processing config: %s", err)
1313
}
1414

15+
if !cfg.KubernetesIngress {
16+
log.Fatalf("-kubernetes flag required")
17+
}
18+
1519
log.SetLevel(cfg.ApplicationLogLevel)
1620
if cfg.ApplicationLogJSONEnabled {
1721
log.SetFormatter(&log.JSONFormatter{})

redis_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ spec:
136136

137137
rsvo := skipper.Options{
138138
Address: findAddress(t),
139+
Kubernetes: true,
139140
KubernetesURL: lb.URL,
140141
KubernetesRedisServiceNamespace: "skipper",
141142
KubernetesRedisServiceName: "redis",

routesrv/routesrv.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package routesrv
22

33
import (
44
"context"
5+
"fmt"
56
"net/http"
67
"os"
78
"os/signal"
@@ -85,6 +86,10 @@ func New(opts skipper.Options) (*RouteServer, error) {
8586
supportHandler.Handle("/debug/pprof/", metricsHandler)
8687
}
8788

89+
if !opts.Kubernetes {
90+
return nil, fmt.Errorf(`option "Kubernetes" is required`)
91+
}
92+
8893
dataclient, err := kubernetes.New(opts.KubernetesDataClientOptions())
8994
if err != nil {
9095
return nil, err

routesrv/routesrv_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ func loadKubeYAML(t *testing.T, path string) io.Reader {
7272
func newRouteServer(t *testing.T, kubeServer *httptest.Server) *routesrv.RouteServer {
7373
return newRouteServerWithOptions(t, skipper.Options{
7474
SourcePollTimeout: pollInterval,
75+
Kubernetes: true,
7576
KubernetesURL: kubeServer.URL,
7677
})
7778
}
@@ -249,6 +250,7 @@ func TestRedisEndpointSlices(t *testing.T) {
249250
defer ks.Close()
250251
rs := newRouteServerWithOptions(t, skipper.Options{
251252
SourcePollTimeout: pollInterval,
253+
Kubernetes: true,
252254
KubernetesURL: ks.URL,
253255
KubernetesRedisServiceNamespace: "namespace1",
254256
KubernetesRedisServiceName: "service1",
@@ -272,6 +274,7 @@ func TestRedisEndpoints(t *testing.T) {
272274
defer ks.Close()
273275
rs := newRouteServerWithOptions(t, skipper.Options{
274276
SourcePollTimeout: pollInterval,
277+
Kubernetes: true,
275278
KubernetesURL: ks.URL,
276279
KubernetesRedisServiceNamespace: "namespace1",
277280
KubernetesRedisServiceName: "service1",
@@ -293,6 +296,7 @@ func TestFetchedIngressRoutesAreServedInEskipFormat(t *testing.T) {
293296
defer ks.Close()
294297
rs := newRouteServerWithOptions(t, skipper.Options{
295298
SourcePollTimeout: pollInterval,
299+
Kubernetes: true,
296300
KubernetesURL: ks.URL,
297301
})
298302

@@ -376,6 +380,7 @@ func TestRoutesWithDefaultFilters(t *testing.T) {
376380
defer ks.Close()
377381
rs := newRouteServerWithOptions(t, skipper.Options{
378382
SourcePollTimeout: pollInterval,
383+
Kubernetes: true,
379384
KubernetesURL: ks.URL,
380385
DefaultFilters: &eskip.DefaultFilters{
381386
Prepend: []*eskip.Filter{
@@ -419,6 +424,7 @@ func TestRoutesWithOAuth2Callback(t *testing.T) {
419424
defer ks.Close()
420425
rs := newRouteServerWithOptions(t, skipper.Options{
421426
SourcePollTimeout: pollInterval,
427+
Kubernetes: true,
422428
KubernetesURL: ks.URL,
423429
EnableOAuth2GrantFlow: true,
424430
OAuth2CallbackPath: "/.well-known/oauth2-callback",
@@ -450,6 +456,7 @@ func TestRoutesWithEastWest(t *testing.T) {
450456
defer ks.Close()
451457
rs := newRouteServerWithOptions(t, skipper.Options{
452458
SourcePollTimeout: pollInterval,
459+
Kubernetes: true,
453460
KubernetesURL: ks.URL,
454461
KubernetesEastWestRangeDomains: []string{"ingress.cluster.local"},
455462
KubernetesEastWestRangePredicates: []*eskip.Predicate{
@@ -610,6 +617,7 @@ func TestESkipBytesHandlerWithXCount(t *testing.T) {
610617
defer ks.Close()
611618
rs := newRouteServerWithOptions(t, skipper.Options{
612619
SourcePollTimeout: pollInterval,
620+
Kubernetes: true,
613621
KubernetesURL: ks.URL,
614622
})
615623

@@ -642,6 +650,7 @@ func TestRoutesWithEditRoute(t *testing.T) {
642650
defer ks.Close()
643651
rs := newRouteServerWithOptions(t, skipper.Options{
644652
SourcePollTimeout: pollInterval,
653+
Kubernetes: true,
645654
KubernetesURL: ks.URL,
646655
EditRoute: []*eskip.Editor{
647656
eskip.NewEditor(regexp.MustCompile("Host[(](.*)[)]"), "HostAny($1)"),
@@ -674,6 +683,7 @@ func TestRoutesWithCloneRoute(t *testing.T) {
674683
defer ks.Close()
675684
rs := newRouteServerWithOptions(t, skipper.Options{
676685
SourcePollTimeout: pollInterval,
686+
Kubernetes: true,
677687
KubernetesURL: ks.URL,
678688
CloneRoute: []*eskip.Clone{
679689
eskip.NewClone(regexp.MustCompile("Host"), "HostAny"),
@@ -706,6 +716,7 @@ func TestRoutesWithExplicitLBAlgorithm(t *testing.T) {
706716
defer ks.Close()
707717
rs := newRouteServerWithOptions(t, skipper.Options{
708718
SourcePollTimeout: pollInterval,
719+
Kubernetes: true,
709720
KubernetesURL: ks.URL,
710721
KubernetesDefaultLoadBalancerAlgorithm: "powerOfRandomNChoices",
711722
})
@@ -793,6 +804,7 @@ func TestESkipBytesHandlerGzipServedForDefaultClient(t *testing.T) {
793804

794805
rs, err := routesrv.New(skipper.Options{
795806
SourcePollTimeout: pollInterval,
807+
Kubernetes: true,
796808
KubernetesURL: ks.URL,
797809
})
798810
require.NoError(t, err)

routesrv/shutdown_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func TestServerShutdownHTTP(t *testing.T) {
6969
ks.Start()
7070

7171
o := skipper.Options{
72+
Kubernetes: true,
7273
KubernetesURL: "http://" + ks.Listener.Addr().String(),
7374
SourcePollTimeout: 500 * time.Millisecond,
7475
}

0 commit comments

Comments
 (0)