Skip to content

Commit 689410c

Browse files
author
bowenislandsong
committedMay 7, 2020
Make default channel optional
This commit leaves default channel blank if not specified or is not contained in channels. This affects the `annotations.yaml` and make it "" for default channels. This will not affect index.db as the code to choose a channel to be the default still lives there. It should remain there since OLM uses that value.
1 parent 58f1aa7 commit 689410c

32 files changed

+2698
-42
lines changed
 

‎pkg/lib/bundle/generate.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,10 @@ func ValidateChannelDefault(channels, channelDefault string) (string, error) {
301301
var chanErr error
302302
channelList := strings.Split(channels, ",")
303303

304+
if containsString(channelList, "") {
305+
return chanDefault, fmt.Errorf("invalid channels are provided: %s", channels)
306+
}
307+
304308
if channelDefault != "" {
305309
for _, channel := range channelList {
306310
if channel == channelDefault {
@@ -312,15 +316,8 @@ func ValidateChannelDefault(channels, channelDefault string) (string, error) {
312316
chanDefault = channelList[0]
313317
chanErr = fmt.Errorf(`The channel list "%s" doesn't contain channelDefault "%s"`, channels, channelDefault)
314318
}
315-
} else {
316-
chanDefault = channelList[0]
317-
}
318-
319-
if chanDefault != "" {
320-
return chanDefault, chanErr
321-
} else {
322-
return chanDefault, fmt.Errorf("Invalid channels is provied: %s", channels)
323319
}
320+
return chanDefault, chanErr
324321
}
325322

326323
// GenerateAnnotations builds annotations.yaml with mediatype, manifests &

‎pkg/lib/bundle/generate_test.go

+22-10
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func TestValidateChannelDefault(t *testing.T) {
5959
{
6060
"test5,test6",
6161
"",
62-
"test5",
62+
"",
6363
"",
6464
},
6565
{
@@ -72,7 +72,7 @@ func TestValidateChannelDefault(t *testing.T) {
7272
",",
7373
"",
7474
"",
75-
`Invalid channels is provied: ,`,
75+
`invalid channels are provided: ,`,
7676
},
7777
}
7878

@@ -207,7 +207,7 @@ func TestGenerateDockerfileFunc(t *testing.T) {
207207
"LABEL operators.operatorframework.io.bundle.metadata.v1=%s\n"+
208208
"LABEL operators.operatorframework.io.bundle.package.v1=test4\n"+
209209
"LABEL operators.operatorframework.io.bundle.channels.v1=test5\n"+
210-
"LABEL operators.operatorframework.io.bundle.channel.default.v1=test5\n\n"+
210+
"LABEL operators.operatorframework.io.bundle.channel.default.v1=\n\n"+
211211
"COPY test2 /manifests/\n"+
212212
"COPY metadata /metadata/\n", MetadataDir)
213213

@@ -283,11 +283,23 @@ func TestCopyYamlOutput_NestedCopy(t *testing.T) {
283283
require.NoError(t, err)
284284
}
285285

286-
func TestGenerateFunc(t *testing.T){
287-
etcdPkgPath:="./testdata/etcd"
288-
outputPath :="./testdata/tmp_output"
286+
func TestGenerateFunc(t *testing.T) {
287+
etcdPkgPath := "./testdata/etcd"
288+
outputPath := "./testdata/tmp_output"
289289
defer os.RemoveAll(outputPath)
290-
err:=GenerateFunc(filepath.Join(etcdPkgPath,"0.6.1"),outputPath,"","","",true)
291-
require.NoError(t,err)
292-
os.Remove(filepath.Join("./",DockerFile))
293-
}
290+
err := GenerateFunc(filepath.Join(etcdPkgPath, "0.6.1"), outputPath, "", "", "", true)
291+
require.NoError(t, err)
292+
os.Remove(filepath.Join("./", DockerFile))
293+
294+
output := fmt.Sprintf("annotations:\n" +
295+
" operators.operatorframework.io.bundle.channel.default.v1: \"\"\n" +
296+
" operators.operatorframework.io.bundle.channels.v1: beta\n" +
297+
" operators.operatorframework.io.bundle.manifests.v1: manifests/\n" +
298+
" operators.operatorframework.io.bundle.mediatype.v1: registry+v1\n" +
299+
" operators.operatorframework.io.bundle.metadata.v1: metadata/\n" +
300+
" operators.operatorframework.io.bundle.package.v1: etcd\n")
301+
outputAnnotationsFile := filepath.Join(outputPath, "metadata/", "annotations.yaml")
302+
annotationsBlob, err := ioutil.ReadFile(outputAnnotationsFile)
303+
require.NoError(t, err)
304+
require.EqualValues(t, output, string(annotationsBlob))
305+
}

‎test/e2e/opm_test.go

+52-24
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package e2e_test
33
import (
44
"context"
55
"database/sql"
6-
"github.com/operator-framework/operator-registry/pkg/containertools"
76
"io/ioutil"
87
"os"
98
"os/exec"
@@ -15,6 +14,7 @@ import (
1514
"github.com/sirupsen/logrus"
1615
"k8s.io/apimachinery/pkg/util/rand"
1716

17+
"github.com/operator-framework/operator-registry/pkg/containertools"
1818
"github.com/operator-framework/operator-registry/pkg/lib/bundle"
1919
"github.com/operator-framework/operator-registry/pkg/lib/indexer"
2020
"github.com/operator-framework/operator-registry/pkg/sqlite"
@@ -68,26 +68,12 @@ func inTemporaryBuildContext(f func() error) (rerr error) {
6868
return f()
6969
}
7070

71-
func buildBundlesWith(containerTool string) error {
72-
for tag, path := range map[string]string{
73-
bundleTag1: bundlePath1,
74-
bundleTag2: bundlePath2,
75-
bundleTag3: bundlePath3,
76-
} {
77-
if err := inTemporaryBuildContext(func() error {
78-
return bundle.BuildFunc(path, "", bundleImage+":"+tag, containerTool, packageName, channels, defaultChannel, false)
79-
}); err != nil {
80-
return err
81-
}
71+
func buildIndexWith(containerTool, indexImage, bundleImage string, bundleTags []string) error {
72+
bundles := make([]string, len(bundleTags))
73+
for _, tag := range bundleTags {
74+
bundles = append(bundles, bundleImage+":"+tag)
8275
}
83-
return nil
84-
}
8576

86-
func buildIndexWith(containerTool string) error {
87-
bundles := []string{
88-
bundleImage + ":" + bundleTag1,
89-
bundleImage + ":" + bundleTag2,
90-
}
9177
logger := logrus.WithFields(logrus.Fields{"bundles": bundles})
9278
indexAdder := indexer.NewIndexAdder(containertools.NewContainerTool(containerTool, containertools.NoneTool), containertools.NewContainerTool(containerTool, containertools.NoneTool), logger)
9379

@@ -96,7 +82,7 @@ func buildIndexWith(containerTool string) error {
9682
FromIndex: "",
9783
BinarySourceImage: "",
9884
OutDockerfile: "",
99-
Tag: indexImage1,
85+
Tag: indexImage,
10086
Bundles: bundles,
10187
Permissive: false,
10288
}
@@ -213,15 +199,23 @@ var _ = Describe("opm", func() {
213199

214200
It("builds and manipulates bundle and index images", func() {
215201
By("building bundles")
216-
err := buildBundlesWith(containerTool)
217-
Expect(err).NotTo(HaveOccurred())
202+
for tag, path := range map[string]string{
203+
bundleTag1: bundlePath1,
204+
bundleTag2: bundlePath2,
205+
bundleTag3: bundlePath3,
206+
} {
207+
err := inTemporaryBuildContext(func() error {
208+
return bundle.BuildFunc(path, "", bundleImage+":"+tag, containerTool, packageName, channels, defaultChannel, false)
209+
})
210+
Expect(err).NotTo(HaveOccurred())
211+
}
218212

219213
By("pushing bundles")
220-
err = pushBundles(containerTool)
214+
err := pushBundles(containerTool)
221215
Expect(err).NotTo(HaveOccurred())
222216

223217
By("building an index")
224-
err = buildIndexWith(containerTool)
218+
err = buildIndexWith(containerTool, indexImage1, bundleImage, []string{bundleTag1, bundleTag2})
225219
Expect(err).NotTo(HaveOccurred())
226220

227221
By("pushing an index")
@@ -264,6 +258,40 @@ var _ = Describe("opm", func() {
264258
err = initialize()
265259
Expect(err).NotTo(HaveOccurred())
266260
})
261+
262+
It("build bundles and index from inference", func() {
263+
264+
bundlePaths := []string{"./testdata/aqua/0.0.1", "./testdata/aqua/0.0.2", "./testdata/aqua/1.0.0",
265+
"./testdata/aqua/1.0.1"}
266+
267+
bundleTags := func() (tags []string) {
268+
for range bundlePaths {
269+
tags = append(tags, rand.String(6))
270+
}
271+
return
272+
}()
273+
274+
indexImage := "quay.io/olmtest/e2e-index:" + rand.String(6)
275+
276+
By("building bundles")
277+
for i := range bundlePaths {
278+
td, err := ioutil.TempDir("", "opm-")
279+
Expect(err).NotTo(HaveOccurred())
280+
281+
err = bundle.BuildFunc(bundlePaths[i], td, bundleImage+":"+bundleTags[i], containerTool, "", "", "", false)
282+
Expect(err).NotTo(HaveOccurred())
283+
}
284+
285+
By("pushing bundles")
286+
for _, tag := range bundleTags {
287+
err := pushWith(containerTool, bundleImage+":"+tag)
288+
Expect(err).NotTo(HaveOccurred())
289+
}
290+
291+
By("building an index")
292+
err := buildIndexWith(containerTool, indexImage, bundleImage, bundleTags)
293+
Expect(err).NotTo(HaveOccurred())
294+
})
267295
}
268296

269297
Context("using docker", func() {

‎test/e2e/testdata/aqua/0.0.1/aqua-operator.v0.0.1.clusterserviceversion.yaml

+452
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquacsps.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .metadata.creationTimestamp
8+
description: Aqua Csp Age
9+
name: Age
10+
type: date
11+
- JSONPath: .status.state
12+
description: Aqua Csp status
13+
name: Status
14+
type: string
15+
group: operator.aquasec.com
16+
names:
17+
kind: AquaCsp
18+
listKind: AquaCspList
19+
plural: aquacsps
20+
shortNames:
21+
- csp
22+
- aqua-csp
23+
singular: aquacsp
24+
scope: Namespaced
25+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquadatabases.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Database Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Database status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaDatabase
26+
listKind: AquaDatabaseList
27+
plural: aquadatabases
28+
shortNames:
29+
- aquadb
30+
- aqua-db
31+
- aqua-database
32+
singular: aquadatabase
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaenforcers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Enforcer Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Enforcer status
17+
name: Status
18+
type: string
19+
group: operator.aquasec.com
20+
names:
21+
kind: AquaEnforcer
22+
listKind: AquaEnforcerList
23+
plural: aquaenforcers
24+
shortNames:
25+
- enforcers
26+
- aqua-agent
27+
- aqua-enforcer
28+
- aquaenf
29+
singular: aquaenforcer
30+
scope: Namespaced
31+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquagateways.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Gateway Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Gateway status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaGateway
26+
listKind: AquaGatewayList
27+
plural: aquagateways
28+
shortNames:
29+
- aquagw
30+
- aqua-gateway
31+
- aqua-gw
32+
singular: aquagateway
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquascanners.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Scanner Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Scanner status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaScanner
26+
listKind: AquaScannerList
27+
plural: aquascanners
28+
shortNames:
29+
- aquasc
30+
- aqua-scan
31+
- aqua-scanner
32+
singular: aquascanner
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaservers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Server Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Server status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaServer
26+
listKind: AquaServerList
27+
plural: aquaservers
28+
shortNames:
29+
- aquasr
30+
- aqua-server
31+
- aqua-servers
32+
singular: aquaserver
33+
scope: Namespaced
34+
version: v1alpha1

‎test/e2e/testdata/aqua/0.0.2/aqua-operator.v0.0.2.clusterserviceversion.yaml

+453
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquacsps.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .metadata.creationTimestamp
8+
description: Aqua Csp Age
9+
name: Age
10+
type: date
11+
- JSONPath: .status.state
12+
description: Aqua Csp status
13+
name: Status
14+
type: string
15+
group: operator.aquasec.com
16+
names:
17+
kind: AquaCsp
18+
listKind: AquaCspList
19+
plural: aquacsps
20+
shortNames:
21+
- csp
22+
- aqua-csp
23+
singular: aquacsp
24+
scope: Namespaced
25+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquadatabases.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Database Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Database status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaDatabase
26+
listKind: AquaDatabaseList
27+
plural: aquadatabases
28+
shortNames:
29+
- aquadb
30+
- aqua-db
31+
- aqua-database
32+
singular: aquadatabase
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaenforcers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Enforcer Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Enforcer status
17+
name: Status
18+
type: string
19+
group: operator.aquasec.com
20+
names:
21+
kind: AquaEnforcer
22+
listKind: AquaEnforcerList
23+
plural: aquaenforcers
24+
shortNames:
25+
- enforcers
26+
- aqua-agent
27+
- aqua-enforcer
28+
- aquaenf
29+
singular: aquaenforcer
30+
scope: Namespaced
31+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquagateways.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Gateway Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Gateway status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaGateway
26+
listKind: AquaGatewayList
27+
plural: aquagateways
28+
shortNames:
29+
- aquagw
30+
- aqua-gateway
31+
- aqua-gw
32+
singular: aquagateway
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquascanners.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Scanner Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Scanner status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaScanner
26+
listKind: AquaScannerList
27+
plural: aquascanners
28+
shortNames:
29+
- aquasc
30+
- aqua-scan
31+
- aqua-scanner
32+
singular: aquascanner
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaservers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Server Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Server status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaServer
26+
listKind: AquaServerList
27+
plural: aquaservers
28+
shortNames:
29+
- aquasr
30+
- aqua-server
31+
- aqua-servers
32+
singular: aquaserver
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,381 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
name: aqua-operator.v1.0.0
5+
namespace: placeholder
6+
annotations:
7+
capabilities: Basic Install
8+
categories: Security
9+
description: The Aqua Security Operator runs within a Openshift cluster and provides a means to deploy and manage Aqua Security cluster and components.
10+
certified: "false"
11+
containerImage: aquasec/aqua-operator:1.0.0
12+
olm.skipRange: '<0.0.2'
13+
createdAt: 2019-12-30T08:00:00Z
14+
support: Aqua Security, Inc.
15+
repository: https://github.com/aquasecurity/aqua-operator
16+
alm-examples: |-
17+
[
18+
{
19+
"apiVersion": "operator.aquasec.com/v1alpha1",
20+
"kind": "AquaCsp",
21+
"metadata": {
22+
"name": "aqua"
23+
},
24+
"spec": {
25+
"infra": {
26+
"platform": "openshift",
27+
"requirements": true
28+
},
29+
"registry": {
30+
"url": "registry.aquasec.com",
31+
"username": "example@gmail.com",
32+
"password": "",
33+
"email": "example@gmail.com"
34+
},
35+
"database": {
36+
"replicas": 1,
37+
"service": "ClusterIP"
38+
},
39+
"gateway": {
40+
"replicas": 1,
41+
"service": "ClusterIP"
42+
},
43+
"server": {
44+
"replicas": 1,
45+
"service": "LoadBalancer"
46+
},
47+
"adminPassword": "Password1",
48+
"licenseToken": null
49+
}
50+
},
51+
{
52+
"apiVersion": "operator.aquasec.com/v1alpha1",
53+
"kind": "AquaDatabase",
54+
"metadata": {
55+
"name": "aqua"
56+
},
57+
"spec": {
58+
"infra": {
59+
"serviceAccount": "aqua-sa",
60+
"version": "4.5",
61+
"platform": "openshift"
62+
},
63+
"deploy": {
64+
"replicas": 1,
65+
"service": "ClusterIP"
66+
},
67+
"diskSize": 10
68+
}
69+
},
70+
{
71+
"apiVersion": "operator.aquasec.com/v1alpha1",
72+
"kind": "AquaEnforcer",
73+
"metadata": {
74+
"name": "aqua"
75+
},
76+
"spec": {
77+
"infra": {
78+
"serviceAccount": "aqua-sa",
79+
"version": "4.5"
80+
},
81+
"gateway": {
82+
"host": "aqua-gateway-svc",
83+
"port": 3622
84+
},
85+
"token": "token"
86+
}
87+
},
88+
{
89+
"apiVersion": "operator.aquasec.com/v1alpha1",
90+
"kind": "AquaGateway",
91+
"metadata": {
92+
"name": "aqua"
93+
},
94+
"spec": {
95+
"infra": {
96+
"serviceAccount": "aqua-sa",
97+
"version": "4.5"
98+
},
99+
"common": {
100+
"databaseSecret": {
101+
"name": "aqua-aqua-db",
102+
"key": "password"
103+
}
104+
},
105+
"externalDb": {
106+
"host": "aqua-db",
107+
"port": 5432,
108+
"username": "postgres"
109+
},
110+
"deploy": {
111+
"replicas": 1,
112+
"service": "ClusterIP"
113+
}
114+
}
115+
},
116+
{
117+
"apiVersion": "operator.aquasec.com/v1alpha1",
118+
"kind": "AquaScanner",
119+
"metadata": {
120+
"name": "aqua"
121+
},
122+
"spec": {
123+
"infra": {
124+
"serviceAccount": "aqua-sa",
125+
"version": "4.5"
126+
},
127+
"deploy": {
128+
"replicas": 1
129+
},
130+
"login": {
131+
"username": "administrator",
132+
"password": "Password1",
133+
"host": "http://aqua-server:8080"
134+
}
135+
}
136+
},
137+
{
138+
"apiVersion": "operator.aquasec.com/v1alpha1",
139+
"kind": "AquaServer",
140+
"metadata": {
141+
"name": "aqua"
142+
},
143+
"spec": {
144+
"infra": {
145+
"serviceAccount": "aqua-sa",
146+
"version": "4.5"
147+
},
148+
"common": {
149+
"databaseSecret": {
150+
"name": "aqua-aqua-db",
151+
"key": "password"
152+
}
153+
},
154+
"externalDb": {
155+
"host": "aqua-db",
156+
"port": 5432,
157+
"username": "postgres"
158+
},
159+
"deploy": {
160+
"replicas": 1,
161+
"service": "LoadBalancer"
162+
},
163+
"adminPassword": "Password1",
164+
"licenseToken": null
165+
}
166+
}
167+
]
168+
spec:
169+
displayName: Aqua Security Operator
170+
version: 1.0.0
171+
description: |-
172+
The Aqua Security Operator runs within an OpenShift cluster, and provides a means to deploy and manage the Aqua Security cluster and components
173+
* Server (sometimes called “console”)
174+
* Database (not recommended for production environments)
175+
* Gateway
176+
* Enforcer (sometimes called “agent”)
177+
* Scanner
178+
* CSP (package containing the Server, Database, and Gateway - not supported, and not for production environments)
179+
Use the aqua-operator to
180+
* Deploy Aqua Security components on OpenShift
181+
* Scale up Aqua Security components with extra replicas
182+
* Assign metadata tags to Aqua Security components
183+
* Automatically scale the number of Aqua scanners according to the number of images in the scan queue
184+
## Before You Begin Using the Operator CRDs
185+
Obtain access to the Aqua registry - https://www.aquasec.com/about-us/contact-us/
186+
You need to create
187+
* A secret for the Docker registry
188+
* A secret for the database
189+
```bash
190+
oc create secret docker-registry aqua-registry --docker-server=registry.aquasec.com --docker-username=<AQUA_USERNAME> --docker-password=<AQUA_PASSWORD> --docker-email=<user email> -n aqua
191+
oc create secret generic aqua-database-password --from-literal=db-password=<password> -n aqua
192+
oc secrets add aqua-sa aqua-registry --for=pull -n aqua
193+
```
194+
## After the Installation
195+
Once the operator is installed in the cluster, you now can use the CRDs to install the Aqua cluster and components.
196+
keywords: ['aqua-security', 'scanning', 'security', 'runtime-security']
197+
maintainers:
198+
- email: nissim.bitan@aquasec.com
199+
name: Nissim Bitan, Aqua Security
200+
provider:
201+
name: Aqua Security, Inc.
202+
maturity: alpha
203+
labels:
204+
name: aqua-operator
205+
selector:
206+
matchLabels:
207+
name: aqua-operator
208+
links:
209+
- name: Aqua Security
210+
url: https://www.aquasec.com/
211+
- name: Aqua Operator Github
212+
url: https://github.com/aquasecurity/aqua-operator
213+
icon:
214+
- base64data: PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIzLjAuMiwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0YwREUzNDt9Cgkuc3Qxe2ZpbGw6I0Y5QUU0MTt9Cgkuc3Qye2ZpbGw6Izk5RDVFQjt9Cgkuc3Qze2ZpbGw6IzAyQjBENDt9Cgkuc3Q0e2ZpbGw6I0Y1OTMyMDt9Cgkuc3Q1e2ZpbGw6IzA5ODA5QTt9Cjwvc3R5bGU+CjxnPgoJPHBvbHlnb24gY2xhc3M9InN0MCIgcG9pbnRzPSI1MCwyLjEgMjUuNSwyNi4xIDc0LjUsMjYuMSA3NC41LDIuMSAJIi8+Cgk8cG9seWdvbiBjbGFzcz0ic3QxIiBwb2ludHM9Ijc0LjUsNzMuOSA5OSw1MCA5OSwyNi4xIDc0LjUsMjYuMSAJIi8+Cgk8cG9seWdvbiBjbGFzcz0ic3QyIiBwb2ludHM9IjI1LjUsNzMuOSAyNS41LDk3LjkgNTAsOTcuOSA3NC41LDczLjkgCSIvPgoJPHBvbHlnb24gY2xhc3M9InN0MyIgcG9pbnRzPSIxLDUwIDEsNzMuOSAyNS41LDczLjkgMjUuNSwyNi4xIAkiLz4KCTxyZWN0IHg9Ijc0LjUiIHk9IjIuMSIgY2xhc3M9InN0NCIgd2lkdGg9IjI0LjUiIGhlaWdodD0iMjMuOSIvPgoJPHJlY3QgeD0iMSIgeT0iNzMuOSIgY2xhc3M9InN0NSIgd2lkdGg9IjI0LjUiIGhlaWdodD0iMjMuOSIvPgo8L2c+Cjwvc3ZnPgo=
215+
mediatype: image/svg+xml
216+
miniKubeVersion: 1.11.0
217+
installModes:
218+
- supported: true
219+
type: OwnNamespace
220+
- supported: true
221+
type: SingleNamespace
222+
- supported: false
223+
type: MultiNamespace
224+
- supported: false
225+
type: AllNamespaces
226+
install:
227+
strategy: deployment
228+
spec:
229+
clusterPermissions:
230+
- serviceAccountName: aqua-sa
231+
rules:
232+
- apiGroups:
233+
- "security.openshift.io"
234+
resources:
235+
- securitycontextconstraints
236+
verbs:
237+
- use
238+
resourceNames:
239+
- privileged
240+
- hostaccess
241+
- serviceAccountName: aqua-operator
242+
rules:
243+
- apiGroups:
244+
- ""
245+
resources:
246+
- pods
247+
- services
248+
- endpoints
249+
- persistentvolumeclaims
250+
- events
251+
- configmaps
252+
- secrets
253+
- serviceaccounts
254+
- nodes
255+
verbs:
256+
- '*'
257+
- apiGroups:
258+
- ""
259+
resources:
260+
- namespaces
261+
verbs:
262+
- get
263+
- apiGroups:
264+
- apps
265+
- extensions
266+
resources:
267+
- '*'
268+
- deployments
269+
- daemonsets
270+
- replicasets
271+
- statefulsets
272+
- podsecuritypolicies
273+
verbs:
274+
- '*'
275+
- apiGroups:
276+
- monitoring.coreos.com
277+
resources:
278+
- servicemonitors
279+
verbs:
280+
- get
281+
- create
282+
- apiGroups:
283+
- operator.aquasec.com
284+
resources:
285+
- '*'
286+
- aquagateways
287+
- aquaservers
288+
- aquacsps
289+
- aquaenforcers
290+
- aquascanners
291+
verbs:
292+
- '*'
293+
- apiGroups:
294+
- rbac.authorization.k8s.io
295+
- authorization.k8s.io
296+
resources:
297+
- '*'
298+
- clusterroles
299+
- clusterrolebindings
300+
verbs:
301+
- '*'
302+
- apiGroups:
303+
- policy
304+
resources:
305+
- '*'
306+
- podsecuritypolicies
307+
verbs:
308+
- '*'
309+
deployments:
310+
- name: aqua-operator
311+
spec:
312+
replicas: 1
313+
selector:
314+
matchLabels:
315+
name: aqua-operator
316+
template:
317+
metadata:
318+
labels:
319+
name: aqua-operator
320+
spec:
321+
serviceAccountName: aqua-operator
322+
containers:
323+
- name: aqua-operator
324+
image: aquasec/aqua-operator:1.0.0
325+
imagePullPolicy: Always
326+
command:
327+
- aqua-operator
328+
env:
329+
- name: WATCH_NAMESPACE
330+
valueFrom:
331+
fieldRef:
332+
fieldPath: metadata.annotations['olm.targetNamespaces']
333+
- name: POD_NAME
334+
valueFrom:
335+
fieldRef:
336+
fieldPath: metadata.name
337+
- name: OPERATOR_NAME
338+
value: "aqua-operator"
339+
ports:
340+
- containerPort: 60000
341+
name: metrics
342+
readinessProbe:
343+
exec:
344+
command:
345+
- stat
346+
- /tmp/operator-sdk-ready
347+
failureThreshold: 1
348+
initialDelaySeconds: 4
349+
periodSeconds: 10
350+
customresourcedefinitions:
351+
owned:
352+
- kind: AquaCsp
353+
name: aquacsps.operator.aquasec.com
354+
version: v1alpha1
355+
displayName: AquaCsp
356+
description: Aqua Security CSP Deployment with Aqua Operator
357+
- kind: AquaDatabase
358+
name: aquadatabases.operator.aquasec.com
359+
version: v1alpha1
360+
displayName: AquaDatabase
361+
description: Aqua Security Database Deployment with Aqua Operator
362+
- kind: AquaEnforcer
363+
name: aquaenforcers.operator.aquasec.com
364+
version: v1alpha1
365+
displayName: AquaEnforcer
366+
description: Aqua Security Enforcer Deployment with Aqua Operator
367+
- kind: AquaGateway
368+
name: aquagateways.operator.aquasec.com
369+
version: v1alpha1
370+
displayName: AquaGateway
371+
description: Aqua Security Gateway Deployment with Aqua Operator
372+
- kind: AquaScanner
373+
name: aquascanners.operator.aquasec.com
374+
version: v1alpha1
375+
displayName: AquaScanner
376+
description: Aqua Security Scanner Deployment with Aqua Operator
377+
- kind: AquaServer
378+
name: aquaservers.operator.aquasec.com
379+
version: v1alpha1
380+
displayName: AquaServer
381+
description: Aqua Security Server Deployment with Aqua Operator
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquacsps.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .metadata.creationTimestamp
8+
description: Aqua Csp Age
9+
name: Age
10+
type: date
11+
- JSONPath: .status.state
12+
description: Aqua Csp status
13+
name: Status
14+
type: string
15+
group: operator.aquasec.com
16+
names:
17+
kind: AquaCsp
18+
listKind: AquaCspList
19+
plural: aquacsps
20+
shortNames:
21+
- csp
22+
- aqua-csp
23+
singular: aquacsp
24+
scope: Namespaced
25+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquadatabases.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Database Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Database status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaDatabase
26+
listKind: AquaDatabaseList
27+
plural: aquadatabases
28+
shortNames:
29+
- aquadb
30+
- aqua-db
31+
- aqua-database
32+
singular: aquadatabase
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaenforcers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Enforcer Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Enforcer status
17+
name: Status
18+
type: string
19+
group: operator.aquasec.com
20+
names:
21+
kind: AquaEnforcer
22+
listKind: AquaEnforcerList
23+
plural: aquaenforcers
24+
shortNames:
25+
- enforcers
26+
- aqua-agent
27+
- aqua-enforcer
28+
- aquaenf
29+
singular: aquaenforcer
30+
scope: Namespaced
31+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquagateways.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Gateway Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Gateway status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaGateway
26+
listKind: AquaGatewayList
27+
plural: aquagateways
28+
shortNames:
29+
- aquagw
30+
- aqua-gateway
31+
- aqua-gw
32+
singular: aquagateway
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquascanners.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Scanner Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Scanner status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaScanner
26+
listKind: AquaScannerList
27+
plural: aquascanners
28+
shortNames:
29+
- aquasc
30+
- aqua-scan
31+
- aqua-scanner
32+
singular: aquascanner
33+
scope: Namespaced
34+
version: v1alpha1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaservers.operator.aquasec.com
5+
spec:
6+
additionalPrinterColumns:
7+
- JSONPath: .spec.deploy.replicas
8+
description: Replicas Number
9+
name: Replicas
10+
type: integer
11+
- JSONPath: .metadata.creationTimestamp
12+
description: Aqua Server Age
13+
name: Age
14+
type: date
15+
- JSONPath: .status.state
16+
description: Aqua Server status
17+
name: Status
18+
type: string
19+
- JSONPath: .status.nodes
20+
description: List Of Nodes (Pods)
21+
name: Nodes
22+
type: string
23+
group: operator.aquasec.com
24+
names:
25+
kind: AquaServer
26+
listKind: AquaServerList
27+
plural: aquaservers
28+
shortNames:
29+
- aquasr
30+
- aqua-server
31+
- aqua-servers
32+
singular: aquaserver
33+
scope: Namespaced
34+
version: v1alpha1

‎test/e2e/testdata/aqua/1.0.1/aqua-operator.v1.0.1.clusterserviceversion.yaml

+406
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquacsps.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaCsp
9+
listKind: AquaCspList
10+
plural: aquacsps
11+
singular: aquacsp
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaCsp is the Schema for the aquacsps API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaCspSpec defines the desired state of AquaCsp
33+
type: object
34+
status:
35+
description: AquaCspStatus defines the observed state of AquaCsp
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Age
41+
type: date
42+
description: Aqua Csp Age
43+
JSONPath: .metadata.creationTimestamp
44+
- name: Status
45+
type: string
46+
description: Aqua Csp status
47+
JSONPath: .status.state
48+
versions:
49+
- name: v1alpha1
50+
served: true
51+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquadatabases.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaDatabase
9+
listKind: AquaDatabaseList
10+
plural: aquadatabases
11+
singular: aquadatabase
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaDatabase is the Schema for the aquadatabases API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaDatabaseSpec defines the desired state of AquaDatabase
33+
type: object
34+
status:
35+
description: AquaDatabaseStatus defines the observed state of AquaDatabase
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Replicas
41+
type: integer
42+
description: Replicas Number
43+
JSONPath: .spec.deploy.replicas
44+
- name: Age
45+
type: date
46+
description: Aqua Database Age
47+
JSONPath: .metadata.creationTimestamp
48+
- name: Status
49+
type: string
50+
description: Aqua Database status
51+
JSONPath: .status.state
52+
- name: Nodes
53+
type: string
54+
description: List Of Nodes (Pods)
55+
JSONPath: .status.nodes
56+
versions:
57+
- name: v1alpha1
58+
served: true
59+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaenforcers.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaEnforcer
9+
listKind: AquaEnforcerList
10+
plural: aquaenforcers
11+
singular: aquaenforcer
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaEnforcer is the Schema for the aquaenforcers API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaEnforcerSpec defines the desired state of AquaEnforcer
33+
type: object
34+
status:
35+
description: AquaEnforcerStatus defines the observed state of AquaEnforcer
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Replicas
41+
type: integer
42+
description: Replicas Number
43+
JSONPath: .spec.deploy.replicas
44+
- name: Age
45+
type: date
46+
description: Aqua Enforcer Age
47+
JSONPath: .metadata.creationTimestamp
48+
- name: Status
49+
type: string
50+
description: Aqua Enforcer status
51+
JSONPath: .status.state
52+
versions:
53+
- name: v1alpha1
54+
served: true
55+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquagateways.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaGateway
9+
listKind: AquaGatewayList
10+
plural: aquagateways
11+
singular: aquagateway
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaGateway is the Schema for the aquagateways API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaGatewaySpec defines the desired state of AquaGateway
33+
type: object
34+
status:
35+
description: AquaGatewayStatus defines the observed state of AquaGateway
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Replicas
41+
type: integer
42+
description: Replicas Number
43+
JSONPath: .spec.deploy.replicas
44+
- name: Age
45+
type: date
46+
description: Aqua Gateway Age
47+
JSONPath: .metadata.creationTimestamp
48+
- name: Status
49+
type: string
50+
description: Aqua Gateway status
51+
JSONPath: .status.state
52+
- name: Nodes
53+
type: string
54+
description: List Of Nodes (Pods)
55+
JSONPath: .status.nodes
56+
versions:
57+
- name: v1alpha1
58+
served: true
59+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquascanners.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaScanner
9+
listKind: AquaScannerList
10+
plural: aquascanners
11+
singular: aquascanner
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaScanner is the Schema for the aquascanners API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaScannerSpec defines the desired state of AquaScanner
33+
type: object
34+
status:
35+
description: AquaScannerStatus defines the observed state of AquaScanner
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Replicas
41+
type: integer
42+
description: Replicas Number
43+
JSONPath: .spec.deploy.replicas
44+
- name: Age
45+
type: date
46+
description: Aqua Scanner Age
47+
JSONPath: .metadata.creationTimestamp
48+
- name: Status
49+
type: string
50+
description: Aqua Scanner status
51+
JSONPath: .status.state
52+
- name: Nodes
53+
type: string
54+
description: List Of Nodes (Pods)
55+
JSONPath: .status.nodes
56+
versions:
57+
- name: v1alpha1
58+
served: true
59+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: aquaservers.operator.aquasec.com
5+
spec:
6+
group: operator.aquasec.com
7+
names:
8+
kind: AquaServer
9+
listKind: AquaServerList
10+
plural: aquaservers
11+
singular: aquaserver
12+
scope: Namespaced
13+
subresources:
14+
status: {}
15+
validation:
16+
openAPIV3Schema:
17+
description: AquaServer is the Schema for the aquaservers API
18+
properties:
19+
apiVersion:
20+
description: 'APIVersion defines the versioned schema of this representation
21+
of an object. Servers should convert recognized schemas to the latest
22+
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
23+
type: string
24+
kind:
25+
description: 'Kind is a string value representing the REST resource this
26+
object represents. Servers may infer this from the endpoint the client
27+
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
28+
type: string
29+
metadata:
30+
type: object
31+
spec:
32+
description: AquaServerSpec defines the desired state of AquaServer
33+
type: object
34+
status:
35+
description: AquaServerStatus defines the observed state of AquaServer
36+
type: object
37+
type: object
38+
version: v1alpha1
39+
additionalPrinterColumns:
40+
- name: Replicas
41+
type: integer
42+
description: Replicas Number
43+
JSONPath: .spec.deploy.replicas
44+
- name: Age
45+
type: date
46+
description: Aqua Server Age
47+
JSONPath: .metadata.creationTimestamp
48+
- name: Status
49+
type: string
50+
description: Aqua Server status
51+
JSONPath: .status.state
52+
- name: Nodes
53+
type: string
54+
description: List Of Nodes (Pods)
55+
JSONPath: .status.nodes
56+
versions:
57+
- name: v1alpha1
58+
served: true
59+
storage: true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
packageName: aqua
2+
channels:
3+
- name: alpha
4+
currentCSV: aqua-operator.v1.0.1
5+
- name: beta
6+
currentCSV: aqua-operator.v0.0.2
7+
- name: stable
8+
currentCSV: aqua-operator.v1.0.1
9+
defaultChannel: stable

0 commit comments

Comments
 (0)
Please sign in to comment.