Skip to content

Commit 7b7fde3

Browse files
authored
refactor: Extract server to own package for easier reuse (#127)
This could then be used in other projects.
1 parent 3fecd1b commit 7b7fde3

File tree

13 files changed

+476
-71
lines changed

13 files changed

+476
-71
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright 2021 D2iQ, Inc. All rights reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
{
5+
"folders": [
6+
{
7+
"path": "."
8+
},
9+
{
10+
"path": "./server"
11+
}
12+
],
13+
"settings": {
14+
"go.buildTags": "e2e"
15+
}
16+
}

cmd/capi-runtime-extensions/main.go

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,24 @@ import (
1111

1212
"github.com/spf13/pflag"
1313
"golang.org/x/sync/errgroup"
14+
"k8s.io/apimachinery/pkg/runtime"
15+
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
16+
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
1417
cliflag "k8s.io/component-base/cli/flag"
1518
"k8s.io/component-base/logs"
1619
logsv1 "k8s.io/component-base/logs/api/v1"
1720
"k8s.io/component-base/version/verflag"
1821
"k8s.io/klog/v2"
22+
capiv1 "sigs.k8s.io/cluster-api/api/v1beta1"
23+
crsv1 "sigs.k8s.io/cluster-api/exp/addons/api/v1beta1"
1924
ctrl "sigs.k8s.io/controller-runtime"
25+
ctrclient "sigs.k8s.io/controller-runtime/pkg/client"
2026

2127
"github.com/d2iq-labs/capi-runtime-extensions/internal/controllermanager"
22-
runtimewebhooks "github.com/d2iq-labs/capi-runtime-extensions/internal/runtimehooks/webhooks"
28+
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/cni/calico"
29+
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/httpproxy"
30+
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/servicelbgc"
31+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/server"
2332
)
2433

2534
var (
@@ -43,13 +52,40 @@ func main() {
4352
// Creates a logger to be used during the main func.
4453
setupLog := ctrl.Log.WithName("main")
4554

46-
runtimeWebhookServer := runtimewebhooks.NewServer()
4755
controllers := controllermanager.New()
4856

57+
scheme := runtime.NewScheme()
58+
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
59+
utilruntime.Must(crsv1.AddToScheme(scheme))
60+
utilruntime.Must(capiv1.AddToScheme(scheme))
61+
62+
// Gets a client to access the Kubernetes cluster where this RuntimeExtension will be deployed to
63+
restConfig, err := ctrl.GetConfig()
64+
if err != nil {
65+
setupLog.Error(err, "error getting config for the cluster")
66+
os.Exit(1)
67+
}
68+
69+
client, err := ctrclient.New(restConfig, ctrclient.Options{Scheme: scheme})
70+
if err != nil {
71+
setupLog.Error(err, "error creating client to the cluster")
72+
os.Exit(1)
73+
}
74+
75+
calicoCNIConfig := &calico.CalicoCNIConfig{}
76+
77+
runtimeWebhookServer := server.NewServer(
78+
servicelbgc.New(client),
79+
calico.New(client, calicoCNIConfig),
80+
httpproxy.NewVariable(),
81+
httpproxy.NewPatch(),
82+
)
83+
4984
// Initialize and parse command line flags.
5085
initFlags(pflag.CommandLine)
5186
runtimeWebhookServer.AddFlags("runtimehooks", pflag.CommandLine)
5287
controllers.AddFlags("controllermanager", pflag.CommandLine)
88+
calicoCNIConfig.AddFlags("runtimehooks.calicocni", pflag.CommandLine)
5389
pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
5490
pflag.CommandLine.AddGoFlagSet(flag.CommandLine)
5591
pflag.Parse()

go.mod

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ module github.com/d2iq-labs/capi-runtime-extensions
55

66
go 1.21
77

8+
replace github.com/d2iq-labs/capi-runtime-extensions/server => ./server
9+
810
require (
11+
github.com/d2iq-labs/capi-runtime-extensions/server v0.0.0-00010101000000-000000000000
912
github.com/go-logr/logr v1.2.4
1013
github.com/onsi/gomega v1.27.10
1114
github.com/spf13/pflag v1.0.5
@@ -18,7 +21,7 @@ require (
1821
k8s.io/client-go v0.28.1
1922
k8s.io/component-base v0.28.1
2023
k8s.io/klog/v2 v2.100.1
21-
sigs.k8s.io/cluster-api v1.5.0
24+
sigs.k8s.io/cluster-api v1.5.1
2225
sigs.k8s.io/controller-runtime v0.16.0
2326
)
2427

@@ -28,7 +31,7 @@ require (
2831
github.com/blang/semver/v4 v4.0.0 // indirect
2932
github.com/cespare/xxhash/v2 v2.2.0 // indirect
3033
github.com/coredns/caddy v1.1.0 // indirect
31-
github.com/coredns/corefile-migration v1.0.20 // indirect
34+
github.com/coredns/corefile-migration v1.0.21 // indirect
3235
github.com/davecgh/go-spew v1.1.1 // indirect
3336
github.com/docker/distribution v2.8.2+incompatible // indirect
3437
github.com/emicklei/go-restful/v3 v3.9.0 // indirect

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
5252
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
5353
github.com/coredns/caddy v1.1.0 h1:ezvsPrT/tA/7pYDBZxu0cT0VmWk75AfIaf6GSYCNMf0=
5454
github.com/coredns/caddy v1.1.0/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4=
55-
github.com/coredns/corefile-migration v1.0.20 h1:MdOkT6F3ehju/n9tgxlGct8XAajOX2vN+wG7To4BWSI=
56-
github.com/coredns/corefile-migration v1.0.20/go.mod h1:XnhgULOEouimnzgn0t4WPuFDN2/PJQcTxdWKC5eXNGE=
55+
github.com/coredns/corefile-migration v1.0.21 h1:W/DCETrHDiFo0Wj03EyMkaQ9fwsmSgqTCQDHpceaSsE=
56+
github.com/coredns/corefile-migration v1.0.21/go.mod h1:XnhgULOEouimnzgn0t4WPuFDN2/PJQcTxdWKC5eXNGE=
5757
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
5858
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
5959
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@@ -567,8 +567,8 @@ k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt
567567
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
568568
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 h1:trsWhjU5jZrx6UvFu4WzQDrN7Pga4a7Qg+zcfcj64PA=
569569
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2/go.mod h1:+qG7ISXqCDVVcyO8hLn12AKVYYUjM7ftlqsqmrhMZE0=
570-
sigs.k8s.io/cluster-api v1.5.0 h1:pwXvzScbAwnrB7EWHTApzW+VQfrj2OSrWAQDC9+bcbU=
571-
sigs.k8s.io/cluster-api v1.5.0/go.mod h1:ZSEP01t8oT6104gB4ljsOwwp5uJcI8SWy8IFp2HUvrc=
570+
sigs.k8s.io/cluster-api v1.5.1 h1:+oO4EbVQcbBJr5wjqmdjvewPHSTbVLigXZqPk3ZO8t0=
571+
sigs.k8s.io/cluster-api v1.5.1/go.mod h1:EGJUNpFWi7dF426tO8MG/jE+w7T0UO5KyMnOwQ5riUY=
572572
sigs.k8s.io/controller-runtime v0.16.0 h1:5koYaaRVBHDr0LZAJjO5dWzUjMsh6cwa7q1Mmusrdvk=
573573
sigs.k8s.io/controller-runtime v0.16.0/go.mod h1:77DnuwA8+J7AO0njzv3wbNlMOnGuLrwFr8JPNwx3J7g=
574574
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=

pkg/handlers/auditpolicy/inject.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919

2020
"github.com/d2iq-labs/capi-runtime-extensions/pkg/capi/clustertopology/patches"
2121
"github.com/d2iq-labs/capi-runtime-extensions/pkg/capi/clustertopology/patches/selectors"
22-
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
22+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/handlers"
2323
)
2424

2525
const (

pkg/handlers/cni/calico/handler.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ import (
2323
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
2424
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2525

26-
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
2726
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/cni"
2827
"github.com/d2iq-labs/capi-runtime-extensions/pkg/k8s/client"
2928
"github.com/d2iq-labs/capi-runtime-extensions/pkg/k8s/parser"
29+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/handlers"
3030
)
3131

3232
const (
@@ -66,7 +66,7 @@ func (c *CalicoCNIConfig) AddFlags(prefix string, flags *pflag.FlagSet) {
6666

6767
type CalicoCNI struct {
6868
client ctrlclient.Client
69-
config CalicoCNIConfig
69+
config *CalicoCNIConfig
7070
}
7171

7272
var (
@@ -76,7 +76,7 @@ var (
7676
calicoInstallationGK = schema.GroupKind{Group: "operator.tigera.io", Kind: "Installation"}
7777
)
7878

79-
func New(c ctrlclient.Client, cfg CalicoCNIConfig) *CalicoCNI {
79+
func New(c ctrlclient.Client, cfg *CalicoCNIConfig) *CalicoCNI {
8080
return &CalicoCNI{
8181
client: c,
8282
config: cfg,

pkg/handlers/httpproxy/inject.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"github.com/d2iq-labs/capi-runtime-extensions/pkg/capi/clustertopology/patches"
2020
"github.com/d2iq-labs/capi-runtime-extensions/pkg/capi/clustertopology/patches/selectors"
2121
"github.com/d2iq-labs/capi-runtime-extensions/pkg/capi/clustertopology/variables"
22-
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
22+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/handlers"
2323
)
2424

2525
const (

pkg/handlers/httpproxy/variables.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
1010
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
1111

12-
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
12+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/handlers"
1313
)
1414

1515
var (

pkg/handlers/servicelbgc/handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
ctrl "sigs.k8s.io/controller-runtime"
1414
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
1515

16-
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers"
16+
"github.com/d2iq-labs/capi-runtime-extensions/server/pkg/handlers"
1717
)
1818

1919
type ServiceLoadBalancerGC struct {

server/go.mod

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright 2023 D2iQ, Inc. All rights reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
module github.com/d2iq-labs/capi-runtime-extensions/server
5+
6+
go 1.21
7+
8+
require (
9+
github.com/spf13/pflag v1.0.5
10+
sigs.k8s.io/cluster-api v1.5.1
11+
sigs.k8s.io/controller-runtime v0.15.1
12+
)
13+
14+
require (
15+
github.com/beorn7/perks v1.0.1 // indirect
16+
github.com/blang/semver v3.5.1+incompatible // indirect
17+
github.com/blang/semver/v4 v4.0.0 // indirect
18+
github.com/cespare/xxhash/v2 v2.2.0 // indirect
19+
github.com/davecgh/go-spew v1.1.1 // indirect
20+
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
21+
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
22+
github.com/fsnotify/fsnotify v1.6.0 // indirect
23+
github.com/go-logr/logr v1.2.4 // indirect
24+
github.com/go-openapi/jsonpointer v0.19.6 // indirect
25+
github.com/go-openapi/jsonreference v0.20.1 // indirect
26+
github.com/go-openapi/swag v0.22.3 // indirect
27+
github.com/gogo/protobuf v1.3.2 // indirect
28+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
29+
github.com/golang/protobuf v1.5.3 // indirect
30+
github.com/google/gnostic v0.6.9 // indirect
31+
github.com/google/go-cmp v0.5.9 // indirect
32+
github.com/google/gofuzz v1.2.0 // indirect
33+
github.com/google/uuid v1.3.0 // indirect
34+
github.com/imdario/mergo v0.3.13 // indirect
35+
github.com/josharian/intern v1.0.0 // indirect
36+
github.com/json-iterator/go v1.1.12 // indirect
37+
github.com/mailru/easyjson v0.7.7 // indirect
38+
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
39+
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
40+
github.com/modern-go/reflect2 v1.0.2 // indirect
41+
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
42+
github.com/pkg/errors v0.9.1 // indirect
43+
github.com/prometheus/client_golang v1.16.0 // indirect
44+
github.com/prometheus/client_model v0.4.0 // indirect
45+
github.com/prometheus/common v0.42.0 // indirect
46+
github.com/prometheus/procfs v0.10.1 // indirect
47+
golang.org/x/net v0.13.0 // indirect
48+
golang.org/x/oauth2 v0.10.0 // indirect
49+
golang.org/x/sys v0.10.0 // indirect
50+
golang.org/x/term v0.10.0 // indirect
51+
golang.org/x/text v0.11.0 // indirect
52+
golang.org/x/time v0.3.0 // indirect
53+
gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect
54+
google.golang.org/appengine v1.6.7 // indirect
55+
google.golang.org/protobuf v1.31.0 // indirect
56+
gopkg.in/inf.v0 v0.9.1 // indirect
57+
gopkg.in/yaml.v2 v2.4.0 // indirect
58+
gopkg.in/yaml.v3 v3.0.1 // indirect
59+
k8s.io/api v0.27.2 // indirect
60+
k8s.io/apiextensions-apiserver v0.27.2 // indirect
61+
k8s.io/apimachinery v0.27.2 // indirect
62+
k8s.io/client-go v0.27.2 // indirect
63+
k8s.io/component-base v0.27.2 // indirect
64+
k8s.io/klog/v2 v2.90.1 // indirect
65+
k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect
66+
k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect
67+
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
68+
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
69+
sigs.k8s.io/yaml v1.3.0 // indirect
70+
)

0 commit comments

Comments
 (0)