Skip to content

Commit 99b51e7

Browse files
authoredJun 9, 2022
Update CatalogSource Pod security context (#2782)
* Update ci artifact collection Signed-off-by: perdasilva <[email protected]> * Update e2e test images to use FBC Signed-off-by: perdasilva <[email protected]> * Update CatalogSource Pod security context Signed-off-by: perdasilva <[email protected]>
1 parent c610a3e commit 99b51e7

File tree

37 files changed

+2110
-350
lines changed

37 files changed

+2110
-350
lines changed
 

‎Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM quay.io/fedora/fedora:34-x86_64 as builder
22
LABEL stage=builder
33
WORKDIR /build
44

5-
# install dependencies and go 1.16
5+
# install dependencies and go 1.17
66

77
# copy just enough of the git repo to parse HEAD, used to record version in OLM binaries
88
RUN dnf update -y && dnf install -y bash make git mercurial jq wget && dnf upgrade -y

‎pkg/controller/registry/reconciler/reconciler.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,13 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name string, image string, saN
113113
pullPolicy = corev1.PullAlways
114114
}
115115

116+
// Security context
116117
readOnlyRootFilesystem := false
118+
allowPrivilegeEscalation := false
119+
runAsNonRoot := true
120+
121+
// See: https://github.com/operator-framework/operator-registry/blob/master/Dockerfile#L27
122+
runAsUser := int64(1001)
117123

118124
pod := &corev1.Pod{
119125
ObjectMeta: metav1.ObjectMeta{
@@ -167,12 +173,23 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name string, image string, saN
167173
},
168174
},
169175
SecurityContext: &corev1.SecurityContext{
170-
ReadOnlyRootFilesystem: &readOnlyRootFilesystem,
176+
ReadOnlyRootFilesystem: &readOnlyRootFilesystem,
177+
AllowPrivilegeEscalation: &allowPrivilegeEscalation,
178+
Capabilities: &corev1.Capabilities{
179+
Drop: []corev1.Capability{"ALL"},
180+
},
171181
},
172182
ImagePullPolicy: pullPolicy,
173183
TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError,
174184
},
175185
},
186+
SecurityContext: &corev1.PodSecurityContext{
187+
RunAsNonRoot: &runAsNonRoot,
188+
RunAsUser: &runAsUser,
189+
SeccompProfile: &corev1.SeccompProfile{
190+
Type: corev1.SeccompProfileTypeRuntimeDefault,
191+
},
192+
},
176193
NodeSelector: map[string]string{
177194
"kubernetes.io/os": "linux",
178195
},

‎pkg/controller/registry/reconciler/reconciler_test.go

+18-1
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,23 @@ func TestPullPolicy(t *testing.T) {
7979

8080
func TestPodContainerSecurityContext(t *testing.T) {
8181
expectedReadOnlyRootFilesystem := false
82+
expectedAllowPrivilegeEscalation := false
83+
expectedRunAsNonRoot := true
84+
expectedRunAsUser := int64(1001)
85+
8286
expectedContainerSecCtx := &corev1.SecurityContext{
83-
ReadOnlyRootFilesystem: &expectedReadOnlyRootFilesystem,
87+
ReadOnlyRootFilesystem: &expectedReadOnlyRootFilesystem,
88+
AllowPrivilegeEscalation: &expectedAllowPrivilegeEscalation,
89+
Capabilities: &corev1.Capabilities{
90+
Drop: []corev1.Capability{"ALL"},
91+
},
92+
}
93+
expectedPodSecCtx := &corev1.PodSecurityContext{
94+
RunAsNonRoot: &expectedRunAsNonRoot,
95+
RunAsUser: &expectedRunAsUser,
96+
SeccompProfile: &corev1.SeccompProfile{
97+
Type: corev1.SeccompProfileTypeRuntimeDefault,
98+
},
8499
}
85100

86101
catsrc := &v1alpha1.CatalogSource{
@@ -92,7 +107,9 @@ func TestPodContainerSecurityContext(t *testing.T) {
92107

93108
gotPod := Pod(catsrc, "hello", "busybox", "", map[string]string{}, map[string]string{}, int32(0), int32(0))
94109
gotContainerSecCtx := gotPod.Spec.Containers[0].SecurityContext
110+
gotPodSecCtx := gotPod.Spec.SecurityContext
95111
require.Equal(t, expectedContainerSecCtx, gotContainerSecCtx)
112+
require.Equal(t, expectedPodSecCtx, gotPodSecCtx)
96113
}
97114

98115
func TestPodSchedulingOverrides(t *testing.T) {

‎scripts/build_test_images.sh

+36-12
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,43 @@
11
#!/usr/bin/env bash
22

3+
set -e
4+
5+
CATALOG_DIR=./test/catalogs
6+
CATALOG_DOCKER=${CATALOG_DIR}/catalog.Dockerfile
7+
8+
# Given an image and a catalog name
9+
# This functions builds the image and pushes it to the repository
10+
function build_and_push() {
11+
IMG_NAME=$1
12+
CATALOG_NAME=$2
13+
docker build -t "${IMG_NAME}" -f "${CATALOG_DOCKER}" "${CATALOG_DIR}/${CATALOG_NAME}"
14+
docker push "${IMG_NAME}"
15+
}
16+
17+
# olmtest images
18+
319
# Busybox Operator Index Image
4-
docker build -t quay.io/olmtest/busybox-bundle:1.0.0 ./test/images/busybox-index/busybox/1.0.0
5-
docker build -t quay.io/olmtest/busybox-bundle:2.0.0 ./test/images/busybox-index/busybox/2.0.0
20+
catalogs=( 1.0.0 2.0.0 )
21+
for c in "${catalogs[@]}"; do
22+
build_and_push "quay.io/olmtest/busybox-dependencies-index:${c}-with-ListBundles-method" "busybox-${c}"
23+
done
24+
25+
# single bundle index
26+
catalogs=( pdb-v1 objects objects-upgrade-samename objects-upgrade-diffname )
27+
for c in "${catalogs[@]}"; do
28+
build_and_push "quay.io/olmtest/single-bundle-index:${c}" "single-bundle-index-${c}"
29+
done
630

7-
docker build -t quay.io/olmtest/busybox-dependency-bundle:1.0.0 ./test/images/busybox-index/busybox-dependency/1.0.0
8-
docker build -t quay.io/olmtest/busybox-dependency-bundle:2.0.0 ./test/images/busybox-index/busybox-dependency/2.0.0
31+
# catsrc-update-test catalogs
32+
catalogs=( old new related )
33+
for c in "${catalogs[@]}"; do
34+
build_and_push "quay.io/olmtest/catsrc-update-test:${c}" "catsrc-update-test-${c}"
35+
done
936

10-
docker push quay.io/olmtest/busybox-bundle:1.0.0
11-
docker push quay.io/olmtest/busybox-bundle:2.0.0
12-
docker push quay.io/olmtest/busybox-dependency-bundle:1.0.0
13-
docker push quay.io/olmtest/busybox-dependency-bundle:2.0.0
37+
# operator-framework images
1438

15-
opm index add --bundles quay.io/olmtest/busybox-dependency-bundle:1.0.0,quay.io/olmtest/busybox-bundle:1.0.0 --tag quay.io/olmtest/busybox-dependencies-index:1.0.0-with-ListBundles-method -c docker
16-
docker push quay.io/olmtest/busybox-dependencies-index:1.0.0-with-ListBundles-method
39+
# ci-index
40+
build_and_push quay.io/operator-framework/ci-index:latest "ci-index"
1741

18-
opm index add --bundles quay.io/olmtest/busybox-dependency-bundle:2.0.0,quay.io/olmtest/busybox-bundle:2.0.0 --tag quay.io/olmtest/busybox-dependencies-index:2.0.0-with-ListBundles-method --from-index quay.io/olmtest/busybox-dependencies-index:1.0.0-with-ListBundles-method -c docker
19-
docker push quay.io/olmtest/busybox-dependencies-index:2.0.0-with-ListBundles-method
42+
# webhook-operator-index
43+
build_and_push quay.io/operator-framework/webhook-operator-index:0.0.3 "webhook-operator-index-0.0.3"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
{
2+
"schema": "olm.package",
3+
"name": "busybox-dependency",
4+
"defaultChannel": "alpha"
5+
}
6+
{
7+
"schema": "olm.channel",
8+
"name": "alpha",
9+
"package": "busybox-dependency",
10+
"entries": [
11+
{
12+
"name": "busybox-dependency.v1.0.0"
13+
}
14+
]
15+
}
16+
{
17+
"schema": "olm.bundle",
18+
"name": "busybox-dependency.v1.0.0",
19+
"package": "busybox-dependency",
20+
"image": "quay.io/olmtest/busybox-dependency-bundle:1.0.0",
21+
"properties": [
22+
{
23+
"type": "olm.gvk",
24+
"value": {
25+
"group": "olm.test.io",
26+
"kind": "Foo",
27+
"version": "v1"
28+
}
29+
},
30+
{
31+
"type": "olm.package",
32+
"value": {
33+
"packageName": "busybox-dependency",
34+
"version": "1.0.0"
35+
}
36+
},
37+
{
38+
"type": "olm.bundle.object",
39+
"value": {
40+
"data": "eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImJ1c3lib3gtZGVwZW5kZW5jeS52MS4wLjAiLCJuYW1lc3BhY2UiOiJwbGFjZWhvbGRlciJ9LCJzcGVjIjp7ImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMiOnsib3duZWQiOlt7ImRlc2NyaXB0aW9uIjoiRm9vIHJlc291cmNlcyBmb3IgdGVzdGluZyBkZXBlbmRlbmNpZXMiLCJkaXNwbGF5TmFtZSI6IkZvbyIsImdyb3VwIjoib2xtLnRlc3QuaW8iLCJraW5kIjoiRm9vIiwibmFtZSI6ImZvb3Mub2xtLnRlc3QuaW8iLCJ2ZXJzaW9uIjoidjEifV19LCJkZXNjcmlwdGlvbiI6IkEgYnVzeWJveC1kZXBlbmRlbmN5IENTVi5cbiIsImRpc3BsYXlOYW1lIjoiYnVzeWJveC1kZXBlbmRlbmN5IiwiaW5zdGFsbCI6eyJzcGVjIjp7ImRlcGxveW1lbnRzIjpbeyJuYW1lIjoiYnVzeWJveC1kZXBlbmRlbmN5Iiwic3BlYyI6eyJyZXBsaWNhcyI6MSwic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwIjoiYnVzeWJveC1kZXBlbmRlbmN5In19LCJ0ZW1wbGF0ZSI6eyJtZXRhZGF0YSI6eyJsYWJlbHMiOnsiYXBwIjoiYnVzeWJveC1kZXBlbmRlbmN5In19LCJzcGVjIjp7ImNvbnRhaW5lcnMiOlt7ImNvbW1hbmQiOlsic2xlZXAiLCI5MDAwIl0sImltYWdlIjoiYnVzeWJveCIsIm5hbWUiOiJidXN5Ym94LWRlcGVuZGVuY3kifV19fX19XX0sInN0cmF0ZWd5IjoiZGVwbG95bWVudCJ9LCJpbnN0YWxsTW9kZXMiOlt7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6Ik93bk5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiU2luZ2xlTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJNdWx0aU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiQWxsTmFtZXNwYWNlcyJ9XSwibWF0dXJpdHkiOiJhbHBoYSIsInByb3ZpZGVyIjp7Im5hbWUiOiJSZWQgSGF0In0sInZlcnNpb24iOiIxLjAuMCJ9fQ=="
41+
}
42+
},
43+
{
44+
"type": "olm.bundle.object",
45+
"value": {
46+
"data": "eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImZvb3Mub2xtLnRlc3QuaW8ifSwic3BlYyI6eyJncm91cCI6Im9sbS50ZXN0LmlvIiwibmFtZXMiOnsia2luZCI6IkZvbyIsImxpc3RLaW5kIjoiRm9vTGlzdCIsInBsdXJhbCI6ImZvb3MiLCJzaW5ndWxhciI6ImZvbyJ9LCJzY29wZSI6Ik5hbWVzcGFjZWQiLCJ2ZXJzaW9ucyI6W3sibmFtZSI6InYxIiwic2NoZW1hIjp7Im9wZW5BUElWM1NjaGVtYSI6eyJ0eXBlIjoib2JqZWN0In19LCJzZXJ2ZWQiOnRydWUsInN0b3JhZ2UiOnRydWUsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX1dfX0="
47+
}
48+
}
49+
],
50+
"relatedImages": [
51+
{
52+
"name": "",
53+
"image": "busybox"
54+
},
55+
{
56+
"name": "",
57+
"image": "quay.io/olmtest/busybox-dependency-bundle:1.0.0"
58+
}
59+
]
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{
2+
"schema": "olm.package",
3+
"name": "busybox",
4+
"defaultChannel": "alpha"
5+
}
6+
{
7+
"schema": "olm.channel",
8+
"name": "alpha",
9+
"package": "busybox",
10+
"entries": [
11+
{
12+
"name": "busybox.v1.0.0"
13+
}
14+
]
15+
}
16+
{
17+
"schema": "olm.bundle",
18+
"name": "busybox.v1.0.0",
19+
"package": "busybox",
20+
"image": "quay.io/olmtest/busybox-bundle:1.0.0",
21+
"properties": [
22+
{
23+
"type": "olm.gvk.required",
24+
"value": {
25+
"group": "olm.test.io",
26+
"kind": "Foo",
27+
"version": "v1"
28+
}
29+
},
30+
{
31+
"type": "olm.package",
32+
"value": {
33+
"packageName": "busybox",
34+
"version": "1.0.0"
35+
}
36+
},
37+
{
38+
"type": "olm.bundle.object",
39+
"value": {
40+
"data": "eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImJ1c3lib3gudjEuMC4wIiwibmFtZXNwYWNlIjoicGxhY2Vob2xkZXIifSwic3BlYyI6eyJjdXN0b21yZXNvdXJjZWRlZmluaXRpb25zIjp7InJlcXVpcmVkIjpbeyJkZXNjcmlwdGlvbiI6IkZvbyByZXNvdXJjZXMgZm9yIHRlc3RpbmcgZGVwZW5kZW5jaWVzIiwiZGlzcGxheU5hbWUiOiJGb28iLCJraW5kIjoiRm9vIiwibmFtZSI6ImZvb3Mub2xtLnRlc3QuaW8iLCJ2ZXJzaW9uIjoidjEifV19LCJkZXNjcmlwdGlvbiI6IkEgYnVzeWJveCBDU1YuXG4iLCJkaXNwbGF5TmFtZSI6ImJ1c3lib3giLCJpbnN0YWxsIjp7InNwZWMiOnsiZGVwbG95bWVudHMiOlt7Im5hbWUiOiJidXN5Ym94Iiwic3BlYyI6eyJyZXBsaWNhcyI6MSwic2VsZWN0b3IiOnsibWF0Y2hMYWJlbHMiOnsiYXBwIjoiYnVzeWJveCJ9fSwidGVtcGxhdGUiOnsibWV0YWRhdGEiOnsibGFiZWxzIjp7ImFwcCI6ImJ1c3lib3gifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siY29tbWFuZCI6WyJzbGVlcCIsIjkwMDAiXSwiaW1hZ2UiOiJidXN5Ym94IiwibmFtZSI6ImJ1c3lib3gifV19fX19XX0sInN0cmF0ZWd5IjoiZGVwbG95bWVudCJ9LCJpbnN0YWxsTW9kZXMiOlt7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6Ik93bk5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiU2luZ2xlTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJNdWx0aU5hbWVzcGFjZSJ9LHsic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiQWxsTmFtZXNwYWNlcyJ9XSwibWF0dXJpdHkiOiJhbHBoYSIsInByb3ZpZGVyIjp7Im5hbWUiOiJSZWQgSGF0In0sInZlcnNpb24iOiIxLjAuMCJ9fQ=="
41+
}
42+
}
43+
],
44+
"relatedImages": [
45+
{
46+
"name": "",
47+
"image": "busybox"
48+
},
49+
{
50+
"name": "",
51+
"image": "quay.io/olmtest/busybox-bundle:1.0.0"
52+
}
53+
]
54+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
{
2+
"schema": "olm.package",
3+
"name": "busybox-dependency",
4+
"defaultChannel": "alpha"
5+
}
6+
{
7+
"schema": "olm.channel",
8+
"name": "alpha",
9+
"package": "busybox-dependency",
10+
"entries": [
11+
{
12+
"name": "busybox-dependency.v2.0.0",
13+
"skipRange": ">=0.0.0 <2.0.0"
14+
}
15+
]
16+
}
17+
{
18+
"schema": "olm.bundle",
19+
"name": "busybox-dependency.v2.0.0",
20+
"package": "busybox-dependency",
21+
"image": "quay.io/olmtest/busybox-dependency-bundle:2.0.0",
22+
"properties": [
23+
{
24+
"type": "olm.gvk",
25+
"value": {
26+
"group": "olm.test.io",
27+
"kind": "Foo",
28+
"version": "v1"
29+
}
30+
},
31+
{
32+
"type": "olm.package",
33+
"value": {
34+
"packageName": "busybox-dependency",
35+
"version": "2.0.0"
36+
}
37+
},
38+
{
39+
"type": "olm.bundle.object",
40+
"value": {
41+
"data": "eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzZT0wLjAuMCBcdTAwM2MyLjAuMCJ9LCJuYW1lIjoiYnVzeWJveC1kZXBlbmRlbmN5LnYyLjAuMCIsIm5hbWVzcGFjZSI6InBsYWNlaG9sZGVyIn0sInNwZWMiOnsiY3VzdG9tcmVzb3VyY2VkZWZpbml0aW9ucyI6eyJvd25lZCI6W3siZGVzY3JpcHRpb24iOiJGb28gcmVzb3VyY2VzIGZvciB0ZXN0aW5nIGRlcGVuZGVuY2llcyIsImRpc3BsYXlOYW1lIjoiRm9vIiwiZ3JvdXAiOiJvbG0udGVzdC5pbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy5vbG0udGVzdC5pbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRlc2NyaXB0aW9uIjoiQSBidXN5Ym94LWRlcGVuZGVuY3kgQ1NWLlxuIiwiZGlzcGxheU5hbWUiOiJidXN5Ym94LWRlcGVuZGVuY3kiLCJpbnN0YWxsIjp7InNwZWMiOnsiZGVwbG95bWVudHMiOlt7Im5hbWUiOiJidXN5Ym94LWRlcGVuZGVuY3kiLCJzcGVjIjp7InJlcGxpY2FzIjoxLCJzZWxlY3RvciI6eyJtYXRjaExhYmVscyI6eyJhcHAiOiJidXN5Ym94LWRlcGVuZGVuY3kifX0sInRlbXBsYXRlIjp7Im1ldGFkYXRhIjp7ImxhYmVscyI6eyJhcHAiOiJidXN5Ym94LWRlcGVuZGVuY3kifX0sInNwZWMiOnsiY29udGFpbmVycyI6W3siY29tbWFuZCI6WyJzbGVlcCIsIjkwMDAiXSwiaW1hZ2UiOiJidXN5Ym94IiwibmFtZSI6ImJ1c3lib3gtZGVwZW5kZW5jeSJ9XX19fX1dfSwic3RyYXRlZ3kiOiJkZXBsb3ltZW50In0sImluc3RhbGxNb2RlcyI6W3sic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiT3duTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJTaW5nbGVOYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJBbGxOYW1lc3BhY2VzIn1dLCJtYXR1cml0eSI6ImFscGhhIiwicHJvdmlkZXIiOnsibmFtZSI6IlJlZCBIYXQifSwidmVyc2lvbiI6IjIuMC4wIn19"
42+
}
43+
},
44+
{
45+
"type": "olm.bundle.object",
46+
"value": {
47+
"data": "eyJhcGlWZXJzaW9uIjoiYXBpZXh0ZW5zaW9ucy5rOHMuaW8vdjEiLCJraW5kIjoiQ3VzdG9tUmVzb3VyY2VEZWZpbml0aW9uIiwibWV0YWRhdGEiOnsibmFtZSI6ImZvb3Mub2xtLnRlc3QuaW8ifSwic3BlYyI6eyJncm91cCI6Im9sbS50ZXN0LmlvIiwibmFtZXMiOnsia2luZCI6IkZvbyIsImxpc3RLaW5kIjoiRm9vTGlzdCIsInBsdXJhbCI6ImZvb3MiLCJzaW5ndWxhciI6ImZvbyJ9LCJzY29wZSI6Ik5hbWVzcGFjZWQiLCJ2ZXJzaW9ucyI6W3sibmFtZSI6InYxIiwic2NoZW1hIjp7Im9wZW5BUElWM1NjaGVtYSI6eyJ0eXBlIjoib2JqZWN0In19LCJzZXJ2ZWQiOnRydWUsInN0b3JhZ2UiOnRydWUsInN1YnJlc291cmNlcyI6eyJzdGF0dXMiOnt9fX1dfX0="
48+
}
49+
}
50+
],
51+
"relatedImages": [
52+
{
53+
"name": "",
54+
"image": "busybox"
55+
},
56+
{
57+
"name": "",
58+
"image": "quay.io/olmtest/busybox-dependency-bundle:2.0.0"
59+
}
60+
]
61+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
{
2+
"schema": "olm.package",
3+
"name": "busybox",
4+
"defaultChannel": "alpha"
5+
}
6+
{
7+
"schema": "olm.channel",
8+
"name": "alpha",
9+
"package": "busybox",
10+
"entries": [
11+
{
12+
"name": "busybox.v2.0.0",
13+
"skipRange": ">=0.0.0 <2.0.0"
14+
}
15+
]
16+
}
17+
{
18+
"schema": "olm.bundle",
19+
"name": "busybox.v2.0.0",
20+
"package": "busybox",
21+
"image": "quay.io/olmtest/busybox-bundle:2.0.0",
22+
"properties": [
23+
{
24+
"type": "olm.gvk.required",
25+
"value": {
26+
"group": "olm.test.io",
27+
"kind": "Foo",
28+
"version": "v1"
29+
}
30+
},
31+
{
32+
"type": "olm.package",
33+
"value": {
34+
"packageName": "busybox",
35+
"version": "2.0.0"
36+
}
37+
},
38+
{
39+
"type": "olm.bundle.object",
40+
"value": {
41+
"data": "eyJhcGlWZXJzaW9uIjoib3BlcmF0b3JzLmNvcmVvcy5jb20vdjFhbHBoYTEiLCJraW5kIjoiQ2x1c3RlclNlcnZpY2VWZXJzaW9uIiwibWV0YWRhdGEiOnsiYW5ub3RhdGlvbnMiOnsib2xtLnNraXBSYW5nZSI6Ilx1MDAzZT0wLjAuMCBcdTAwM2MyLjAuMCJ9LCJuYW1lIjoiYnVzeWJveC52Mi4wLjAiLCJuYW1lc3BhY2UiOiJwbGFjZWhvbGRlciJ9LCJzcGVjIjp7ImN1c3RvbXJlc291cmNlZGVmaW5pdGlvbnMiOnsicmVxdWlyZWQiOlt7ImRlc2NyaXB0aW9uIjoiRm9vIHJlc291cmNlcyBmb3IgdGVzdGluZyBkZXBlbmRlbmNpZXMiLCJkaXNwbGF5TmFtZSI6IkZvbyIsImtpbmQiOiJGb28iLCJuYW1lIjoiZm9vcy5vbG0udGVzdC5pbyIsInZlcnNpb24iOiJ2MSJ9XX0sImRlc2NyaXB0aW9uIjoiQSBidXN5Ym94IENTVi5cbiIsImRpc3BsYXlOYW1lIjoiYnVzeWJveCIsImluc3RhbGwiOnsic3BlYyI6eyJkZXBsb3ltZW50cyI6W3sibmFtZSI6ImJ1c3lib3giLCJzcGVjIjp7InJlcGxpY2FzIjoxLCJzZWxlY3RvciI6eyJtYXRjaExhYmVscyI6eyJhcHAiOiJidXN5Ym94In19LCJ0ZW1wbGF0ZSI6eyJtZXRhZGF0YSI6eyJsYWJlbHMiOnsiYXBwIjoiYnVzeWJveCJ9fSwic3BlYyI6eyJjb250YWluZXJzIjpbeyJjb21tYW5kIjpbInNsZWVwIiwiOTAwMCJdLCJpbWFnZSI6ImJ1c3lib3giLCJuYW1lIjoiYnVzeWJveCJ9XX19fX1dfSwic3RyYXRlZ3kiOiJkZXBsb3ltZW50In0sImluc3RhbGxNb2RlcyI6W3sic3VwcG9ydGVkIjp0cnVlLCJ0eXBlIjoiT3duTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJTaW5nbGVOYW1lc3BhY2UifSx7InN1cHBvcnRlZCI6dHJ1ZSwidHlwZSI6Ik11bHRpTmFtZXNwYWNlIn0seyJzdXBwb3J0ZWQiOnRydWUsInR5cGUiOiJBbGxOYW1lc3BhY2VzIn1dLCJtYXR1cml0eSI6ImFscGhhIiwicHJvdmlkZXIiOnsibmFtZSI6IlJlZCBIYXQifSwidmVyc2lvbiI6IjIuMC4wIn19"
42+
}
43+
}
44+
],
45+
"relatedImages": [
46+
{
47+
"name": "",
48+
"image": "busybox"
49+
},
50+
{
51+
"name": "",
52+
"image": "quay.io/olmtest/busybox-bundle:2.0.0"
53+
}
54+
]
55+
}

‎test/catalogs/catalog.Dockerfile

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# The base image is expected to contain
2+
# /bin/opm (with a serve subcommand) and /bin/grpc_health_probe
3+
FROM quay.io/operator-framework/opm:latest
4+
5+
# Configure the entrypoint and command
6+
ENTRYPOINT ["/bin/opm"]
7+
CMD ["serve", "/catalog"]
8+
9+
# Copy declarative config root into image at /configs
10+
COPY . /catalog
11+
12+
# Set label for the location of the catalog root directory
13+
# in the image
14+
LABEL operators.operatorframework.io.index.configs.v1=/catalog

0 commit comments

Comments
 (0)