Skip to content

Commit

Permalink
add cache to GenericAPIServer.Handler.Director
Browse files Browse the repository at this point in the history
Signed-off-by: Matthias Bertschy <[email protected]>
  • Loading branch information
matthyx committed Jul 19, 2024
1 parent 0d57751 commit 726c5ba
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 0 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ require (
github.com/spf13/afero v1.11.0
github.com/spf13/cobra v1.8.0
github.com/stretchr/testify v1.9.0
github.com/victorspringer/http-cache v0.0.0-20240523143319-7d9f48f8ab91
go.opentelemetry.io/otel v1.24.0
go.uber.org/zap v1.26.0
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
Expand Down Expand Up @@ -189,6 +190,7 @@ require (

replace (
github.com/openvex/go-vex => github.com/slashben/go-vex v0.0.0-20231012123606-f58e5ee0e14e
github.com/victorspringer/http-cache => github.com/matthyx/http-cache v0.0.0-20240719133808-8a605008c1fd
google.golang.org/grpc => google.golang.org/grpc v1.56.3
k8s.io/api => k8s.io/api v0.0.0-20231101171312-cd0ecb048ea5
k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20231102051132-bc0a03b4342c
Expand Down
3 changes: 3 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1072,6 +1072,8 @@ github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3v
github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/matthyx/http-cache v0.0.0-20240719133808-8a605008c1fd h1:KRFRiC+E9H4ux/YYw4ZJtSe/3Gpj1A2Erneuoz4nQho=
github.com/matthyx/http-cache v0.0.0-20240719133808-8a605008c1fd/go.mod h1:4QGcMnbmiLfsUheY+tz0CwBT4fL7gGCOKgDay2WwYX8=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
Expand Down Expand Up @@ -1127,6 +1129,7 @@ github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJE
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
github.com/olvrng/ujson v1.1.0 h1:8xVUzVlqwdMVWh5d1UHBtLQ1D50nxoPuPEq9Wozs8oA=
github.com/olvrng/ujson v1.1.0/go.mod h1:Mz4G3RODTUfbkKyvi0lgmPx/7vd3Saksk+1jgk8s9xo=
github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo/v2 v2.18.0 h1:W9Y7IWXxPUpAit9ieMOLI7PJZGaW22DTKgiVAuhDTLc=
github.com/onsi/ginkgo/v2 v2.18.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To=
github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk=
Expand Down
23 changes: 23 additions & 0 deletions pkg/cmd/server/start.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"net"
"net/http"
"net/http/pprof"
"time"

"github.com/kubescape/go-logger"
"github.com/kubescape/go-logger/helpers"
Expand All @@ -32,6 +33,8 @@ import (
informers "github.com/kubescape/storage/pkg/generated/informers/externalversions"
sampleopenapi "github.com/kubescape/storage/pkg/generated/openapi"
"github.com/spf13/cobra"
"github.com/victorspringer/http-cache"
"github.com/victorspringer/http-cache/adapter/memory"
utilerrors "k8s.io/apimachinery/pkg/util/errors"
"k8s.io/apiserver/pkg/admission"
"k8s.io/apiserver/pkg/endpoints/openapi"
Expand Down Expand Up @@ -180,6 +183,26 @@ func (o WardleServerOptions) RunWardleServer(stopCh <-chan struct{}) error {
return err
}

// add http-cache
memcached, err := memory.NewAdapter(
memory.AdapterWithAlgorithm(memory.LRU),
memory.AdapterWithStorageCapacity(500000000), // 500MB
)
if err != nil {
logger.L().Fatal("failed to create memcached adapter", helpers.Error(err))
}

cacheClient, err := cache.NewClient(
cache.ClientWithAdapter(memcached),
cache.ClientWithTTL(10*time.Minute),
cache.ClientWithRefreshKey("opn"),
)
if err != nil {
logger.L().Fatal("failed to create cache client", helpers.Error(err))
}
fullHandlerChain := server.GenericAPIServer.Handler.FullHandlerChain
server.GenericAPIServer.Handler.FullHandlerChain = cacheClient.Middleware(fullHandlerChain)

server.GenericAPIServer.AddPostStartHookOrDie("start-sample-server-informers", func(context genericapiserver.PostStartHookContext) error {
config.GenericConfig.SharedInformerFactory.Start(context.StopCh)
o.SharedInformerFactory.Start(context.StopCh)
Expand Down

0 comments on commit 726c5ba

Please sign in to comment.