Skip to content

Commit 1c71908

Browse files
author
Alex Vest
committedOct 6, 2022
Merge branch 'master' into leadership-election
2 parents 488eaa9 + e0fcc3b commit 1c71908

18 files changed

+503
-309
lines changed
 

‎deployments/kubernetes/chart/reloader/Chart.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
apiVersion: v1
44
name: reloader
55
description: Reloader chart that runs on kubernetes
6-
version: v0.0.121
7-
appVersion: v0.0.121
6+
version: v0.0.122
7+
appVersion: v0.0.122
88
keywords:
99
- Reloader
1010
- kubernetes

‎deployments/kubernetes/chart/reloader/templates/clusterrole.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,11 @@ rules:
8787
- get
8888
- update
8989
{{- end}}
90+
- apiGroups:
91+
- ""
92+
resources:
93+
- events
94+
verbs:
95+
- create
96+
- patch
9097
{{- end }}

‎deployments/kubernetes/chart/reloader/templates/role.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,11 @@ rules:
8787
- get
8888
- update
8989
{{- end}}
90+
- apiGroups:
91+
- ""
92+
resources:
93+
- events
94+
verbs:
95+
- create
96+
- patch
9097
{{- end }}

‎deployments/kubernetes/chart/reloader/values.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ reloader:
6565
labels:
6666
provider: stakater
6767
group: com.stakater.platform
68-
version: v0.0.121
68+
version: v0.0.122
6969
image:
7070
name: stakater/reloader
71-
tag: v0.0.121
71+
tag: v0.0.122
7272
pullPolicy: IfNotPresent
7373
# Support for extra environment variables.
7474
env:

‎deployments/kubernetes/manifests/clusterrole.yaml

+8-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
meta.helm.sh/release-name: "reloader"
1010
labels:
1111
app: reloader-reloader
12-
chart: "reloader-v0.0.121"
12+
chart: "reloader-v0.0.122"
1313
release: "reloader"
1414
heritage: "Helm"
1515
app.kubernetes.io/managed-by: "Helm"
@@ -46,3 +46,10 @@ rules:
4646
- get
4747
- update
4848
- patch
49+
- apiGroups:
50+
- ""
51+
resources:
52+
- events
53+
verbs:
54+
- create
55+
- patch

‎deployments/kubernetes/manifests/clusterrolebinding.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ metadata:
99
meta.helm.sh/release-name: "reloader"
1010
labels:
1111
app: reloader-reloader
12-
chart: "reloader-v0.0.121"
12+
chart: "reloader-v0.0.122"
1313
release: "reloader"
1414
heritage: "Helm"
1515
app.kubernetes.io/managed-by: "Helm"

‎deployments/kubernetes/manifests/deployment.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ metadata:
88
meta.helm.sh/release-name: "reloader"
99
labels:
1010
app: reloader-reloader
11-
chart: "reloader-v0.0.121"
11+
chart: "reloader-v0.0.122"
1212
release: "reloader"
1313
heritage: "Helm"
1414
app.kubernetes.io/managed-by: "Helm"
1515
group: com.stakater.platform
1616
provider: stakater
17-
version: v0.0.121
17+
version: v0.0.122
1818
name: reloader-reloader
1919
namespace: default
2020
spec:
@@ -28,16 +28,16 @@ spec:
2828
metadata:
2929
labels:
3030
app: reloader-reloader
31-
chart: "reloader-v0.0.121"
31+
chart: "reloader-v0.0.122"
3232
release: "reloader"
3333
heritage: "Helm"
3434
app.kubernetes.io/managed-by: "Helm"
3535
group: com.stakater.platform
3636
provider: stakater
37-
version: v0.0.121
37+
version: v0.0.122
3838
spec:
3939
containers:
40-
- image: "stakater/reloader:v0.0.121"
40+
- image: "stakater/reloader:v0.0.122"
4141
imagePullPolicy: IfNotPresent
4242
name: reloader-reloader
4343

‎deployments/kubernetes/manifests/serviceaccount.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ metadata:
88
meta.helm.sh/release-name: "reloader"
99
labels:
1010
app: reloader-reloader
11-
chart: "reloader-v0.0.121"
11+
chart: "reloader-v0.0.122"
1212
release: "reloader"
1313
heritage: "Helm"
1414
app.kubernetes.io/managed-by: "Helm"

‎deployments/kubernetes/reloader.yaml

+15-8
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ metadata:
88
meta.helm.sh/release-name: "reloader"
99
labels:
1010
app: reloader-reloader
11-
chart: "reloader-v0.0.121"
11+
chart: "reloader-v0.0.122"
1212
release: "reloader"
1313
heritage: "Helm"
1414
app.kubernetes.io/managed-by: "Helm"
@@ -25,7 +25,7 @@ metadata:
2525
meta.helm.sh/release-name: "reloader"
2626
labels:
2727
app: reloader-reloader
28-
chart: "reloader-v0.0.121"
28+
chart: "reloader-v0.0.122"
2929
release: "reloader"
3030
heritage: "Helm"
3131
app.kubernetes.io/managed-by: "Helm"
@@ -62,6 +62,13 @@ rules:
6262
- get
6363
- update
6464
- patch
65+
- apiGroups:
66+
- ""
67+
resources:
68+
- events
69+
verbs:
70+
- create
71+
- patch
6572
---
6673
# Source: reloader/templates/clusterrolebinding.yaml
6774
apiVersion: rbac.authorization.k8s.io/v1
@@ -73,7 +80,7 @@ metadata:
7380
meta.helm.sh/release-name: "reloader"
7481
labels:
7582
app: reloader-reloader
76-
chart: "reloader-v0.0.121"
83+
chart: "reloader-v0.0.122"
7784
release: "reloader"
7885
heritage: "Helm"
7986
app.kubernetes.io/managed-by: "Helm"
@@ -97,13 +104,13 @@ metadata:
97104
meta.helm.sh/release-name: "reloader"
98105
labels:
99106
app: reloader-reloader
100-
chart: "reloader-v0.0.121"
107+
chart: "reloader-v0.0.122"
101108
release: "reloader"
102109
heritage: "Helm"
103110
app.kubernetes.io/managed-by: "Helm"
104111
group: com.stakater.platform
105112
provider: stakater
106-
version: v0.0.121
113+
version: v0.0.122
107114
name: reloader-reloader
108115
namespace: default
109116
spec:
@@ -117,16 +124,16 @@ spec:
117124
metadata:
118125
labels:
119126
app: reloader-reloader
120-
chart: "reloader-v0.0.121"
127+
chart: "reloader-v0.0.122"
121128
release: "reloader"
122129
heritage: "Helm"
123130
app.kubernetes.io/managed-by: "Helm"
124131
group: com.stakater.platform
125132
provider: stakater
126-
version: v0.0.121
133+
version: v0.0.122
127134
spec:
128135
containers:
129-
- image: "stakater/reloader:v0.0.121"
136+
- image: "stakater/reloader:v0.0.122"
130137
imagePullPolicy: IfNotPresent
131138
name: reloader-reloader
132139

‎go.mod

+3-6
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@ require (
66
github.com/argoproj/argo-rollouts v1.2.1
77
github.com/openshift/api v0.0.0-20210527122704-efd9d5958e01
88
github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142
9+
github.com/parnurzeal/gorequest v0.2.16
910
github.com/prometheus/client_golang v1.12.2
1011
github.com/sirupsen/logrus v1.8.1
1112
github.com/spf13/cobra v1.5.0
1213
k8s.io/api v0.24.2
1314
k8s.io/apimachinery v0.24.2
1415
k8s.io/client-go v0.24.2
16+
k8s.io/kubectl v0.23.1
1517
)
1618

1719
require (
18-
cloud.google.com/go v0.99.0 // indirect
19-
github.com/PuerkitoBio/purell v1.1.1 // indirect
20-
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
2120
github.com/beorn7/perks v1.0.1 // indirect
2221
github.com/cespare/xxhash/v2 v2.1.2 // indirect
2322
github.com/davecgh/go-spew v1.1.1 // indirect
@@ -28,6 +27,7 @@ require (
2827
github.com/go-openapi/jsonreference v0.20.0 // indirect
2928
github.com/go-openapi/swag v0.21.1 // indirect
3029
github.com/gogo/protobuf v1.3.2 // indirect
30+
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
3131
github.com/golang/protobuf v1.5.2 // indirect
3232
github.com/google/gnostic v0.6.9 // indirect
3333
github.com/google/go-cmp v0.5.8 // indirect
@@ -41,9 +41,6 @@ require (
4141
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
4242
github.com/modern-go/reflect2 v1.0.2 // indirect
4343
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
44-
github.com/onsi/ginkgo v1.15.1 // indirect
45-
github.com/onsi/gomega v1.19.0 // indirect
46-
github.com/parnurzeal/gorequest v0.2.16 // indirect
4744
github.com/pkg/errors v0.9.1 // indirect
4845
github.com/prometheus/client_model v0.2.0 // indirect
4946
github.com/prometheus/common v0.36.0 // indirect

‎go.sum

+205-98
Large diffs are not rendered by default.

‎internal/pkg/callbacks/rolling_upgrade.go

+102-91
Large diffs are not rendered by default.

‎internal/pkg/controller/controller.go

+16-5
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,22 @@ import (
44
"fmt"
55
"time"
66

7-
"github.com/stakater/Reloader/internal/pkg/options"
8-
97
"github.com/sirupsen/logrus"
108
"github.com/stakater/Reloader/internal/pkg/handler"
119
"github.com/stakater/Reloader/internal/pkg/metrics"
10+
"github.com/stakater/Reloader/internal/pkg/options"
1211
"github.com/stakater/Reloader/internal/pkg/util"
1312
"github.com/stakater/Reloader/pkg/kube"
13+
v1 "k8s.io/api/core/v1"
1414
"k8s.io/apimachinery/pkg/fields"
1515
"k8s.io/apimachinery/pkg/util/runtime"
1616
"k8s.io/apimachinery/pkg/util/wait"
1717
"k8s.io/client-go/kubernetes"
18+
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
1819
"k8s.io/client-go/tools/cache"
20+
"k8s.io/client-go/tools/record"
1921
"k8s.io/client-go/util/workqueue"
20-
21-
v1 "k8s.io/api/core/v1"
22+
"k8s.io/kubectl/pkg/scheme"
2223
)
2324

2425
// Controller for checking events
@@ -30,6 +31,7 @@ type Controller struct {
3031
namespace string
3132
ignoredNamespaces util.List
3233
collectors metrics.Collectors
34+
recorder record.EventRecorder
3335
}
3436

3537
// controllerInitialized flag determines whether controlled is being initialized
@@ -44,6 +46,11 @@ func NewController(
4446
namespace: namespace,
4547
ignoredNamespaces: ignoredNamespaces,
4648
}
49+
eventBroadcaster := record.NewBroadcaster()
50+
eventBroadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{
51+
Interface: client.CoreV1().Events(""),
52+
})
53+
recorder := eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: fmt.Sprintf("reloader-%s", resource)})
4754

4855
queue := workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter())
4956
listWatcher := cache.NewListWatchFromClient(client.CoreV1().RESTClient(), resource, namespace, fields.Everything())
@@ -57,6 +64,8 @@ func NewController(
5764
c.informer = informer
5865
c.queue = queue
5966
c.collectors = collectors
67+
c.recorder = recorder
68+
6069
logrus.Infof("created controller for: %s", resource)
6170
return &c, nil
6271
}
@@ -68,6 +77,7 @@ func (c *Controller) Add(obj interface{}) {
6877
c.queue.Add(handler.ResourceCreatedHandler{
6978
Resource: obj,
7079
Collectors: c.collectors,
80+
Recorder: c.recorder,
7181
})
7282
}
7383
}
@@ -90,6 +100,7 @@ func (c *Controller) Update(old interface{}, new interface{}) {
90100
Resource: new,
91101
OldResource: old,
92102
Collectors: c.collectors,
103+
Recorder: c.recorder,
93104
})
94105
}
95106
}
@@ -99,7 +110,7 @@ func (c *Controller) Delete(old interface{}) {
99110
// Todo: Any future delete event can be handled here
100111
}
101112

102-
//Run function for controller which handles the queue
113+
// Run function for controller which handles the queue
103114
func (c *Controller) Run(threadiness int, stopCh chan struct{}) {
104115
defer runtime.HandleCrash()
105116

‎internal/pkg/handler/create.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import (
55
"github.com/stakater/Reloader/internal/pkg/metrics"
66
"github.com/stakater/Reloader/internal/pkg/util"
77
v1 "k8s.io/api/core/v1"
8+
"k8s.io/client-go/tools/record"
89
)
910

1011
// ResourceCreatedHandler contains new objects
1112
type ResourceCreatedHandler struct {
1213
Resource interface{}
1314
Collectors metrics.Collectors
15+
Recorder record.EventRecorder
1416
}
1517

1618
// Handle processes the newly created resource
@@ -20,7 +22,7 @@ func (r ResourceCreatedHandler) Handle() error {
2022
} else {
2123
config, _ := r.GetConfig()
2224
// process resource based on its type
23-
return doRollingUpgrade(config, r.Collectors)
25+
return doRollingUpgrade(config, r.Collectors, r.Recorder)
2426
}
2527
return nil
2628
}

‎internal/pkg/handler/update.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import (
55
"github.com/stakater/Reloader/internal/pkg/metrics"
66
"github.com/stakater/Reloader/internal/pkg/util"
77
v1 "k8s.io/api/core/v1"
8+
"k8s.io/client-go/tools/record"
89
)
910

1011
// ResourceUpdatedHandler contains updated objects
1112
type ResourceUpdatedHandler struct {
1213
Resource interface{}
1314
OldResource interface{}
1415
Collectors metrics.Collectors
16+
Recorder record.EventRecorder
1517
}
1618

1719
// Handle processes the updated resource
@@ -22,7 +24,7 @@ func (r ResourceUpdatedHandler) Handle() error {
2224
config, oldSHAData := r.GetConfig()
2325
if config.SHAValue != oldSHAData {
2426
// process resource based on its type
25-
return doRollingUpgrade(config, r.Collectors)
27+
return doRollingUpgrade(config, r.Collectors, r.Recorder)
2628
}
2729
}
2830
return nil

‎internal/pkg/handler/upgrade.go

+35-20
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import (
55
"errors"
66
"fmt"
77
"os"
8+
"regexp"
9+
"strconv"
10+
"strings"
811

912
"github.com/prometheus/client_golang/prometheus"
1013
"github.com/sirupsen/logrus"
@@ -16,9 +19,9 @@ import (
1619
"github.com/stakater/Reloader/internal/pkg/util"
1720
"github.com/stakater/Reloader/pkg/kube"
1821
v1 "k8s.io/api/core/v1"
19-
"regexp"
20-
"strconv"
21-
"strings"
22+
"k8s.io/apimachinery/pkg/api/meta"
23+
"k8s.io/apimachinery/pkg/runtime"
24+
"k8s.io/client-go/tools/record"
2225
)
2326

2427
// GetDeploymentRollingUpgradeFuncs returns all callback funcs for a deployment
@@ -91,31 +94,31 @@ func GetArgoRolloutRollingUpgradeFuncs() callbacks.RollingUpgradeFuncs {
9194
}
9295
}
9396

94-
func doRollingUpgrade(config util.Config, collectors metrics.Collectors) error {
97+
func doRollingUpgrade(config util.Config, collectors metrics.Collectors, recorder record.EventRecorder) error {
9598
clients := kube.GetClients()
9699

97-
err := rollingUpgrade(clients, config, GetDeploymentRollingUpgradeFuncs(), collectors)
100+
err := rollingUpgrade(clients, config, GetDeploymentRollingUpgradeFuncs(), collectors, recorder)
98101
if err != nil {
99102
return err
100103
}
101-
err = rollingUpgrade(clients, config, GetDaemonSetRollingUpgradeFuncs(), collectors)
104+
err = rollingUpgrade(clients, config, GetDaemonSetRollingUpgradeFuncs(), collectors, recorder)
102105
if err != nil {
103106
return err
104107
}
105-
err = rollingUpgrade(clients, config, GetStatefulSetRollingUpgradeFuncs(), collectors)
108+
err = rollingUpgrade(clients, config, GetStatefulSetRollingUpgradeFuncs(), collectors, recorder)
106109
if err != nil {
107110
return err
108111
}
109112

110113
if kube.IsOpenshift {
111-
err = rollingUpgrade(clients, config, GetDeploymentConfigRollingUpgradeFuncs(), collectors)
114+
err = rollingUpgrade(clients, config, GetDeploymentConfigRollingUpgradeFuncs(), collectors, recorder)
112115
if err != nil {
113116
return err
114117
}
115118
}
116119

117120
if options.IsArgoRollouts == "true" {
118-
err = rollingUpgrade(clients, config, GetArgoRolloutRollingUpgradeFuncs(), collectors)
121+
err = rollingUpgrade(clients, config, GetArgoRolloutRollingUpgradeFuncs(), collectors, recorder)
119122
if err != nil {
120123
return err
121124
}
@@ -124,17 +127,17 @@ func doRollingUpgrade(config util.Config, collectors metrics.Collectors) error {
124127
return nil
125128
}
126129

127-
func rollingUpgrade(clients kube.Clients, config util.Config, upgradeFuncs callbacks.RollingUpgradeFuncs, collectors metrics.Collectors) error {
130+
func rollingUpgrade(clients kube.Clients, config util.Config, upgradeFuncs callbacks.RollingUpgradeFuncs, collectors metrics.Collectors, recorder record.EventRecorder) error {
128131

129-
err := PerformRollingUpgrade(clients, config, upgradeFuncs, collectors)
132+
err := PerformRollingUpgrade(clients, config, upgradeFuncs, collectors, recorder)
130133
if err != nil {
131134
logrus.Errorf("Rolling upgrade for '%s' failed with error = %v", config.ResourceName, err)
132135
}
133136
return err
134137
}
135138

136139
// PerformRollingUpgrade upgrades the deployment if there is any change in configmap or secret data
137-
func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFuncs callbacks.RollingUpgradeFuncs, collectors metrics.Collectors) error {
140+
func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFuncs callbacks.RollingUpgradeFuncs, collectors metrics.Collectors, recorder record.EventRecorder) error {
138141
items := upgradeFuncs.ItemsFunc(clients, config.Namespace)
139142

140143
for _, i := range items {
@@ -177,17 +180,29 @@ func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFunc
177180
}
178181

179182
if result == constants.Updated {
183+
accessor, err := meta.Accessor(i)
184+
if err != nil {
185+
return err
186+
}
187+
resourceName := accessor.GetName()
180188
err = upgradeFuncs.UpdateFunc(clients, config.Namespace, i)
181-
resourceName := util.ToObjectMeta(i).Name
182189
if err != nil {
183-
logrus.Errorf("Update for '%s' of type '%s' in namespace '%s' failed with error %v", resourceName, upgradeFuncs.ResourceType, config.Namespace, err)
190+
message := fmt.Sprintf("Update for '%s' of type '%s' in namespace '%s' failed with error %v", resourceName, upgradeFuncs.ResourceType, config.Namespace, err)
191+
logrus.Errorf(message)
184192
collectors.Reloaded.With(prometheus.Labels{"success": "false"}).Inc()
193+
if recorder != nil {
194+
recorder.Event(i, v1.EventTypeWarning, "ReloadFail", message)
195+
}
185196
return err
186197
} else {
187-
logrus.Infof("Changes detected in '%s' of type '%s' in namespace '%s'", config.ResourceName, config.Type, config.Namespace)
188-
logrus.Infof("Updated '%s' of type '%s' in namespace '%s'", resourceName, upgradeFuncs.ResourceType, config.Namespace)
198+
message := fmt.Sprintf("Changes detected in '%s' of type '%s' in namespace '%s'", config.ResourceName, config.Type, config.Namespace)
199+
message += fmt.Sprintf(", Updated '%s' of type '%s' in namespace '%s'", resourceName, upgradeFuncs.ResourceType, config.Namespace)
200+
logrus.Infof(message)
189201
collectors.Reloaded.With(prometheus.Labels{"success": "true"}).Inc()
190202
alert_on_reload, ok := os.LookupEnv("ALERT_ON_RELOAD")
203+
if recorder != nil {
204+
recorder.Event(i, v1.EventTypeNormal, "Reloaded", message)
205+
}
191206
if ok && alert_on_reload == "true" {
192207
msg := fmt.Sprintf(
193208
"Reloader detected changes in *%s* of type *%s* in namespace *%s*. Hence reloaded *%s* of type *%s* in namespace *%s*",
@@ -271,7 +286,7 @@ func getContainerWithEnvReference(containers []v1.Container, resourceName string
271286
return nil
272287
}
273288

274-
func getContainerUsingResource(upgradeFuncs callbacks.RollingUpgradeFuncs, item interface{}, config util.Config, autoReload bool) *v1.Container {
289+
func getContainerUsingResource(upgradeFuncs callbacks.RollingUpgradeFuncs, item runtime.Object, config util.Config, autoReload bool) *v1.Container {
275290
volumes := upgradeFuncs.VolumesFunc(item)
276291
containers := upgradeFuncs.ContainersFunc(item)
277292
initContainers := upgradeFuncs.InitContainersFunc(item)
@@ -310,15 +325,15 @@ func getContainerUsingResource(upgradeFuncs callbacks.RollingUpgradeFuncs, item
310325
return container
311326
}
312327

313-
func invokeReloadStrategy(upgradeFuncs callbacks.RollingUpgradeFuncs, item interface{}, config util.Config, autoReload bool) constants.Result {
328+
func invokeReloadStrategy(upgradeFuncs callbacks.RollingUpgradeFuncs, item runtime.Object, config util.Config, autoReload bool) constants.Result {
314329
if options.ReloadStrategy == constants.AnnotationsReloadStrategy {
315330
return updatePodAnnotations(upgradeFuncs, item, config, autoReload)
316331
}
317332

318333
return updateContainerEnvVars(upgradeFuncs, item, config, autoReload)
319334
}
320335

321-
func updatePodAnnotations(upgradeFuncs callbacks.RollingUpgradeFuncs, item interface{}, config util.Config, autoReload bool) constants.Result {
336+
func updatePodAnnotations(upgradeFuncs callbacks.RollingUpgradeFuncs, item runtime.Object, config util.Config, autoReload bool) constants.Result {
322337
container := getContainerUsingResource(upgradeFuncs, item, config, autoReload)
323338
if container == nil {
324339
return constants.NoContainerFound
@@ -370,7 +385,7 @@ func createReloadedAnnotations(target *util.ReloadSource) (map[string]string, er
370385
return annotations, nil
371386
}
372387

373-
func updateContainerEnvVars(upgradeFuncs callbacks.RollingUpgradeFuncs, item interface{}, config util.Config, autoReload bool) constants.Result {
388+
func updateContainerEnvVars(upgradeFuncs callbacks.RollingUpgradeFuncs, item runtime.Object, config util.Config, autoReload bool) constants.Result {
374389
var result constants.Result
375390
envVar := constants.EnvVarPrefix + util.ConvertToEnvVarName(config.ResourceName) + "_" + config.Type
376391
container := getContainerUsingResource(upgradeFuncs, item, config, autoReload)

‎internal/pkg/handler/upgrade_test.go

+70-60
Large diffs are not rendered by default.

‎internal/pkg/testutil/kube.go

+18-7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/stakater/Reloader/pkg/kube"
2323
appsv1 "k8s.io/api/apps/v1"
2424
v1 "k8s.io/api/core/v1"
25+
"k8s.io/apimachinery/pkg/api/meta"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2627
"k8s.io/client-go/kubernetes"
2728
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
@@ -614,7 +615,7 @@ func GetResourceSHAFromAnnotation(podAnnotations map[string]string) string {
614615
return last.Hash
615616
}
616617

617-
//ConvertResourceToSHA generates SHA from secret or configmap data
618+
// ConvertResourceToSHA generates SHA from secret or configmap data
618619
func ConvertResourceToSHA(resourceType string, namespace string, resourceName string, data string) string {
619620
values := []string{}
620621
if resourceType == SecretResourceType {
@@ -849,10 +850,15 @@ func VerifyResourceEnvVarUpdate(clients kube.Clients, config util.Config, envVar
849850
items := upgradeFuncs.ItemsFunc(clients, config.Namespace)
850851
for _, i := range items {
851852
containers := upgradeFuncs.ContainersFunc(i)
853+
accessor, err := meta.Accessor(i)
854+
if err != nil {
855+
return false
856+
}
857+
annotations := accessor.GetAnnotations()
852858
// match statefulsets with the correct annotation
853-
annotationValue := util.ToObjectMeta(i).Annotations[config.Annotation]
854-
searchAnnotationValue := util.ToObjectMeta(i).Annotations[options.AutoSearchAnnotation]
855-
reloaderEnabledValue := util.ToObjectMeta(i).Annotations[options.ReloaderAutoAnnotation]
859+
annotationValue := annotations[config.Annotation]
860+
searchAnnotationValue := annotations[options.AutoSearchAnnotation]
861+
reloaderEnabledValue := annotations[options.ReloaderAutoAnnotation]
856862
reloaderEnabled, err := strconv.ParseBool(reloaderEnabledValue)
857863
matches := false
858864
if err == nil && reloaderEnabled {
@@ -888,10 +894,15 @@ func VerifyResourceAnnotationUpdate(clients kube.Clients, config util.Config, up
888894
items := upgradeFuncs.ItemsFunc(clients, config.Namespace)
889895
for _, i := range items {
890896
podAnnotations := upgradeFuncs.PodAnnotationsFunc(i)
897+
accessor, err := meta.Accessor(i)
898+
if err != nil {
899+
return false
900+
}
901+
annotations := accessor.GetAnnotations()
891902
// match statefulsets with the correct annotation
892-
annotationValue := util.ToObjectMeta(i).Annotations[config.Annotation]
893-
searchAnnotationValue := util.ToObjectMeta(i).Annotations[options.AutoSearchAnnotation]
894-
reloaderEnabledValue := util.ToObjectMeta(i).Annotations[options.ReloaderAutoAnnotation]
903+
annotationValue := annotations[config.Annotation]
904+
searchAnnotationValue := annotations[options.AutoSearchAnnotation]
905+
reloaderEnabledValue := annotations[options.ReloaderAutoAnnotation]
895906
reloaderEnabled, err := strconv.ParseBool(reloaderEnabledValue)
896907
matches := false
897908
if err == nil && reloaderEnabled {

0 commit comments

Comments
 (0)
Please sign in to comment.