Skip to content
This repository was archived by the owner on Dec 11, 2023. It is now read-only.

Commit 032c702

Browse files
author
odacremolbap
committed
pull policy option
1 parent eca52dd commit 032c702

File tree

7 files changed

+52
-9
lines changed

7 files changed

+52
-9
lines changed

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,10 +144,11 @@ To clean up the getting started guide, delete each of the created assets:
144144

145145
```console
146146
kubectl delete -f \
147-
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/trigger.yaml\
148-
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/display-target.yaml\
149-
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/display-deadlettersink.yaml\
150-
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/broker.yaml\
147+
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/trigger.yaml,\
148+
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/display-target.yaml,\
149+
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/display-deadlettersink.yaml,\
150+
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/broker.yaml,\
151+
https://raw.githubusercontent.com/triggermesh/triggermesh-core/main/docs/getting-started/curl.yaml
151152
```
152153

153154
## Installation

config/500-core-controller.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ spec:
7070
value: redis/redis-stack-server:latest
7171
- name: REDISBROKER_BROKER_IMAGE
7272
value: gcr.io/triggermesh/redis-broker:dev
73+
# Pull policy for broker, REMOVE for production environments
74+
- name: REDISBROKER_BROKER_IMAGE_PULL_POLICY
75+
value: Always
7376

7477
securityContext:
7578
runAsNonRoot: true

pkg/reconciler/redisbroker/controller.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ import (
3535
// github.com/kelseyhightower/envconfig. If this configuration cannot be extracted, then
3636
// NewController will panic.
3737
type envConfig struct {
38-
RedisImage string `envconfig:"REDISBROKER_REDIS_IMAGE" required:"true"`
39-
BrokerImage string `envconfig:"REDISBROKER_BROKER_IMAGE" required:"true"`
38+
RedisImage string `envconfig:"REDISBROKER_REDIS_IMAGE" required:"true"`
39+
BrokerImage string `envconfig:"REDISBROKER_BROKER_IMAGE" required:"true"`
40+
BrokerImagePullPolicy string `envconfig:"REDISBROKER_BROKER_IMAGE_PULL_POLICY" default:"IfNotPresent"`
4041
}
4142

4243
// NewController initializes the controller and is called by the generated code
@@ -79,6 +80,7 @@ func NewController(
7980
serviceLister: serviceInformer.Lister(),
8081
endpointsLister: endpointsInformer.Lister(),
8182
image: env.BrokerImage,
83+
pullPolicy: corev1.PullPolicy(env.BrokerImagePullPolicy),
8284
},
8385
}
8486

pkg/reconciler/redisbroker/reconcile_broker.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ type brokerReconciler struct {
4242
serviceLister corev1listers.ServiceLister
4343
endpointsLister corev1listers.EndpointsLister
4444
image string
45+
pullPolicy corev1.PullPolicy
4546
}
4647

4748
func (r *brokerReconciler) reconcile(ctx context.Context, rb *eventingv1alpha1.RedisBroker, redis *corev1.Service, secret *corev1.Secret) (*appsv1.Deployment, *corev1.Service, error) {
@@ -63,7 +64,7 @@ func (r *brokerReconciler) reconcile(ctx context.Context, rb *eventingv1alpha1.R
6364
return d, svc, nil
6465
}
6566

66-
func buildBrokerDeployment(rb *eventingv1alpha1.RedisBroker, redis *corev1.Service, secret *corev1.Secret, image string) *appsv1.Deployment {
67+
func buildBrokerDeployment(rb *eventingv1alpha1.RedisBroker, redis *corev1.Service, secret *corev1.Secret, image string, pullPolicy corev1.PullPolicy) *appsv1.Deployment {
6768

6869
v := resources.NewVolume("config",
6970
resources.VolumeFromSecretOption(secret.Name, configSecretKey, configSecretFile))
@@ -82,6 +83,7 @@ func buildBrokerDeployment(rb *eventingv1alpha1.RedisBroker, redis *corev1.Servi
8283
resources.ContainerAddVolumeMount(vm),
8384
resources.ContainerAddEnvFromValue("BROKER_CONFIG_PATH", configMountedPath),
8485
resources.ContainerAddEnvFromValue("REDIS_STREAM", stream),
86+
resources.ContainerWithImagePullPolicy(pullPolicy),
8587
}
8688

8789
if rb.Spec.Redis != nil && rb.Spec.Redis.StreamMaxLen != nil && *rb.Spec.Redis.StreamMaxLen != 0 {
@@ -131,7 +133,7 @@ func buildBrokerDeployment(rb *eventingv1alpha1.RedisBroker, redis *corev1.Servi
131133
}
132134

133135
func (r *brokerReconciler) reconcileDeployment(ctx context.Context, rb *eventingv1alpha1.RedisBroker, redis *corev1.Service, secret *corev1.Secret) (*appsv1.Deployment, error) {
134-
desired := buildBrokerDeployment(rb, redis, secret, r.image)
136+
desired := buildBrokerDeployment(rb, redis, secret, r.image, r.pullPolicy)
135137
current, err := r.deploymentLister.Deployments(desired.Namespace).Get(desired.Name)
136138
switch {
137139
case err == nil:

pkg/reconciler/redisbroker/reconcile_secret.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ func (r *secretReconciler) buildConfigSecret(ctx context.Context, rb *eventingv1
120120
} else {
121121
// Configure empty URL so that all requests go to DLS when the target is
122122
// not ready.
123-
targetURI = "http://"
123+
targetURI = ""
124124
}
125125

126126
do := &broker.DeliveryOptions{}

pkg/reconciler/resources/container.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,9 @@ func ContainerAddVolumeMount(vm *corev1.VolumeMount) ContainerOption {
8686
c.VolumeMounts = append(c.VolumeMounts, *vm)
8787
}
8888
}
89+
90+
func ContainerWithImagePullPolicy(policy corev1.PullPolicy) ContainerOption {
91+
return func(c *corev1.Container) {
92+
c.ImagePullPolicy = policy
93+
}
94+
}

pkg/reconciler/resources/container_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,35 @@ func TestNewContainer(t *testing.T) {
7777
},
7878
},
7979
}},
80+
"with env from secret": {
81+
options: []ContainerOption{
82+
ContainerAddEnvVarFromSecret("test-env", "test-secret", "test-key"),
83+
},
84+
expected: corev1.Container{
85+
Name: tName,
86+
Image: tImage,
87+
Env: []corev1.EnvVar{
88+
{
89+
Name: "test-env",
90+
ValueFrom: &corev1.EnvVarSource{
91+
SecretKeyRef: &corev1.SecretKeySelector{
92+
LocalObjectReference: corev1.LocalObjectReference{
93+
Name: "test-secret",
94+
},
95+
Key: "test-key",
96+
},
97+
},
98+
}},
99+
}},
100+
"with image pull policy": {
101+
options: []ContainerOption{
102+
ContainerWithImagePullPolicy(corev1.PullAlways),
103+
},
104+
expected: corev1.Container{
105+
Name: tName,
106+
Image: tImage,
107+
ImagePullPolicy: corev1.PullAlways,
108+
}},
80109
}
81110

82111
for name, tc := range testCases {

0 commit comments

Comments
 (0)