Skip to content

Commit 57f0d0b

Browse files
committed
ESO-49: Fix issues observed during integration tests
1 parent 9f9dba7 commit 57f0d0b

File tree

5 files changed

+36
-24
lines changed

5 files changed

+36
-24
lines changed

pkg/controller/deployments.go

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"k8s.io/apimachinery/pkg/types"
1313
"k8s.io/apimachinery/pkg/util/validation/field"
1414
"k8s.io/kubernetes/pkg/apis/core"
15+
"k8s.io/utils/ptr"
1516

1617
operatorv1alpha1 "github.com/openshift/external-secrets-operator/api/v1alpha1"
1718
"github.com/openshift/external-secrets-operator/pkg/operator/assets"
@@ -102,18 +103,13 @@ func (r *ExternalSecretsReconciler) createOrApplyDeploymentFromAsset(externalsec
102103

103104
func (r *ExternalSecretsReconciler) getDeploymentObject(assetName string, externalsecrets *operatorv1alpha1.ExternalSecrets, resourceLabels map[string]string) (*appsv1.Deployment, error) {
104105
deployment := decodeDeploymentObjBytes(assets.MustAsset(assetName))
106+
updateNamespace(deployment, externalsecrets)
105107
updateResourceLabels(deployment, resourceLabels)
106108
updatePodTemplateLabels(deployment, resourceLabels)
107109

108-
namespace := deployment.GetNamespace()
109-
if externalsecrets.Spec.ControllerConfig != nil && externalsecrets.Spec.ControllerConfig.Namespace != "" {
110-
namespace = externalsecrets.Spec.ControllerConfig.Namespace
111-
}
112-
updateNamespace(deployment, namespace)
113-
114110
image := os.Getenv(externalsecretsImageEnvVarName)
115111
if image == "" {
116-
return nil, fmt.Errorf("%s environment variable with externalsecrets image not set", externalsecretsImageEnvVarName)
112+
return nil, NewIrrecoverableError(fmt.Errorf("%s environment variable with externalsecrets image not set", externalsecretsImageEnvVarName), "failed to update image in %s deployment object", deployment.GetName())
117113
}
118114
logLevel := getLogLevel(externalsecrets.Spec.ExternalSecretsConfig)
119115

@@ -143,8 +139,29 @@ func (r *ExternalSecretsReconciler) getDeploymentObject(assetName string, extern
143139
}
144140

145141
// updatePodTemplateLabels sets labels on the pod template spec.
146-
func updatePodTemplateLabels(deployment *appsv1.Deployment, resourceLabels map[string]string) {
147-
deployment.Spec.Template.ObjectMeta.Labels = resourceLabels
142+
func updatePodTemplateLabels(deployment *appsv1.Deployment, labels map[string]string) {
143+
l := deployment.Spec.Template.ObjectMeta.GetLabels()
144+
for k, v := range labels {
145+
l[k] = v
146+
}
147+
deployment.Spec.Template.ObjectMeta.SetLabels(l)
148+
}
149+
150+
func updateContainerSecurityContext(container *corev1.Container) {
151+
container.SecurityContext = &corev1.SecurityContext{
152+
AllowPrivilegeEscalation: ptr.To(false),
153+
Capabilities: &corev1.Capabilities{
154+
Drop: []corev1.Capability{
155+
"ALL",
156+
},
157+
},
158+
ReadOnlyRootFilesystem: ptr.To(true),
159+
RunAsNonRoot: ptr.To(true),
160+
RunAsUser: nil,
161+
SeccompProfile: &corev1.SeccompProfile{
162+
Type: corev1.SeccompProfileTypeRuntimeDefault,
163+
},
164+
}
148165
}
149166

150167
// updateResourceRequirement sets validated resource requirements to all containers.
@@ -277,7 +294,7 @@ func updateContainerSpec(deployment *appsv1.Deployment, externalsecrets *operato
277294
namespace := getOperatingNamespace(externalsecrets)
278295
args := []string{
279296
"--concurrent=1",
280-
"--metrics-port=9402",
297+
"--metrics-addr=:8080",
281298
fmt.Sprintf("--loglevel=%s", logLevel),
282299
"--zap-time-encoding=epoch",
283300
"--enable-leader-election=true",
@@ -294,6 +311,7 @@ func updateContainerSpec(deployment *appsv1.Deployment, externalsecrets *operato
294311
if container.Name == "external-secrets" {
295312
deployment.Spec.Template.Spec.Containers[i].Args = args
296313
deployment.Spec.Template.Spec.Containers[i].Image = image
314+
updateContainerSecurityContext(&deployment.Spec.Template.Spec.Containers[i])
297315
break
298316
}
299317
}
@@ -317,6 +335,7 @@ func updateWebhookContainerSpec(deployment *appsv1.Deployment, image, logLevel s
317335
if container.Name == "webhook" {
318336
deployment.Spec.Template.Spec.Containers[i].Args = args
319337
deployment.Spec.Template.Spec.Containers[i].Image = image
338+
updateContainerSecurityContext(&deployment.Spec.Template.Spec.Containers[i])
320339
break
321340
}
322341
}
@@ -343,6 +362,7 @@ func updateCertControllerContainerSpec(deployment *appsv1.Deployment, image, log
343362
if container.Name == "cert-controller" {
344363
deployment.Spec.Template.Spec.Containers[i].Args = args
345364
deployment.Spec.Template.Spec.Containers[i].Image = image
365+
updateContainerSecurityContext(&deployment.Spec.Template.Spec.Containers[i])
346366
break
347367
}
348368
}

pkg/controller/deployments_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestCreateOrApplyDeployments(t *testing.T) {
5252
})
5353
},
5454
skipEnvVar: true,
55-
wantErr: `RELATED_IMAGE_EXTERNAL_SECRETS environment variable with externalsecrets image not set`,
55+
wantErr: `failed to update image in external-secrets deployment object: RELATED_IMAGE_EXTERNAL_SECRETS environment variable with externalsecrets image not set`,
5656
},
5757
{
5858
name: "deployment reconciliation fails while checking if exists",

pkg/controller/service_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func TestCreateOrApplyServices(t *testing.T) {
6262
},
6363
}
6464
},
65-
wantErr: `failed to create service /bitwarden-sdk-server: test client error`,
65+
wantErr: `failed to create service external-secrets/bitwarden-sdk-server: test client error`,
6666
},
6767

6868
{

pkg/controller/serviceaccounts.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,7 @@ func (r *ExternalSecretsReconciler) createOrApplyServiceAccounts(externalsecrets
3939
}
4040

4141
desired := decodeServiceAccountObjBytes(assets.MustAsset(serviceAccount.assetName))
42-
namespace := desired.GetNamespace()
43-
if externalsecrets.Spec.ControllerConfig != nil && externalsecrets.Spec.ControllerConfig.Namespace != "" {
44-
namespace = externalsecrets.Spec.ControllerConfig.Namespace
45-
}
46-
updateNamespace(desired, namespace)
42+
updateNamespace(desired, externalsecrets)
4743
updateResourceLabels(desired, resourceLabels)
4844

4945
serviceAccountName := fmt.Sprintf("%s/%s", desired.GetNamespace(), desired.GetName())

pkg/controller/services.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (r *ExternalSecretsReconciler) createOrApplyServices(externalsecrets *opera
3030
if !service.condition {
3131
continue
3232
}
33-
if err := r.createOrApplyServiceFromAsset(service.assetName, externalsecrets, resourceLabels, externalsecretsCreateRecon); err != nil {
33+
if err := r.createOrApplyServiceFromAsset(externalsecrets, service.assetName, resourceLabels, externalsecretsCreateRecon); err != nil {
3434
return err
3535
}
3636
}
@@ -39,13 +39,9 @@ func (r *ExternalSecretsReconciler) createOrApplyServices(externalsecrets *opera
3939
}
4040

4141
// createOrApplyServiceFromAsset decodes a Service YAML asset and ensures it exists in the cluster.
42-
func (r *ExternalSecretsReconciler) createOrApplyServiceFromAsset(assetName string, externalsecrets *operatorv1alpha1.ExternalSecrets, resourceLabels map[string]string, externalsecretsCreateRecon bool) error {
42+
func (r *ExternalSecretsReconciler) createOrApplyServiceFromAsset(externalsecrets *operatorv1alpha1.ExternalSecrets, assetName string, resourceLabels map[string]string, externalsecretsCreateRecon bool) error {
4343
service := decodeServiceObjBytes(assets.MustAsset(assetName))
44-
namespace := service.GetNamespace()
45-
if externalsecrets.Spec.ControllerConfig != nil && externalsecrets.Spec.ControllerConfig.Namespace != "" {
46-
namespace = externalsecrets.Spec.ControllerConfig.Namespace
47-
}
48-
updateNamespace(service, namespace)
44+
updateNamespace(service, externalsecrets)
4945
updateResourceLabels(service, resourceLabels)
5046

5147
serviceName := fmt.Sprintf("%s/%s", service.GetNamespace(), service.GetName())

0 commit comments

Comments
 (0)