Skip to content

Commit 39c9909

Browse files
authored
Merge pull request #25 from cybozu-go/initialize-httpproxy-reconciler
Fix missing initialize options of HTTPProxy controller
2 parents 669034b + 3cc37ed commit 39c9909

File tree

5 files changed

+246
-242
lines changed

5 files changed

+246
-242
lines changed

cmd/root.go

Lines changed: 12 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,8 @@ import (
99

1010
"github.com/cybozu-go/contour-plus/controllers"
1111
certmanagerv1alpha2 "github.com/jetstack/cert-manager/pkg/apis/certmanager/v1alpha2"
12-
"github.com/kubernetes-incubator/external-dns/endpoint"
13-
contourv1beta1 "github.com/projectcontour/contour/apis/contour/v1beta1"
14-
projectcontourv1 "github.com/projectcontour/contour/apis/projectcontour/v1"
1512
"github.com/spf13/cobra"
1613
"github.com/spf13/viper"
17-
corev1 "k8s.io/api/core/v1"
18-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1914
"k8s.io/apimachinery/pkg/runtime"
2015
"k8s.io/klog"
2116
ctrl "sigs.k8s.io/controller-runtime"
@@ -43,34 +38,9 @@ func Execute() {
4338
}
4439

4540
func init() {
46-
if err := projectcontourv1.AddToScheme(scheme); err != nil {
41+
if err := controllers.SetupScheme(scheme); err != nil {
4742
panic(err)
4843
}
49-
if err := contourv1beta1.AddToScheme(scheme); err != nil {
50-
panic(err)
51-
}
52-
53-
// ExternalDNS does not implement AddToScheme
54-
groupVersion := ctrl.GroupVersion{
55-
Group: "externaldns.k8s.io",
56-
Version: "v1alpha1",
57-
}
58-
scheme.AddKnownTypes(groupVersion,
59-
&endpoint.DNSEndpoint{},
60-
&endpoint.DNSEndpointList{},
61-
)
62-
metav1.AddToGroupVersion(scheme, groupVersion)
63-
64-
if err := certmanagerv1alpha2.AddToScheme(scheme); err != nil {
65-
panic(err)
66-
}
67-
68-
// for corev1.Service
69-
if err := corev1.AddToScheme(scheme); err != nil {
70-
panic(err)
71-
}
72-
73-
// +kubebuilder:scaffold:scheme
7444

7545
fs := rootCmd.Flags()
7646
fs.String("metrics-addr", ":8180", "Bind address for the metrics endpoint")
@@ -116,17 +86,21 @@ In addition to flags, the following environment variables are read:
11686
func subMain() error {
11787
ctrl.SetLogger(zap.Logger(false))
11888

89+
opts := controllers.ReconcilerOptions{
90+
Prefix: viper.GetString("name-prefix"),
91+
DefaultIssuerName: viper.GetString("default-issuer-name"),
92+
}
93+
11994
crds := viper.GetStringSlice("crds")
12095
if len(crds) == 0 {
12196
return errors.New("at least one service need to be enabled")
12297
}
123-
var createDNSEndpoint, createCertificate bool
12498
for _, crd := range crds {
12599
switch crd {
126100
case dnsEndpointKind:
127-
createDNSEndpoint = true
101+
opts.CreateDNSEndpoint = true
128102
case certmanagerv1alpha2.CertificateKind:
129-
createCertificate = true
103+
opts.CreateCertificate = true
130104
default:
131105
return errors.New("unsupported CRD: " + crd)
132106
}
@@ -137,7 +111,7 @@ func subMain() error {
137111
if len(nsname) != 2 || nsname[0] == "" || nsname[1] == "" {
138112
return errors.New("service-name should be valid string as namespaced-name")
139113
}
140-
serviceKey := client.ObjectKey{
114+
opts.ServiceKey = client.ObjectKey{
141115
Namespace: nsname[0],
142116
Name: nsname[1],
143117
}
@@ -148,6 +122,7 @@ func subMain() error {
148122
default:
149123
return errors.New("unsupported Issuer kind: " + defaultIssuerKind)
150124
}
125+
opts.DefaultIssuerKind = defaultIssuerKind
151126

152127
mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
153128
Scheme: scheme,
@@ -160,31 +135,11 @@ func subMain() error {
160135
return err
161136
}
162137

163-
err = (&controllers.IngressRouteReconciler{
164-
Client: mgr.GetClient(),
165-
Log: ctrl.Log.WithName("controllers").WithName("IngressRoute"),
166-
Scheme: mgr.GetScheme(),
167-
ServiceKey: serviceKey,
168-
Prefix: viper.GetString("name-prefix"),
169-
DefaultIssuerName: viper.GetString("default-issuer-name"),
170-
DefaultIssuerKind: defaultIssuerKind,
171-
CreateDNSEndpoint: createDNSEndpoint,
172-
CreateCertificate: createCertificate,
173-
}).SetupWithManager(mgr)
174-
if err != nil {
175-
setupLog.Error(err, "unable to create controller", "controller", "IngressRoute")
176-
os.Exit(1)
177-
}
178-
179-
err = (&controllers.HTTPProxyReconciler{
180-
Client: mgr.GetClient(),
181-
Log: ctrl.Log.WithName("controllers").WithName("HTTPProxy"),
182-
}).SetupWithManager(mgr)
138+
err = controllers.SetupReconciler(mgr, mgr.GetScheme(), opts)
183139
if err != nil {
184-
setupLog.Error(err, "unable to create controller", "controller", "HTTPProxy")
140+
setupLog.Error(err, "unable to create controllers")
185141
os.Exit(1)
186142
}
187-
// +kubebuilder:scaffold:builder
188143

189144
setupLog.Info("starting manager")
190145
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {

controllers/httpproxy_controller_test.go

Lines changed: 66 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,13 @@ func testHTTPProxyReconcile() {
3333
scm, mgr := setupManager()
3434

3535
prefix := "test-"
36-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
37-
prefix: prefix,
38-
defaultIssuerName: "test-issuer",
39-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
40-
createDNSEndpoint: true,
41-
createCertificate: true,
36+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
37+
ServiceKey: testServiceKey,
38+
Prefix: prefix,
39+
DefaultIssuerName: "test-issuer",
40+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
41+
CreateDNSEndpoint: true,
42+
CreateCertificate: true,
4243
})).ShouldNot(HaveOccurred())
4344

4445
stopMgr := startTestManager(mgr)
@@ -78,11 +79,12 @@ func testHTTPProxyReconcile() {
7879

7980
scm, mgr := setupManager()
8081

81-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
82-
defaultIssuerName: "test-issuer",
83-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
84-
createDNSEndpoint: true,
85-
createCertificate: true,
82+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
83+
ServiceKey: testServiceKey,
84+
DefaultIssuerName: "test-issuer",
85+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
86+
CreateDNSEndpoint: true,
87+
CreateCertificate: true,
8688
})).ShouldNot(HaveOccurred())
8789

8890
stopMgr := startTestManager(mgr)
@@ -121,12 +123,13 @@ func testHTTPProxyReconcile() {
121123
scm, mgr := setupManager()
122124

123125
prefix := "test-"
124-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
125-
prefix: prefix,
126-
defaultIssuerName: "test-issuer",
127-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
128-
createDNSEndpoint: true,
129-
createCertificate: true,
126+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
127+
ServiceKey: testServiceKey,
128+
Prefix: prefix,
129+
DefaultIssuerName: "test-issuer",
130+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
131+
CreateDNSEndpoint: true,
132+
CreateCertificate: true,
130133
})).ShouldNot(HaveOccurred())
131134

132135
stopMgr := startTestManager(mgr)
@@ -160,10 +163,11 @@ func testHTTPProxyReconcile() {
160163

161164
By("setup manager with ClusterIssuer")
162165
scm, mgr := setupManager()
163-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
164-
defaultIssuerName: "test-issuer",
165-
defaultIssuerKind: certmanagerv1alpha2.ClusterIssuerKind,
166-
createCertificate: true,
166+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
167+
ServiceKey: testServiceKey,
168+
DefaultIssuerName: "test-issuer",
169+
DefaultIssuerKind: certmanagerv1alpha2.ClusterIssuerKind,
170+
CreateCertificate: true,
167171
})).ShouldNot(HaveOccurred())
168172

169173
stopMgr := startTestManager(mgr)
@@ -194,10 +198,11 @@ func testHTTPProxyReconcile() {
194198

195199
By("setup manager")
196200
scm, mgr := setupManager()
197-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
198-
defaultIssuerName: "test-issuer",
199-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
200-
createCertificate: true,
201+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
202+
ServiceKey: testServiceKey,
203+
DefaultIssuerName: "test-issuer",
204+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
205+
CreateCertificate: true,
201206
})).ShouldNot(HaveOccurred())
202207

203208
stopMgr := startTestManager(mgr)
@@ -232,10 +237,11 @@ func testHTTPProxyReconcile() {
232237
})
233238
By("setup manager")
234239
scm, mgr := setupManager()
235-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
236-
defaultIssuerName: "test-issuer",
237-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
238-
createCertificate: true,
240+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
241+
ServiceKey: testServiceKey,
242+
DefaultIssuerName: "test-issuer",
243+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
244+
CreateCertificate: true,
239245
})).ShouldNot(HaveOccurred())
240246

241247
stopMgr := startTestManager(mgr)
@@ -273,11 +279,12 @@ func testHTTPProxyReconcile() {
273279
By("disabling the feature to create Certificate")
274280
scm, mgr := setupManager()
275281

276-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
277-
defaultIssuerName: "test-issuer",
278-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
279-
createDNSEndpoint: true,
280-
createCertificate: false,
282+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
283+
ServiceKey: testServiceKey,
284+
DefaultIssuerName: "test-issuer",
285+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
286+
CreateDNSEndpoint: true,
287+
CreateCertificate: false,
281288
})).ShouldNot(HaveOccurred())
282289

283290
stopMgr := startTestManager(mgr)
@@ -306,7 +313,7 @@ func testHTTPProxyReconcile() {
306313
Expect(crtList.Items).Should(BeEmpty())
307314
})
308315

309-
It("should create Certificate, but should not create DNSEndpoint, if `createDNSEndpoint` is false", func() {
316+
It("should create Certificate, but should not create DNSEndpoint, if `CreateDNSEndpoint` is false", func() {
310317
ns := testNamespacePrefix + randomString(10)
311318
Expect(k8sClient.Create(context.Background(), &corev1.Namespace{
312319
ObjectMeta: ctrl.ObjectMeta{Name: ns},
@@ -317,11 +324,12 @@ func testHTTPProxyReconcile() {
317324

318325
By("disabling the feature to create DNSEndpoint")
319326
scm, mgr := setupManager()
320-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
321-
defaultIssuerName: "test-issuer",
322-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
323-
createDNSEndpoint: false,
324-
createCertificate: true,
327+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
328+
ServiceKey: testServiceKey,
329+
DefaultIssuerName: "test-issuer",
330+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
331+
CreateDNSEndpoint: false,
332+
CreateCertificate: true,
325333
})).ShouldNot(HaveOccurred())
326334

327335
stopMgr := startTestManager(mgr)
@@ -358,11 +366,12 @@ func testHTTPProxyReconcile() {
358366
By("disabling the feature to create Certificate")
359367
scm, mgr := setupManager()
360368

361-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
362-
defaultIssuerName: "test-issuer",
363-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
364-
createDNSEndpoint: true,
365-
createCertificate: false,
369+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
370+
ServiceKey: testServiceKey,
371+
DefaultIssuerName: "test-issuer",
372+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
373+
CreateDNSEndpoint: true,
374+
CreateCertificate: false,
366375
})).ShouldNot(HaveOccurred())
367376

368377
stopMgr := startTestManager(mgr)
@@ -393,7 +402,7 @@ func testHTTPProxyReconcile() {
393402
Expect(crtList.Items).Should(BeEmpty())
394403
})
395404

396-
It("should create Certificate, if `defaultIssuerName` is empty but 'issuer-name' annotation is not empty", func() {
405+
It("should create Certificate, if `DefaultIssuerName` is empty but 'issuer-name' annotation is not empty", func() {
397406
ns := testNamespacePrefix + randomString(10)
398407
Expect(k8sClient.Create(context.Background(), &corev1.Namespace{
399408
ObjectMeta: ctrl.ObjectMeta{Name: ns},
@@ -402,11 +411,12 @@ func testHTTPProxyReconcile() {
402411
ObjectMeta: ctrl.ObjectMeta{Name: ns},
403412
})
404413

405-
By("setup reconciler with empty defaultIssuerName")
414+
By("setup reconciler with empty DefaultIssuerName")
406415
scm, mgr := setupManager()
407-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
408-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
409-
createCertificate: true,
416+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
417+
ServiceKey: testServiceKey,
418+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
419+
CreateCertificate: true,
410420
})).ShouldNot(HaveOccurred())
411421

412422
stopMgr := startTestManager(mgr)
@@ -427,7 +437,7 @@ func testHTTPProxyReconcile() {
427437
Expect(crt.Spec.IssuerRef.Kind).Should(Equal(certmanagerv1alpha2.IssuerKind))
428438
})
429439

430-
It("should not create Certificate, if `defaultIssuerName` and 'issuer-name' annotation are empty", func() {
440+
It("should not create Certificate, if `DefaultIssuerName` and 'issuer-name' annotation are empty", func() {
431441
ns := testNamespacePrefix + randomString(10)
432442
Expect(k8sClient.Create(context.Background(), &corev1.Namespace{
433443
ObjectMeta: ctrl.ObjectMeta{Name: ns},
@@ -436,11 +446,12 @@ func testHTTPProxyReconcile() {
436446
ObjectMeta: ctrl.ObjectMeta{Name: ns},
437447
})
438448

439-
By("setup reconciler with empty defaultIssuerName")
449+
By("setup reconciler with empty DefaultIssuerName")
440450
scm, mgr := setupManager()
441-
Expect(setupReconciler(mgr, scm, reconcilerOptions{
442-
defaultIssuerKind: certmanagerv1alpha2.IssuerKind,
443-
createCertificate: true,
451+
Expect(SetupReconciler(mgr, scm, ReconcilerOptions{
452+
ServiceKey: testServiceKey,
453+
DefaultIssuerKind: certmanagerv1alpha2.IssuerKind,
454+
CreateCertificate: true,
444455
})).ShouldNot(HaveOccurred())
445456

446457
stopMgr := startTestManager(mgr)

0 commit comments

Comments
 (0)