Skip to content

Commit a0659a6

Browse files
committed
Update skopeo pod for psa (#2844)
Signed-off-by: perdasilva <[email protected]> Upstream-repository: operator-lifecycle-manager Upstream-commit: d9908b4278db30855473ff9abfb4ea25255c26ab
1 parent c3b7a48 commit a0659a6

File tree

3 files changed

+137
-0
lines changed

3 files changed

+137
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package olm
2+
3+
import (
4+
"context"
5+
"fmt"
6+
7+
"github.com/operator-framework/api/pkg/operators/v1alpha1"
8+
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
9+
"github.com/sirupsen/logrus"
10+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
)
12+
13+
const labelSyncerLabelKey = ""
14+
15+
func NewCSVLabelSyncerLabeler(client operatorclient.ClientInterface, logger *logrus.Logger) *CSVLabelSyncerLabeler {
16+
return &CSVLabelSyncerLabeler{
17+
client: client,
18+
logger: logger,
19+
}
20+
}
21+
22+
type CSVLabelSyncerLabeler struct {
23+
client operatorclient.ClientInterface
24+
logger *logrus.Logger
25+
}
26+
27+
func (c *CSVLabelSyncerLabeler) OnAddOrUpdate(csv *v1alpha1.ClusterServiceVersion) error {
28+
// ignore copied csvs
29+
if csv.IsCopied() {
30+
return nil
31+
}
32+
33+
// ignore csv updates
34+
if csv.Status.LastTransitionTime != nil {
35+
return nil
36+
}
37+
38+
namespace, err := c.client.KubernetesInterface().CoreV1().Namespaces().Get(context.Background(), csv.GetNamespace(), metav1.GetOptions{})
39+
if err != nil {
40+
return fmt.Errorf("error getting csv namespace (%s) for label sync'er labeling", csv.GetNamespace())
41+
}
42+
43+
// add label sync'er label if it does not exist
44+
if _, ok := namespace.Labels[labelSyncerLabelKey]; !ok {
45+
nsCopy := namespace.DeepCopy()
46+
nsCopy.Labels[labelSyncerLabelKey] = "true"
47+
if _, err := c.client.KubernetesInterface().CoreV1().Namespaces().Update(context.Background(), namespace, metav1.UpdateOptions{}); err != nil {
48+
return fmt.Errorf("error updating csv namespace (%s) with label sync'er label", nsCopy.GetNamespace())
49+
}
50+
51+
if c.logger != nil {
52+
c.logger.Printf("[CSV LABEL] applied %s=true label to namespace %s", labelSyncerLabelKey, nsCopy.GetNamespace())
53+
}
54+
}
55+
56+
return nil
57+
}
58+
59+
func (c *CSVLabelSyncerLabeler) OnDelete(_ *v1alpha1.ClusterServiceVersion) error {
60+
return nil
61+
}

staging/operator-lifecycle-manager/test/e2e/skopeo.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"os/exec"
77

88
"github.com/operator-framework/operator-lifecycle-manager/pkg/lib/operatorclient"
9+
"k8s.io/utils/pointer"
910

1011
corev1 "k8s.io/api/core/v1"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -81,11 +82,25 @@ func createSkopeoPod(client operatorclient.ClientInterface, args []string, names
8182
Labels: map[string]string{"name": skopeo},
8283
},
8384
Spec: corev1.PodSpec{
85+
SecurityContext: &corev1.PodSecurityContext{
86+
SeccompProfile: &corev1.SeccompProfile{
87+
Type: corev1.SeccompProfileTypeRuntimeDefault,
88+
},
89+
},
8490
Containers: []corev1.Container{
8591
{
8692
Name: skopeo,
8793
Image: skopeoImage,
8894
Args: args,
95+
SecurityContext: &corev1.SecurityContext{
96+
ReadOnlyRootFilesystem: pointer.Bool(false),
97+
AllowPrivilegeEscalation: pointer.Bool(false),
98+
Capabilities: &corev1.Capabilities{
99+
Drop: []corev1.Capability{"ALL"},
100+
},
101+
RunAsNonRoot: pointer.Bool(true),
102+
RunAsUser: pointer.Int64(1001),
103+
},
89104
},
90105
},
91106
RestartPolicy: corev1.RestartPolicyNever,

vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/controller/operators/olm/downstream_csv_labeler.go

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

0 commit comments

Comments
 (0)