Skip to content

Commit 54058b5

Browse files
authored
Merge pull request #2117 from kube-logging/copilot/fix-fb1717cf-f61a-46b8-8c10-f0e3c00d8392
2 parents 9df7614 + c200cb7 commit 54058b5

File tree

11 files changed

+82
-8
lines changed

11 files changed

+82
-8
lines changed

charts/logging-operator/charts/logging-operator-crds/templates/logging.banzaicloud.io_loggings.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11861,6 +11861,8 @@ spec:
1186111861
tag:
1186211862
type: string
1186311863
type: object
11864+
enabledIPv6:
11865+
type: boolean
1186411866
globalOptions:
1186511867
properties:
1186611868
log_level:

charts/logging-operator/charts/logging-operator-crds/templates/logging.banzaicloud.io_syslogngconfigs.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4065,6 +4065,8 @@ spec:
40654065
tag:
40664066
type: string
40674067
type: object
4068+
enabledIPv6:
4069+
type: boolean
40684070
globalOptions:
40694071
properties:
40704072
log_level:

charts/logging-operator/crds/logging.banzaicloud.io_loggings.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11858,6 +11858,8 @@ spec:
1185811858
tag:
1185911859
type: string
1186011860
type: object
11861+
enabledIPv6:
11862+
type: boolean
1186111863
globalOptions:
1186211864
properties:
1186311865
log_level:

charts/logging-operator/crds/logging.banzaicloud.io_syslogngconfigs.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4062,6 +4062,8 @@ spec:
40624062
tag:
40634063
type: string
40644064
type: object
4065+
enabledIPv6:
4066+
type: boolean
40654067
globalOptions:
40664068
properties:
40674069
log_level:

config/crd/bases/logging.banzaicloud.io_loggings.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11858,6 +11858,8 @@ spec:
1185811858
tag:
1185911859
type: string
1186011860
type: object
11861+
enabledIPv6:
11862+
type: boolean
1186111863
globalOptions:
1186211864
properties:
1186311865
log_level:

config/crd/bases/logging.banzaicloud.io_syslogngconfigs.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4062,6 +4062,8 @@ spec:
40624062
tag:
40634063
type: string
40644064
type: object
4065+
enabledIPv6:
4066+
type: boolean
40654067
globalOptions:
40664068
properties:
40674069
log_level:

docs/configuration/crds/v1beta1/syslogng_types.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ Overrides the default logging level configCheck setup. This field is not used di
3434
### configReloadImage (*BasicImageSpec, optional) {#syslogngspec-configreloadimage}
3535

3636

37+
### enabledIPv6 (bool, optional) {#syslogngspec-enabledipv6}
38+
39+
3740
### globalOptions (*GlobalOptions, optional) {#syslogngspec-globaloptions}
3841

3942

pkg/resources/fluentd/service.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package fluentd
1717
import (
1818
"emperror.dev/errors"
1919
"github.com/cisco-open/operator-tools/pkg/reconciler"
20+
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
2021
v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
2122
corev1 "k8s.io/api/core/v1"
2223
v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -47,9 +48,17 @@ func (r *Reconciler) service() (runtime.Object, reconciler.DesiredState, error)
4748
},
4849
}
4950

51+
if r.fluentdSpec.EnabledIPv6 {
52+
v1beta1.EnableIPv6Options(&desired.Spec)
53+
}
54+
5055
beforeUpdateHook := reconciler.DesiredStateHook(func(current runtime.Object) error {
5156
if s, ok := current.(*corev1.Service); ok {
5257
desired.Spec.ClusterIP = s.Spec.ClusterIP
58+
// Preserve ClusterIPs for dual-stack configuration
59+
if len(s.Spec.ClusterIPs) > 0 {
60+
desired.Spec.ClusterIPs = s.Spec.ClusterIPs
61+
}
5362
} else {
5463
return errors.Errorf("failed to cast service object %+v", current)
5564
}
@@ -61,7 +70,7 @@ func (r *Reconciler) service() (runtime.Object, reconciler.DesiredState, error)
6170

6271
func (r *Reconciler) serviceMetrics() (runtime.Object, reconciler.DesiredState, error) {
6372
if r.fluentdSpec.Metrics != nil && r.fluentdSpec.Metrics.IsEnabled() {
64-
return &corev1.Service{
73+
desired := &corev1.Service{
6574
ObjectMeta: r.FluentdObjectMeta(ServiceName+"-metrics", ComponentFluentd),
6675
Spec: corev1.ServiceSpec{
6776
Ports: []corev1.ServicePort{
@@ -76,7 +85,13 @@ func (r *Reconciler) serviceMetrics() (runtime.Object, reconciler.DesiredState,
7685
Type: corev1.ServiceTypeClusterIP,
7786
ClusterIP: corev1.ClusterIPNone,
7887
},
79-
}, reconciler.StatePresent, nil
88+
}
89+
90+
if r.fluentdSpec.EnabledIPv6 {
91+
v1beta1.EnableIPv6Options(&desired.Spec)
92+
}
93+
94+
return desired, reconciler.StatePresent, nil
8095
}
8196
return &corev1.Service{
8297
ObjectMeta: r.FluentdObjectMeta(ServiceName+"-monitor", ComponentFluentd),
@@ -129,7 +144,7 @@ func (r *Reconciler) serviceBufferMetrics() (runtime.Object, reconciler.DesiredS
129144
port = r.fluentdSpec.BufferVolumeMetrics.Port
130145
}
131146

132-
return &corev1.Service{
147+
desired := &corev1.Service{
133148
ObjectMeta: r.FluentdObjectMeta(ServiceName+"-buffer-metrics", ComponentFluentd),
134149
Spec: corev1.ServiceSpec{
135150
Ports: []corev1.ServicePort{
@@ -144,7 +159,13 @@ func (r *Reconciler) serviceBufferMetrics() (runtime.Object, reconciler.DesiredS
144159
Type: corev1.ServiceTypeClusterIP,
145160
ClusterIP: corev1.ClusterIPNone,
146161
},
147-
}, reconciler.StatePresent, nil
162+
}
163+
164+
if r.fluentdSpec.EnabledIPv6 {
165+
v1beta1.EnableIPv6Options(&desired.Spec)
166+
}
167+
168+
return desired, reconciler.StatePresent, nil
148169
}
149170
return &corev1.Service{
150171
ObjectMeta: r.FluentdObjectMeta(ServiceName+"-buffer-monitor", ComponentFluentd),
@@ -214,5 +235,10 @@ func (r *Reconciler) headlessService() (runtime.Object, reconciler.DesiredState,
214235
ClusterIP: corev1.ClusterIPNone,
215236
},
216237
}
238+
239+
if r.fluentdSpec.EnabledIPv6 {
240+
v1beta1.EnableIPv6Options(&desired.Spec)
241+
}
242+
217243
return desired, reconciler.StatePresent, nil
218244
}

pkg/resources/syslogng/service.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package syslogng
1717
import (
1818
"emperror.dev/errors"
1919
"github.com/cisco-open/operator-tools/pkg/reconciler"
20+
"github.com/kube-logging/logging-operator/pkg/sdk/logging/api/v1beta1"
2021
v1 "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
2122
corev1 "k8s.io/api/core/v1"
2223
v12 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -47,9 +48,17 @@ func (r *Reconciler) service() (runtime.Object, reconciler.DesiredState, error)
4748
},
4849
}
4950

51+
if r.syslogNGSpec.EnabledIPv6 {
52+
v1beta1.EnableIPv6Options(&desired.Spec)
53+
}
54+
5055
beforeUpdateHook := reconciler.DesiredStateHook(func(current runtime.Object) error {
5156
if s, ok := current.(*corev1.Service); ok {
5257
desired.Spec.ClusterIP = s.Spec.ClusterIP
58+
// Preserve ClusterIPs for dual-stack configuration
59+
if len(s.Spec.ClusterIPs) > 0 {
60+
desired.Spec.ClusterIPs = s.Spec.ClusterIPs
61+
}
5362
} else {
5463
return errors.Errorf("failed to cast service object %+v", current)
5564
}
@@ -61,7 +70,7 @@ func (r *Reconciler) service() (runtime.Object, reconciler.DesiredState, error)
6170

6271
func (r *Reconciler) serviceMetrics() (runtime.Object, reconciler.DesiredState, error) {
6372
if r.syslogNGSpec.Metrics != nil && r.syslogNGSpec.Metrics.IsEnabled() {
64-
return &corev1.Service{
73+
desired := &corev1.Service{
6574
ObjectMeta: r.SyslogNGObjectMeta(ServiceName+"-metrics", ComponentSyslogNG),
6675
Spec: corev1.ServiceSpec{
6776
Ports: []corev1.ServicePort{
@@ -76,7 +85,13 @@ func (r *Reconciler) serviceMetrics() (runtime.Object, reconciler.DesiredState,
7685
Type: corev1.ServiceTypeClusterIP,
7786
ClusterIP: corev1.ClusterIPNone,
7887
},
79-
}, reconciler.StatePresent, nil
88+
}
89+
90+
if r.syslogNGSpec.EnabledIPv6 {
91+
v1beta1.EnableIPv6Options(&desired.Spec)
92+
}
93+
94+
return desired, reconciler.StatePresent, nil
8095
}
8196
return &corev1.Service{
8297
ObjectMeta: r.SyslogNGObjectMeta(ServiceName+"-monitor", ComponentSyslogNG),
@@ -128,7 +143,7 @@ func (r *Reconciler) serviceBufferMetrics() (runtime.Object, reconciler.DesiredS
128143
port = r.syslogNGSpec.BufferVolumeMetrics.Port
129144
}
130145

131-
return &corev1.Service{
146+
desired := &corev1.Service{
132147
ObjectMeta: r.SyslogNGObjectMeta(ServiceName+"-buffer-metrics", ComponentSyslogNG),
133148
Spec: corev1.ServiceSpec{
134149
Ports: []corev1.ServicePort{
@@ -143,7 +158,13 @@ func (r *Reconciler) serviceBufferMetrics() (runtime.Object, reconciler.DesiredS
143158
Type: corev1.ServiceTypeClusterIP,
144159
ClusterIP: corev1.ClusterIPNone,
145160
},
146-
}, reconciler.StatePresent, nil
161+
}
162+
163+
if r.syslogNGSpec.EnabledIPv6 {
164+
v1beta1.EnableIPv6Options(&desired.Spec)
165+
}
166+
167+
return desired, reconciler.StatePresent, nil
147168
}
148169
return &corev1.Service{
149170
ObjectMeta: r.SyslogNGObjectMeta(ServiceName+"-buffer-monitor", ComponentSyslogNG),
@@ -211,5 +232,10 @@ func (r *Reconciler) headlessService() (runtime.Object, reconciler.DesiredState,
211232
ClusterIP: corev1.ClusterIPNone,
212233
},
213234
}
235+
236+
if r.syslogNGSpec.EnabledIPv6 {
237+
v1beta1.EnableIPv6Options(&desired.Spec)
238+
}
239+
214240
return desired, reconciler.StatePresent, nil
215241
}

pkg/sdk/logging/api/v1beta1/common_types.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,3 +196,9 @@ type ReadinessDefaultCheck struct {
196196
SuccessThreshold int32 `json:"successThreshold,omitempty"`
197197
FailureThreshold int32 `json:"failureThreshold,omitempty"`
198198
}
199+
200+
func EnableIPv6Options(serviceSpec *corev1.ServiceSpec) {
201+
ipFamilyPolicy := corev1.IPFamilyPolicyPreferDualStack
202+
serviceSpec.IPFamilyPolicy = &ipFamilyPolicy
203+
serviceSpec.IPFamilies = []corev1.IPFamily{corev1.IPv4Protocol, corev1.IPv6Protocol}
204+
}

0 commit comments

Comments
 (0)