Skip to content

Commit 8baaae5

Browse files
authored
feat(core): refresh apisix ssl (#513)
1 parent 62db7da commit 8baaae5

File tree

3 files changed

+73
-3
lines changed

3 files changed

+73
-3
lines changed

core/controllers/gateway/controllers/domain_controller.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,15 @@ package controllers
1919
import (
2020
"context"
2121
"errors"
22+
gatewayv1 "github.com/labring/laf/core/controllers/gateway/api/v1"
2223
"github.com/labring/laf/core/controllers/gateway/apisix"
2324
"github.com/labring/laf/core/pkg/common"
25+
corev1 "k8s.io/api/core/v1"
2426
"k8s.io/apimachinery/pkg/runtime"
2527
ctrl "sigs.k8s.io/controller-runtime"
2628
"sigs.k8s.io/controller-runtime/pkg/client"
2729
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
2830
"sigs.k8s.io/controller-runtime/pkg/log"
29-
30-
gatewayv1 "github.com/labring/laf/core/controllers/gateway/api/v1"
31-
corev1 "k8s.io/api/core/v1"
3231
)
3332

3433
const sslFinalizer = "ssl.gateway.laf.dev"
@@ -76,6 +75,8 @@ func (r *DomainReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
7675
}
7776

7877
func (r *DomainReconciler) apply(ctx context.Context, domain *gatewayv1.Domain) (ctrl.Result, error) {
78+
_log := log.FromContext(ctx)
79+
_log.Info("apply domain: " + domain.Name)
7980

8081
if domain.Spec.CertConfigRef == "" {
8182
return ctrl.Result{}, nil
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package controllers
2+
3+
import (
4+
"context"
5+
gatewayv1 "github.com/labring/laf/core/controllers/gateway/api/v1"
6+
"github.com/labring/laf/core/pkg/common"
7+
corev1 "k8s.io/api/core/v1"
8+
"k8s.io/apimachinery/pkg/runtime"
9+
ctrl "sigs.k8s.io/controller-runtime"
10+
"sigs.k8s.io/controller-runtime/pkg/client"
11+
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
12+
"sigs.k8s.io/controller-runtime/pkg/log"
13+
"sigs.k8s.io/controller-runtime/pkg/reconcile"
14+
"strconv"
15+
"time"
16+
)
17+
18+
var secretUpdateTimeAnnotation = "secret.laf.dev/secret-update-time"
19+
20+
type SecretReconciler struct {
21+
client.Client
22+
Scheme *runtime.Scheme
23+
}
24+
25+
func (r *SecretReconciler) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
26+
// if namespace is not laf system, ignore
27+
if request.Namespace != common.GetSystemNamespace() {
28+
return ctrl.Result{}, nil
29+
}
30+
_log := log.FromContext(ctx)
31+
err := r.Get(ctx, request.NamespacedName, &corev1.Secret{})
32+
if err != nil {
33+
return reconcile.Result{}, err
34+
}
35+
36+
var domainList gatewayv1.DomainList
37+
if err := r.List(ctx, &domainList); err != nil {
38+
return reconcile.Result{}, err
39+
}
40+
for _, item := range domainList.Items {
41+
if item.Spec.CertConfigRef == request.Name {
42+
_log.Info("will reconcile domain", "name", item.Name)
43+
if _, err := controllerutil.CreateOrUpdate(ctx, r.Client, &item, func() error {
44+
if item.Annotations == nil {
45+
item.Annotations = make(map[string]string)
46+
}
47+
item.Annotations[secretUpdateTimeAnnotation] = strconv.FormatInt(time.Now().Unix(), 10)
48+
return nil
49+
}); err != nil {
50+
return ctrl.Result{}, err
51+
}
52+
}
53+
}
54+
55+
return ctrl.Result{}, nil
56+
}
57+
58+
func (r *SecretReconciler) SetupWithManager(mgr ctrl.Manager) error {
59+
return ctrl.NewControllerManagedBy(mgr).
60+
For(&corev1.Secret{}).
61+
Complete(r)
62+
}

core/controllers/gateway/main.go

+7
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,13 @@ func main() {
114114
setupLog.Error(err, "unable to create controller", "controller", "Route")
115115
os.Exit(1)
116116
}
117+
if err = (&controllers.SecretReconciler{
118+
Client: mgr.GetClient(),
119+
Scheme: mgr.GetScheme(),
120+
}).SetupWithManager(mgr); err != nil {
121+
setupLog.Error(err, "unable to create controller", "controller", "Route")
122+
os.Exit(1)
123+
}
117124
//+kubebuilder:scaffold:builder
118125

119126
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {

0 commit comments

Comments
 (0)