Skip to content

Commit fad206d

Browse files
committed
Add env variable to set default dns TTL
Signed-off-by: Alex Zgabur <azgabur@redhat.com>
1 parent 9d4e098 commit fad206d

File tree

2 files changed

+33
-5
lines changed

2 files changed

+33
-5
lines changed

internal/controller/dnspolicy_dnsrecords.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"strings"
77

88
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
"k8s.io/utils/env"
910
externaldns "sigs.k8s.io/external-dns/endpoint"
1011
gatewayapiv1 "sigs.k8s.io/gateway-api/apis/v1"
1112

@@ -19,11 +20,27 @@ const (
1920
LabelListenerReference = "kuadrant.io/listener-name"
2021
)
2122

23+
func dnsPolicyDefaultTTL() (int, error) {
24+
ttl, err := env.GetInt("DNS_DEFAULT_TTL", builder.DefaultTTL)
25+
if err != nil {
26+
return ttl, fmt.Errorf("DNS_DEFAULT_TTL env value could not be parsed as int, default %d will be used: %w", builder.DefaultTTL, err)
27+
}
28+
return ttl, nil
29+
}
30+
31+
func dnsPolicyDefaultCnameTTL() (int, error) {
32+
ttl, err := env.GetInt("DNS_DEFAULT_LB_TTL", builder.DefaultLoadBalancedTTL)
33+
if err != nil {
34+
return ttl, fmt.Errorf("DNS_DEFAULT_LB_TTL env value could not be parsed as int, default %d will be used: %w", builder.DefaultLoadBalancedTTL, err)
35+
}
36+
return ttl, nil
37+
}
38+
2239
func dnsRecordName(gatewayName, listenerName string) string {
2340
return fmt.Sprintf("%s-%s", gatewayName, listenerName)
2441
}
2542

26-
func desiredDNSRecord(gateway *gatewayapiv1.Gateway, clusterID string, dnsPolicy *kuadrantv1.DNSPolicy, targetListener gatewayapiv1.Listener) (*kuadrantdnsv1alpha1.DNSRecord, error) {
43+
func desiredDNSRecord(gateway *gatewayapiv1.Gateway, clusterID string, dnsPolicy *kuadrantv1.DNSPolicy, targetListener gatewayapiv1.Listener, defaultTTL int, defaultLoadBalancedTTL int) (*kuadrantdnsv1alpha1.DNSRecord, error) {
2744
rootHost := string(*targetListener.Hostname)
2845
var healthCheckSpec *kuadrantdnsv1alpha1.HealthCheckSpec
2946

@@ -65,7 +82,7 @@ func desiredDNSRecord(gateway *gatewayapiv1.Gateway, clusterID string, dnsPolicy
6582

6683
dnsRecord.Labels[LabelListenerReference] = string(targetListener.Name)
6784

68-
endpoints, err := buildEndpoints(clusterID, string(*targetListener.Hostname), gateway, dnsPolicy)
85+
endpoints, err := buildEndpoints(clusterID, string(*targetListener.Hostname), gateway, dnsPolicy, defaultTTL, defaultLoadBalancedTTL)
6986
if err != nil {
7087
return nil, fmt.Errorf("failed to generate dns record for a gateway %s in %s ns: %w", gateway.Name, gateway.Namespace, err)
7188
}
@@ -127,14 +144,16 @@ func (g *GatewayWrapper) RemoveExcludedStatusAddresses(p *kuadrantv1.DNSPolicy)
127144
return nil
128145
}
129146

130-
func buildEndpoints(clusterID, hostname string, gateway *gatewayapiv1.Gateway, policy *kuadrantv1.DNSPolicy) ([]*externaldns.Endpoint, error) {
147+
func buildEndpoints(clusterID, hostname string, gateway *gatewayapiv1.Gateway, policy *kuadrantv1.DNSPolicy, defaultTTL int, defaultLoadBalancedTTL int) ([]*externaldns.Endpoint, error) {
131148
gw := gateway.DeepCopy()
132149
gatewayWrapper := NewGatewayWrapper(gw)
133150
// modify the status addresses based on any that need to be excluded
134151
if err := gatewayWrapper.RemoveExcludedStatusAddresses(policy); err != nil {
135152
return nil, fmt.Errorf("failed to reconcile gateway dns records error: %w ", err)
136153
}
137-
endpointBuilder := builder.NewEndpointsBuilder(gatewayWrapper, hostname)
154+
endpointBuilder := builder.NewEndpointsBuilder(gatewayWrapper, hostname).
155+
SetDefaultTTL(defaultTTL).
156+
SetDefaultLoadBalancedTTL(defaultLoadBalancedTTL)
138157

139158
if policy.Spec.LoadBalancing != nil {
140159
endpointBuilder.WithLoadBalancingFor(

internal/controller/effective_dnspolicies_reconciler.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ func (r *EffectiveDNSPoliciesReconciler) reconcile(ctx context.Context, _ []cont
7070
return fmt.Errorf("failed to generate cluster ID: %w", err)
7171
}
7272

73+
defaultTTL, err := dnsPolicyDefaultTTL()
74+
if err != nil {
75+
logger.Error(err, err.Error())
76+
}
77+
defaultLoadBalancedTTL, err := dnsPolicyDefaultCnameTTL()
78+
if err != nil {
79+
logger.Error(err, err.Error())
80+
}
81+
7382
for _, policy := range policies {
7483
_, span := tracer.Start(ctx, "policy.DNSPolicy.effective")
7584
span.SetAttributes(
@@ -133,7 +142,7 @@ func (r *EffectiveDNSPoliciesReconciler) reconcile(ctx context.Context, _ []cont
133142
gatewayHasAttachedRoutes = true
134143
}
135144

136-
desiredRecord, err := desiredDNSRecord(gateway.Gateway, clusterID, policy, *listener.Listener)
145+
desiredRecord, err := desiredDNSRecord(gateway.Gateway, clusterID, policy, *listener.Listener, defaultTTL, defaultLoadBalancedTTL)
137146
if err != nil {
138147
lLogger.Error(err, "failed to build desired dns record")
139148
continue

0 commit comments

Comments
 (0)