Skip to content

Commit 8b4fb07

Browse files
Update Ingress.status.loadBalancer.ingress when reconciling (#69)
* Update service status when reconciling * Addressing PR comments Missed some stuff
1 parent 43ea074 commit 8b4fb07

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

pkg/cloudflare-controller/tunnel-client.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ func (t *TunnelClient) PutExposures(ctx context.Context, exposures []exposure.Ex
3535
return nil
3636
}
3737

38+
func (t *TunnelClient) TunnelDomain() string {
39+
return tunnelDomain(t.tunnelId)
40+
}
41+
3842
func (t *TunnelClient) updateTunnelIngressRules(ctx context.Context, exposures []exposure.Exposure) error {
3943
var ingressRules []cloudflare.UnvalidatedIngressRule
4044

pkg/controller/ingress-controller.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ package controller
33
import (
44
"context"
55
"fmt"
6-
76
cloudflarecontroller "github.com/STRRL/cloudflare-tunnel-ingress-controller/pkg/cloudflare-controller"
87
"github.com/STRRL/cloudflare-tunnel-ingress-controller/pkg/exposure"
98
"github.com/go-logr/logr"
109
"github.com/pkg/errors"
10+
v1 "k8s.io/api/core/v1"
1111
networkingv1 "k8s.io/api/networking/v1"
1212
apierrors "k8s.io/apimachinery/pkg/api/errors"
1313
"sigs.k8s.io/controller-runtime/pkg/client"
@@ -99,6 +99,19 @@ func (i *IngressController) Reconcile(ctx context.Context, request reconcile.Req
9999
}
100100
}
101101

102+
origin.Status.LoadBalancer.Ingress = append(origin.Status.LoadBalancer.Ingress,
103+
networkingv1.IngressLoadBalancerIngress{
104+
Hostname: i.tunnelClient.TunnelDomain(),
105+
Ports: []networkingv1.IngressPortStatus{{
106+
Protocol: v1.ProtocolTCP,
107+
Port: 443,
108+
}},
109+
},
110+
)
111+
if err = i.kubeClient.Status().Update(ctx, &origin); err != nil {
112+
return reconcile.Result{}, errors.Wrapf(err, "failed to update ingress status")
113+
}
114+
102115
i.logger.V(3).Info("reconcile completed", "triggered-by", request.NamespacedName)
103116
return reconcile.Result{}, nil
104117
}
@@ -135,7 +148,7 @@ func (i *IngressController) listControlledIngressClasses(ctx context.Context) ([
135148
if err != nil {
136149
return nil, errors.Wrap(err, "list ingress classes")
137150
}
138-
151+
139152
filteredList := make([]networkingv1.IngressClass, 0, len(list.Items))
140153
for _, ingress := range list.Items {
141154
if ingress.Spec.Controller != i.controllerClassName {

pkg/controller/transform.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ func FromIngressToExposure(ctx context.Context, logger logr.Logger, kubeClient c
3232
}
3333

3434
hostname := rule.Host
35-
3635
scheme := "http"
3736

3837
if backendProtocol, ok := getAnnotation(ingress.Annotations, AnnotationBackendProtocol); ok {
@@ -96,12 +95,10 @@ func FromIngressToExposure(ctx context.Context, logger logr.Logger, kubeClient c
9695
return nil, errors.Errorf("path type in ingress %s/%s is %s, which is not supported", ingress.GetNamespace(), ingress.GetName(), *path.PathType)
9796
}
9897

99-
pathPrefix := path.Path
100-
10198
result = append(result, exposure.Exposure{
10299
Hostname: hostname,
103100
ServiceTarget: fmt.Sprintf("%s://%s:%d", scheme, host, port),
104-
PathPrefix: pathPrefix,
101+
PathPrefix: path.Path,
105102
IsDeleted: isDeleted,
106103
ProxySSLVerifyEnabled: proxySSLVerifyEnabled,
107104
})

0 commit comments

Comments
 (0)