Skip to content

Commit ad39869

Browse files
rurkssbenlangfeldindiebrain
authored
Remove orphaned network policy resource (#49)
Fixes: #48 This PR aims to address an issue introduced in release 2.0.1, where the logic for generating network policy resources by the operator was changed. From version 2.0.1 onwards, the operator no longer generates network policies for Redis but failed to remove existing policies generated prior to this version. This PR introduces a check and removal process for that leftover network policiy. --------- Co-authored-by: Ben Langfeld <[email protected]> Co-authored-by: Aaron Kuehler <[email protected]>
1 parent 1f4c4ef commit ad39869

File tree

5 files changed

+42
-0
lines changed

5 files changed

+42
-0
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ Also check this project's [releases](https://github.com/powerhome/redis-operator
99

1010
## Unreleased
1111

12+
### Fixed
13+
14+
- [In version 2.0.1, the approach to generating network policy by the operator was modified. From v2.0.1 onwards, the operator no longer creates network policy for redis but continues to do it for sentinels. This fix automatically removes any leftover network policy from the namespace, eliminating the need for manual intervention](https://github.com/powerhome/redis-operator/pull/49)
15+
1216
### Changed
1317

1418
- Add default haproxy image #47

mocks/operator/redisfailover/service/RedisFailoverClient.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

operator/redisfailover/ensurer.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ func (w *RedisFailoverHandler) Ensure(rf *redisfailoverv1.RedisFailover, labels
2525
}
2626
}
2727

28+
if err := w.rfService.DestroydOrphanedRedisNetworkPolicy(rf); err != nil {
29+
return err
30+
}
31+
2832
if rf.Spec.Haproxy != nil {
2933
if err := w.rfService.EnsureHAProxyRedisMasterService(rf, labels, or); err != nil {
3034
return err

operator/redisfailover/ensurer_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ func TestEnsure(t *testing.T) {
151151
mrfs.On("EnsureRedisReadinessConfigMap", rf, mock.Anything, mock.Anything).Once().Return(nil)
152152
mrfs.On("EnsureRedisStatefulset", rf, mock.Anything, mock.Anything).Once().Return(nil)
153153

154+
mrfs.On("DestroydOrphanedRedisNetworkPolicy", rf, mock.Anything, mock.Anything).Once().Return(nil)
155+
154156
// Create the Kops client and call the valid logic.
155157
handler := rfOperator.NewRedisFailoverHandler(config, mrfs, mrfc, mrfh, mk, metrics.Dummy, log.Dummy)
156158
err := handler.Ensure(rf, map[string]string{}, []metav1.OwnerReference{}, metrics.Dummy)

operator/redisfailover/service/client.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ type RedisFailoverClient interface {
3838

3939
DestroySentinelResources(rFailover *redisfailoverv1.RedisFailover) error
4040
UpdateStatus(rFailover *redisfailoverv1.RedisFailover) (*redisfailoverv1.RedisFailover, error)
41+
42+
DestroydOrphanedRedisNetworkPolicy(rFailover *redisfailoverv1.RedisFailover) error
4143
}
4244

4345
// RedisFailoverKubeClient implements the required methods to talk with kubernetes
@@ -212,6 +214,22 @@ func (r *RedisFailoverKubeClient) DestroySentinelResources(rf *redisfailoverv1.R
212214
return err
213215
}
214216

217+
func (r *RedisFailoverKubeClient) DestroydOrphanedRedisNetworkPolicy(rf *redisfailoverv1.RedisFailover) error {
218+
219+
name := GetRedisNetworkPolicyName(rf)
220+
221+
if _, err := r.K8SService.GetNetworkPolicy(rf.Namespace, name); err != nil {
222+
if errors.IsNotFound(err) {
223+
return nil
224+
} else {
225+
return err
226+
}
227+
}
228+
229+
err := r.K8SService.DeleteNetworkPolicy(rf.Namespace, name)
230+
return err
231+
}
232+
215233
// EnsureRedisStatefulset makes sure the redis statefulset exists in the desired state
216234
func (r *RedisFailoverKubeClient) EnsureRedisStatefulset(rf *redisfailoverv1.RedisFailover, labels map[string]string, ownerRefs []metav1.OwnerReference) error {
217235
if !rf.Spec.Redis.DisablePodDisruptionBudget {

0 commit comments

Comments
 (0)