Skip to content

Commit 6de151b

Browse files
committed
feat: deploy Calico ClusterResourceSet
1 parent fd40c00 commit 6de151b

File tree

10 files changed

+426
-26
lines changed

10 files changed

+426
-26
lines changed

cmd/capi-runtime-extensions/main.go

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
package main
55

66
import (
7-
"context"
87
"flag"
98
"net/http"
109
"os"
@@ -19,6 +18,9 @@ import (
1918
runtimehooksv1 "sigs.k8s.io/cluster-api/exp/runtime/hooks/api/v1alpha1"
2019
"sigs.k8s.io/cluster-api/exp/runtime/server"
2120
ctrl "sigs.k8s.io/controller-runtime"
21+
ctrclient "sigs.k8s.io/controller-runtime/pkg/client"
22+
23+
"github.com/d2iq-labs/capi-runtime-extensions/pkg/handlers/lifecycle"
2224
)
2325

2426
var (
@@ -96,19 +98,53 @@ func main() {
9698
os.Exit(1)
9799
}
98100

101+
// Lifecycle Hooks
102+
103+
// Gets a client to access the Kubernetes cluster where this RuntimeExtension will be deployed to
104+
restConfig, err := ctrl.GetConfig()
105+
if err != nil {
106+
setupLog.Error(err, "error getting config for the cluster")
107+
os.Exit(1)
108+
}
109+
110+
client, err := ctrclient.New(restConfig, ctrclient.Options{})
111+
if err != nil {
112+
setupLog.Error(err, "error creating client to the cluster")
113+
os.Exit(1)
114+
}
115+
116+
// Create the ExtensionHandlers for the lifecycle hooks
117+
lifecycleExtensionHandlers := lifecycle.NewExtensionHandlers(client)
118+
99119
// Register extension handlers.
100120
if err := webhookServer.AddExtensionHandler(server.ExtensionHandler{
101121
Hook: runtimehooksv1.BeforeClusterCreate,
102122
Name: "before-cluster-create",
103-
HandlerFunc: DoBeforeClusterCreate,
123+
HandlerFunc: lifecycleExtensionHandlers.DoBeforeClusterCreate,
124+
}); err != nil {
125+
setupLog.Error(err, "error adding handler")
126+
os.Exit(1)
127+
}
128+
if err := webhookServer.AddExtensionHandler(server.ExtensionHandler{
129+
Hook: runtimehooksv1.AfterControlPlaneInitialized,
130+
Name: "after-control-plane-initialized",
131+
HandlerFunc: lifecycleExtensionHandlers.DoAfterControlPlaneInitialized,
104132
}); err != nil {
105133
setupLog.Error(err, "error adding handler")
106134
os.Exit(1)
107135
}
108136
if err := webhookServer.AddExtensionHandler(server.ExtensionHandler{
109137
Hook: runtimehooksv1.BeforeClusterUpgrade,
110138
Name: "before-cluster-upgrade",
111-
HandlerFunc: DoBeforeClusterUpgrade,
139+
HandlerFunc: lifecycleExtensionHandlers.DoBeforeClusterUpgrade,
140+
}); err != nil {
141+
setupLog.Error(err, "error adding handler")
142+
os.Exit(1)
143+
}
144+
if err := webhookServer.AddExtensionHandler(server.ExtensionHandler{
145+
Hook: runtimehooksv1.BeforeClusterDelete,
146+
Name: "before-cluster-delete",
147+
HandlerFunc: lifecycleExtensionHandlers.DoBeforeClusterDelete,
112148
}); err != nil {
113149
setupLog.Error(err, "error adding handler")
114150
os.Exit(1)
@@ -124,23 +160,3 @@ func main() {
124160
os.Exit(1)
125161
}
126162
}
127-
128-
func DoBeforeClusterCreate(
129-
ctx context.Context,
130-
request *runtimehooksv1.BeforeClusterCreateRequest,
131-
response *runtimehooksv1.BeforeClusterCreateResponse,
132-
) {
133-
log := ctrl.LoggerFrom(ctx)
134-
log.Info("BeforeClusterCreate is called")
135-
// Your implementation
136-
}
137-
138-
func DoBeforeClusterUpgrade(
139-
ctx context.Context,
140-
request *runtimehooksv1.BeforeClusterUpgradeRequest,
141-
response *runtimehooksv1.BeforeClusterUpgradeResponse,
142-
) {
143-
log := ctrl.LoggerFrom(ctx)
144-
log.Info("BeforeClusterUpgrade is called")
145-
// Your implementation
146-
}

go.mod

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,46 +7,65 @@ go 1.19
77

88
require (
99
github.com/spf13/pflag v1.0.5
10+
k8s.io/apimachinery v0.25.0
1011
k8s.io/component-base v0.25.0
1112
k8s.io/klog/v2 v2.90.0
1213
sigs.k8s.io/cluster-api v1.3.3
1314
sigs.k8s.io/controller-runtime v0.13.1
1415
)
1516

1617
require (
18+
github.com/go-logr/logr v1.2.3
19+
github.com/MakeNowJust/heredoc v1.0.0 // indirect
1720
github.com/beorn7/perks v1.0.1 // indirect
1821
github.com/blang/semver v3.5.1+incompatible // indirect
1922
github.com/cespare/xxhash/v2 v2.1.2 // indirect
2023
github.com/davecgh/go-spew v1.1.1 // indirect
24+
github.com/docker/distribution v2.8.1+incompatible // indirect
25+
github.com/drone/envsubst/v2 v2.0.0-20210730161058-179042472c46 // indirect
2126
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
2227
github.com/evanphx/json-patch/v5 v5.6.0 // indirect
2328
github.com/fsnotify/fsnotify v1.6.0 // indirect
24-
github.com/go-logr/logr v1.2.3 // indirect
2529
github.com/go-openapi/jsonpointer v0.19.5 // indirect
2630
github.com/go-openapi/jsonreference v0.20.0 // indirect
2731
github.com/go-openapi/swag v0.22.3 // indirect
32+
github.com/gobuffalo/flect v0.3.0 // indirect
2833
github.com/gogo/protobuf v1.3.2 // indirect
2934
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
3035
github.com/golang/protobuf v1.5.2 // indirect
3136
github.com/google/gnostic v0.6.9 // indirect
3237
github.com/google/go-cmp v0.5.9 // indirect
38+
github.com/google/go-github/v45 v45.2.0 // indirect
39+
github.com/google/go-querystring v1.1.0 // indirect
3340
github.com/google/gofuzz v1.2.0 // indirect
3441
github.com/google/uuid v1.3.0 // indirect
42+
github.com/hashicorp/hcl v1.0.0 // indirect
3543
github.com/imdario/mergo v0.3.13 // indirect
3644
github.com/inconshreveable/mousetrap v1.0.1 // indirect
3745
github.com/josharian/intern v1.0.0 // indirect
3846
github.com/json-iterator/go v1.1.12 // indirect
47+
github.com/magiconair/properties v1.8.6 // indirect
3948
github.com/mailru/easyjson v0.7.7 // indirect
4049
github.com/matttproud/golang_protobuf_extensions v1.0.2 // indirect
50+
github.com/mitchellh/mapstructure v1.5.0 // indirect
4151
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4252
github.com/modern-go/reflect2 v1.0.2 // indirect
4353
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
54+
github.com/opencontainers/go-digest v1.0.0 // indirect
55+
github.com/pelletier/go-toml v1.9.5 // indirect
56+
github.com/pelletier/go-toml/v2 v2.0.5 // indirect
4457
github.com/pkg/errors v0.9.1 // indirect
4558
github.com/prometheus/client_golang v1.14.0 // indirect
4659
github.com/prometheus/client_model v0.3.0 // indirect
4760
github.com/prometheus/common v0.37.0 // indirect
4861
github.com/prometheus/procfs v0.8.0 // indirect
62+
github.com/spf13/afero v1.9.2 // indirect
63+
github.com/spf13/cast v1.5.0 // indirect
4964
github.com/spf13/cobra v1.6.1 // indirect
65+
github.com/spf13/jwalterweatherman v1.1.0 // indirect
66+
github.com/spf13/viper v1.13.0 // indirect
67+
github.com/subosito/gotenv v1.4.1 // indirect
68+
golang.org/x/crypto v0.3.0 // indirect
5069
golang.org/x/net v0.4.0 // indirect
5170
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 // indirect
5271
golang.org/x/sys v0.3.0 // indirect
@@ -57,11 +76,11 @@ require (
5776
google.golang.org/appengine v1.6.7 // indirect
5877
google.golang.org/protobuf v1.28.1 // indirect
5978
gopkg.in/inf.v0 v0.9.1 // indirect
79+
gopkg.in/ini.v1 v1.67.0 // indirect
6080
gopkg.in/yaml.v2 v2.4.0 // indirect
6181
gopkg.in/yaml.v3 v3.0.1 // indirect
6282
k8s.io/api v0.25.0 // indirect
6383
k8s.io/apiextensions-apiserver v0.25.0 // indirect
64-
k8s.io/apimachinery v0.25.0 // indirect
6584
k8s.io/client-go v0.25.0 // indirect
6685
k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280 // indirect
6786
k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect

0 commit comments

Comments
 (0)