Skip to content

Commit 2046f4a

Browse files
committed
Adjustments for new controller-runtime and CAPI
1 parent 4604ad7 commit 2046f4a

File tree

6 files changed

+76
-31
lines changed

6 files changed

+76
-31
lines changed

Makefile

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,9 @@ e2e-image: docker-build
195195

196196
# Pull all the images references in test/e2e/data/e2e_conf.yaml
197197
test-e2e-image-prerequisites:
198-
docker pull gcr.io/k8s-staging-cluster-api/cluster-api-controller:v1.4.1
199-
docker pull gcr.io/k8s-staging-cluster-api/kubeadm-bootstrap-controller:v1.4.1
200-
docker pull gcr.io/k8s-staging-cluster-api/kubeadm-control-plane-controller:v1.4.1
198+
docker pull gcr.io/k8s-staging-cluster-api/cluster-api-controller:v1.6.0-beta.1
199+
docker pull gcr.io/k8s-staging-cluster-api/kubeadm-bootstrap-controller:v1.6.0-beta.1
200+
docker pull gcr.io/k8s-staging-cluster-api/kubeadm-control-plane-controller:v1.6.0-beta.1
201201
docker pull quay.io/jetstack/cert-manager-cainjector:v1.12.1
202202
docker pull quay.io/jetstack/cert-manager-webhook:v1.12.1
203203
docker pull quay.io/jetstack/cert-manager-controller:v1.12.1
@@ -280,6 +280,7 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc.
280280
output:webhook:dir=$(WEBHOOK_ROOT) \
281281
webhook
282282
$(CONTROLLER_GEN) \
283+
paths=./ \
283284
paths=./controllers/... \
284285
output:rbac:dir=$(RBAC_ROOT) \
285286
rbac:roleName=manager-role

config/manager/manager.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,18 @@ spec:
2222
args:
2323
- "--leader-elect"
2424
- "--v=2"
25-
- "--metrics-bind-addr=127.0.0.1:8080"
25+
- "--diagnostics-address=${CAPO_DIAGNOSTICS_ADDRESS:=:8443}"
26+
- "--insecure-diagnostics=${CAPO_INSECURE_DIAGNOSTICS:=false}"
2627
image: controller:latest
2728
imagePullPolicy: Always
2829
name: manager
2930
ports:
3031
- containerPort: 9440
3132
name: healthz
3233
protocol: TCP
34+
- containerPort: 8443
35+
name: metrics
36+
protocol: TCP
3337
readinessProbe:
3438
httpGet:
3539
path: /readyz

config/rbac/role.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ rules:
2323
- get
2424
- list
2525
- watch
26+
- apiGroups:
27+
- authentication.k8s.io
28+
resources:
29+
- tokenreviews
30+
verbs:
31+
- create
32+
- apiGroups:
33+
- authorization.k8s.io
34+
resources:
35+
- subjectaccessreviews
36+
verbs:
37+
- create
2638
- apiGroups:
2739
- cluster.x-k8s.io
2840
resources:

main.go

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,13 @@ import (
3434
_ "k8s.io/component-base/logs/json/register"
3535
"k8s.io/klog/v2"
3636
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
37+
"sigs.k8s.io/cluster-api/util/flags"
3738
ctrl "sigs.k8s.io/controller-runtime"
38-
"sigs.k8s.io/controller-runtime/pkg/client"
39+
cache "sigs.k8s.io/controller-runtime/pkg/cache"
40+
client "sigs.k8s.io/controller-runtime/pkg/client"
3941
"sigs.k8s.io/controller-runtime/pkg/client/config"
4042
"sigs.k8s.io/controller-runtime/pkg/controller"
43+
"sigs.k8s.io/controller-runtime/pkg/webhook"
4144

4245
infrav1alpha5 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha5"
4346
infrav1alpha6 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6"
@@ -54,7 +57,7 @@ var (
5457
setupLog = ctrl.Log.WithName("setup")
5558

5659
// flags.
57-
metricsBindAddr string
60+
diagnosticsOptions = flags.DiagnosticsOptions{}
5861
enableLeaderElection bool
5962
leaderElectionLeaseDuration time.Duration
6063
leaderElectionRenewDeadline time.Duration
@@ -91,8 +94,7 @@ func InitFlags(fs *pflag.FlagSet) {
9194
logs.AddFlags(fs, logs.SkipLoggingConfigurationFlags())
9295
logsv1.AddFlags(logOptions, fs)
9396

94-
fs.StringVar(&metricsBindAddr, "metrics-bind-addr", "localhost:8080",
95-
"The address the metric endpoint binds to.")
97+
flags.AddDiagnosticsOptions(fs, &diagnosticsOptions)
9698

9799
fs.BoolVar(&enableLeaderElection, "leader-elect", false,
98100
"Enable leader election for controller manager. Enabling this will ensure there is only one active controller manager.")
@@ -143,6 +145,10 @@ func InitFlags(fs *pflag.FlagSet) {
143145
fs.BoolVar(&showVersion, "version", false, "Show current version and exit.")
144146
}
145147

148+
// Add RBAC for the authorized diagnostics endpoint.
149+
// +kubebuilder:rbac:groups=authentication.k8s.io,resources=tokenreviews,verbs=create
150+
// +kubebuilder:rbac:groups=authorization.k8s.io,resources=subjectaccessreviews,verbs=create
151+
146152
func main() {
147153
InitFlags(pflag.CommandLine)
148154
pflag.CommandLine.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)
@@ -183,22 +189,41 @@ func main() {
183189
}
184190
}
185191

192+
diagnosticsOpts := flags.GetDiagnosticsOptions(diagnosticsOptions)
193+
194+
var watchNamespaces map[string]cache.Config
195+
if watchNamespace != "" {
196+
watchNamespaces = map[string]cache.Config{
197+
watchNamespace: {},
198+
}
199+
}
200+
186201
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
187-
Scheme: scheme,
188-
MetricsBindAddress: metricsBindAddr,
189-
LeaderElection: enableLeaderElection,
190-
LeaderElectionID: "controller-leader-election-capo",
191-
LeaseDuration: &leaderElectionLeaseDuration,
192-
RenewDeadline: &leaderElectionRenewDeadline,
193-
RetryPeriod: &leaderElectionRetryPeriod,
194-
Namespace: watchNamespace,
195-
SyncPeriod: &syncPeriod,
196-
ClientDisableCacheFor: []client.Object{
197-
&corev1.ConfigMap{},
198-
&corev1.Secret{},
202+
Scheme: scheme,
203+
Metrics: diagnosticsOpts,
204+
LeaderElection: enableLeaderElection,
205+
LeaderElectionID: "controller-leader-election-capo",
206+
LeaseDuration: &leaderElectionLeaseDuration,
207+
RenewDeadline: &leaderElectionRenewDeadline,
208+
RetryPeriod: &leaderElectionRetryPeriod,
209+
Cache: cache.Options{
210+
DefaultNamespaces: watchNamespaces,
211+
SyncPeriod: &syncPeriod,
212+
},
213+
Client: client.Options{
214+
Cache: &client.CacheOptions{
215+
DisableFor: []client.Object{
216+
&corev1.ConfigMap{},
217+
&corev1.Secret{},
218+
},
219+
},
199220
},
200-
Port: webhookPort,
201-
CertDir: webhookCertDir,
221+
WebhookServer: webhook.NewServer(
222+
webhook.Options{
223+
Port: webhookPort,
224+
CertDir: webhookCertDir,
225+
},
226+
),
202227
HealthProbeBindAddress: healthAddr,
203228
})
204229
if err != nil {

test/e2e/data/e2e_conf.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
managementClusterName: capo-e2e
1313

1414
images:
15-
- name: gcr.io/k8s-staging-cluster-api/cluster-api-controller:v1.5.1
15+
- name: gcr.io/k8s-staging-cluster-api/cluster-api-controller:v1.6.0-beta.1
1616
loadBehavior: tryLoad
17-
- name: gcr.io/k8s-staging-cluster-api/kubeadm-bootstrap-controller:v1.5.1
17+
- name: gcr.io/k8s-staging-cluster-api/kubeadm-bootstrap-controller:v1.6.0-beta.1
1818
loadBehavior: tryLoad
19-
- name: gcr.io/k8s-staging-cluster-api/kubeadm-control-plane-controller:v1.5.1
19+
- name: gcr.io/k8s-staging-cluster-api/kubeadm-control-plane-controller:v1.6.0-beta.1
2020
loadBehavior: tryLoad
2121
# Use local dev images built source tree;
2222
- name: gcr.io/k8s-staging-capi-openstack/capi-openstack-controller:e2e
@@ -32,8 +32,8 @@ providers:
3232
- name: cluster-api
3333
type: CoreProvider
3434
versions:
35-
- name: v1.5.1
36-
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.1/core-components.yaml"
35+
- name: v1.6.0-beta.1
36+
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.0-beta.1/core-components.yaml"
3737
type: url
3838
contract: v1beta1
3939
files:
@@ -58,8 +58,8 @@ providers:
5858
- name: kubeadm
5959
type: BootstrapProvider
6060
versions:
61-
- name: v1.5.1
62-
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.1/bootstrap-components.yaml"
61+
- name: v1.6.0-beta.1
62+
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.0-beta.1/bootstrap-components.yaml"
6363
type: url
6464
contract: v1beta1
6565
files:
@@ -84,8 +84,8 @@ providers:
8484
- name: kubeadm
8585
type: ControlPlaneProvider
8686
versions:
87-
- name: v1.5.1
88-
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.1/control-plane-components.yaml"
87+
- name: v1.6.0-beta.1
88+
value: "https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.0-beta.1/control-plane-components.yaml"
8989
type: url
9090
contract: v1beta1
9191
files:

test/e2e/data/shared/v1beta1/metadata.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,6 @@ releaseSeries:
1313
- major: 1
1414
minor: 5
1515
contract: v1beta1
16+
- major: 1
17+
minor: 6
18+
contract: v1beta1

0 commit comments

Comments
 (0)