Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow redis shards discovery without full-fledged k8s dataclient #2476

Closed
AlexanderYastrebov opened this issue Jul 20, 2023 · 2 comments · Fixed by #2934
Closed

Allow redis shards discovery without full-fledged k8s dataclient #2476

AlexanderYastrebov opened this issue Jul 20, 2023 · 2 comments · Fixed by #2934

Comments

@AlexanderYastrebov
Copy link
Member

Is your feature request related to a problem? Please describe.

#2009 added dynamic discovery of Redis shards via Kubernetes service endpoints.
This implementation relies on k8s dataclient present as it uses the endpoints data that is updated periodically by routing datasource poll cycle.

This works fine for k8s cluster-ingress type of deployment where Skipper needs k8s dataclient anyway.
It is not great for application type deployment where full k8s dataclient is not needed. Most likely users would need to hack configure k8s dataclient and e.g. use a fake selector (#2045) or ingress/routegroup class (#334, #1456) to not fetch Ingresses and RouteGroups from the cluster.

Describe the solution you would like

Skipper supports Redis shards discovery in k8s without fetching other cluster resources.
Ideally k8s dataclient is not registered into the routing to not produce empty/default routes (like https redirect).
Maybe it is possible to use k8s dataclient's cluster client to fetch redis endpoints and not rely on datasource poll cycle.

Describe alternatives you've considered (optional)
A clear and concise description of any alternative solutions or features you've considered.

Additional context (optional)
Add any other context or screenshots about the feature request here.

Would you like to work on it?
Yes

@AlexanderYastrebov
Copy link
Member Author

Skipper also supports pulling endpoints via HTTP (e.g. from routesrv) #2242
Might be nice to support pulling directly from k8s apiserver (with ServiceAccount token).

Users may also deploy routesrv and only use redis endpoints API but that adds another moving part.

AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
`routesrv` may be configured to produce no routes,
e.g. to only serve Redis endpoints:

```go
opts := cfg.ToOptions()

// ignore all Ingresses and RouteGroups
opts.KubernetesIngressLabelSelectors = map[string]string{"ignore": "all"}
opts.KubernetesRouteGroupsLabelSelectors = map[string]string{"ignore": "all"}

// disable auxiliary routes
opts.KubernetesHealthcheck = false
opts.KubernetesHTTPSRedirect = false

if err := routesrv.Run(opts); err != nil {
	log.Fatal(err)
}
```

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
`routesrv` may be configured to produce no routes,
e.g. to only serve Redis endpoints from the namespace without
Ingresses/RouteGroups:
```sh
bin/routesrv \
-enable-kubernetes-endpointslices \
-kubernetes-namespace=my-redis-ns \
-kubernetes-redis-service-namespace=my-redis-ns \
-kubernetes-redis-service-name=my-redis \
-kubernetes-https-redirect=false \
-kubernetes-healthcheck=false \
...
```

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
@AlexanderYastrebov
Copy link
Member Author

Users may also deploy routesrv and only use redis endpoints API

routesrv may be configured to produce no routes, e.g. to only serve Redis endpoints from the namespace without
Ingresses/RouteGroups:

bin/routesrv \
-enable-kubernetes-endpointslices \
-kubernetes-namespace=my-redis-ns \
-kubernetes-redis-service-namespace=my-redis-ns \
-kubernetes-redis-service-name=my-redis \
-kubernetes-https-redirect=false \
-kubernetes-healthcheck=false \
...

szuecs pushed a commit that referenced this issue Feb 8, 2024
`routesrv` may be configured to produce no routes,
e.g. to only serve Redis endpoints from the namespace without
Ingresses/RouteGroups:
```sh
bin/routesrv \
-enable-kubernetes-endpointslices \
-kubernetes-namespace=my-redis-ns \
-kubernetes-redis-service-namespace=my-redis-ns \
-kubernetes-redis-service-name=my-redis \
-kubernetes-https-redirect=false \
-kubernetes-healthcheck=false \
...
```

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 8, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
* change GetEndpointAddresses to return host:port addresses to avoid trimming implicit scheme
* use all ports for endpointslices addresses for consistency with endpoints
* uses separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
* change GetEndpointAddresses to return host:port addresses to avoid trimming implicit scheme
* use all ports for endpointslices addresses for consistency with endpoints
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
* change GetEndpointAddresses to return addresses without port
* use -kubernetes-redis-service-port to configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
…es without port

* use -kubernetes-redis-service-port flag to configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
…es without port

* use -kubernetes-redis-service-port flag to explicitly configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

This is a breaking change for users that:

* use kubernetes dataclient GetEndpointAddresses method
* use dynamic redis shards discovery AND use non-standard redis port AND do not specify -kubernetes-redis-service-port

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
…es without scheme and port

* use -kubernetes-redis-service-port flag to explicitly configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

This is a breaking change for users that:

* use kubernetes dataclient GetEndpointAddresses method
* use dynamic redis shards discovery AND use non-standard redis port AND do not specify -kubernetes-redis-service-port

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 9, 2024
…es without scheme and port

* use -kubernetes-redis-service-port flag to explicitly configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

This is a breaking change for users that:

* use kubernetes dataclient GetEndpointAddresses method
* use dynamic redis shards discovery AND use non-standard redis port AND do not specify -kubernetes-redis-service-port

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 12, 2024
…es without scheme and port

* use -kubernetes-redis-service-port flag to explicitly configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

This is a breaking change for users that:

* use kubernetes dataclient GetEndpointAddresses method
* use dynamic redis shards discovery AND use non-standard redis port AND do not specify -kubernetes-redis-service-port

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 12, 2024
…es without scheme and port (#2917)

* use -kubernetes-redis-service-port flag to explicitly configure redis port
* use separate cluster state cache for addresses since cache key does not contain port
* rename helpers protocol argument to scheme

This is a breaking change for users that:

* use kubernetes dataclient GetEndpointAddresses method
* use dynamic redis shards discovery AND use non-standard redis port AND do not specify -kubernetes-redis-service-port

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 12, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 12, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 12, 2024
Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
TestGetEndpointAddresses was broken because it used shared TestAPI
instance and did not re-initialize it for each test.

In partucular "Ingress with endpointslices" was actually testing
endpoints and not endpointslices (testAPI.ServeHTTP does not
even serve endpointslices).

This change refactors GetEndpointAddresses test
using kubernetestest.NewAPI and existing fixture files.

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 13, 2024
TestGetEndpointAddresses was broken because it used shared TestAPI
instance and did not re-initialize it for each test.

In partucular "Ingress with endpointslices" was actually testing
endpoints and not endpointslices (testAPI.ServeHTTP does not
even serve endpointslices).

This change refactors GetEndpointAddresses test
using kubernetestest.NewAPI and existing fixture files.

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
This is useful for testing getting endpoints by service name.

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
…me (#2937)

This is useful for testing getting endpoints by service name.

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 14, 2024
Add LoadEndpointAddresses to kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Add LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to dicover Redis instances
but does not use this dataclient for routing.

This allows running Skipper as application (i.e. not as ingress controller)
inside Kubernetes cluster using autoscaled Redis for ratelimiting.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 15, 2024
Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 16, 2024
…2934)

Skipper supports Redis based Cluster Ratelimits and
dynamic discovery of Redis instances using Kubernetes Service,
see https://github.com/zalando/skipper/blob/master/docs/tutorials/ratelimit.md#redis-based-cluster-ratelimits

Dynamic discovery relies on Kubernetes Dataclient that also fetches
Ingresses and RouteGroups and creates routes from them.

This change enables dynamic discovery of Redis instances using
Kubernetes without fetching Ingresses and RouteGroups.

When `-kubernetes` flag is not set but `-enable-swarm`,
`-kubernetes-redis-service-namespace`, `-kubernetes-redis-service-name` and
`-kubernetes-redis-service-port` are provided then Skipper creates
Kubernetes dataclient to discover Redis instances
but does not use this dataclient for routing.

The change adds LoadEndpointAddresses to Kubernetes dataclient that is
similar to caching GetEndpointAddresses but does not rely on
previous call to Load or LoadAll to allow discovery of
Redis shards without fetching full cluster state.

Fixes #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 21, 2024
Require kubernetes option (explicitly or via -kubernetes flag).

Initially routesrv implied this option as it was envisioned for service
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 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 rouetsrv without
-kubernetes flag or use it from the library without setting Kubernetes
option.

For #2476

Signed-off-by: Alexander Yastrebov <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 21, 2024
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 <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 21, 2024
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 <alexander.yastrebov@zalando.de>
AlexanderYastrebov added a commit that referenced this issue Feb 22, 2024
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 <alexander.yastrebov@zalando.de>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant