Skip to content

Commit dba94e7

Browse files
author
Xin Li
authored
Add bundle manifests (#24)
1 parent 87de5af commit dba94e7

9 files changed

+357
-0
lines changed

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ OPERATOR_IMAGE_NAME ?= ibm-namespace-scope-operator
7171
OPERATOR_VERSION ?= 1.0.0
7272

7373
# Options for 'bundle-build'
74+
CHANNELS ?= beta
75+
DEFAULT_CHANNEL ?= beta
7476
ifneq ($(origin CHANNELS), undefined)
7577
BUNDLE_CHANNELS := --channels=$(CHANNELS)
7678
endif
@@ -131,6 +133,14 @@ manifests: ## Generate manifests e.g. CRD, RBAC etc.
131133
generate: ## Generate code e.g. API etc.
132134
$(CONTROLLER_GEN) object:headerFile="hack/boilerplate.go.txt" paths="./..."
133135

136+
generate-csv-manifests: ## Generate CSV manifests
137+
$(OPERATOR_SDK) generate kustomize manifests
138+
139+
bundle: generate manifests ## Generate bundle manifests
140+
$(KUSTOMIZE) build config/manifests | $(OPERATOR_SDK) generate bundle \
141+
-q --overwrite --version $(OPERATOR_VERSION) $(BUNDLE_METADATA_OPTS)
142+
$(OPERATOR_SDK) bundle validate ./bundle
143+
134144
##@ Test
135145

136146
test: ## Run unit test on prow

bundle.Dockerfile

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
FROM scratch
2+
3+
LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1
4+
LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/
5+
LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/
6+
LABEL operators.operatorframework.io.bundle.package.v1=ibm-namespace-scope-operator
7+
LABEL operators.operatorframework.io.bundle.channels.v1=beta
8+
LABEL operators.operatorframework.io.bundle.channel.default.v1=beta
9+
LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.1.0
10+
LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1
11+
LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v2
12+
LABEL operators.operatorframework.io.test.config.v1=tests/scorecard/
13+
LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1
14+
15+
COPY bundle/manifests /manifests/
16+
COPY bundle/metadata /metadata/
17+
COPY bundle/tests/scorecard /tests/scorecard/
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
apiVersion: operators.coreos.com/v1alpha1
2+
kind: ClusterServiceVersion
3+
metadata:
4+
annotations:
5+
alm-examples: |-
6+
[
7+
{
8+
"apiVersion": "operator.ibm.com/v1",
9+
"kind": "NamespaceScope",
10+
"metadata": {
11+
"name": "namespacescope"
12+
},
13+
"spec": {
14+
"namespaceMembers": [
15+
"ibm-common-services",
16+
"default"
17+
],
18+
"restartLabels": {
19+
"intent": "projected"
20+
}
21+
}
22+
}
23+
]
24+
capabilities: Seamless Upgrades
25+
containerImage: quay.io/opencloudio/ibm-namespace-scope-operator:latest
26+
createdAt: "2020-11-2T15:38:33Z"
27+
operators.operatorframework.io/builder: operator-sdk-v1.1.0
28+
operators.operatorframework.io/project_layout: go.kubebuilder.io/v2
29+
repository: https://github.com/IBM/ibm-namespace-scope-operator
30+
support: IBM
31+
name: ibm-namespace-scope-operator.v1.0.0
32+
namespace: placeholder
33+
spec:
34+
apiservicedefinitions: {}
35+
customresourcedefinitions:
36+
owned:
37+
- description: NamespaceScope is the Schema for the namespacescopes API
38+
displayName: Namespace Scope
39+
kind: NamespaceScope
40+
name: namespacescopes.operator.ibm.com
41+
version: v1
42+
description: This operator automates the extension of operator watch and service account permission scope to other namespaces in an openshift cluster.
43+
displayName: IBM NamespaceScope Operator
44+
icon:
45+
- base64data: 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
46+
mediatype: image/png
47+
install:
48+
spec:
49+
deployments:
50+
- name: ibm-namespace-scope-operator
51+
spec:
52+
replicas: 1
53+
selector:
54+
matchLabels:
55+
name: ibm-namespace-scope-operator
56+
strategy: {}
57+
template:
58+
metadata:
59+
annotations:
60+
productID: 068a62892a1e4db39641342e592daa25
61+
productMetric: FREE
62+
productName: IBM Cloud Platform Common Services
63+
labels:
64+
app.kubernetes.io/instance: ibm-namespace-scope-operator
65+
app.kubernetes.io/managed-by: ibm-namespace-scope-operator
66+
app.kubernetes.io/name: ibm-namespace-scope-operator
67+
name: ibm-namespace-scope-operator
68+
spec:
69+
affinity:
70+
nodeAffinity:
71+
requiredDuringSchedulingIgnoredDuringExecution:
72+
nodeSelectorTerms:
73+
- matchExpressions:
74+
- key: beta.kubernetes.io/arch
75+
operator: In
76+
values:
77+
- amd64
78+
- ppc64le
79+
- s390x
80+
containers:
81+
- command:
82+
- /namespace-scope-operator-manager
83+
env:
84+
- name: OPERATOR_NAME
85+
value: ibm-namespace-scope-operator
86+
- name: OPERATOR_NAMESPACE
87+
valueFrom:
88+
fieldRef:
89+
apiVersion: v1
90+
fieldPath: metadata.namespace
91+
image: ibm-namespace-scope-operator:1.0.0
92+
imagePullPolicy: Always
93+
name: ibm-namespace-scope-operator
94+
resources:
95+
limits:
96+
cpu: 500m
97+
memory: 512Mi
98+
requests:
99+
cpu: 100m
100+
memory: 200Mi
101+
securityContext:
102+
allowPrivilegeEscalation: false
103+
capabilities:
104+
drop:
105+
- ALL
106+
privileged: false
107+
readOnlyRootFilesystem: true
108+
runAsNonRoot: true
109+
serviceAccountName: ibm-namespace-scope-operator
110+
terminationGracePeriodSeconds: 10
111+
permissions:
112+
- rules:
113+
- apiGroups:
114+
- '*'
115+
resources:
116+
- '*'
117+
verbs:
118+
- '*'
119+
serviceAccountName: ibm-namespace-scope-operator
120+
strategy: deployment
121+
installModes:
122+
- supported: false
123+
type: OwnNamespace
124+
- supported: false
125+
type: SingleNamespace
126+
- supported: false
127+
type: MultiNamespace
128+
- supported: true
129+
type: AllNamespaces
130+
keywords:
131+
- IBM
132+
- Cloud
133+
links:
134+
- name: IBM Namespace Scope Operator
135+
url: https://github.com/IBM/ibm-namespace-scope-operator
136+
maintainers:
137+
138+
name: IBM Support
139+
maturity: alpha
140+
provider:
141+
name: IBM
142+
version: 1.0.0
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
apiVersion: v1
2+
kind: ServiceAccount
3+
metadata:
4+
creationTimestamp: null
5+
name: ibm-namespace-scope-operator
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
apiVersion: apiextensions.k8s.io/v1beta1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
annotations:
5+
controller-gen.kubebuilder.io/version: v0.3.0
6+
creationTimestamp: null
7+
name: namespacescopes.operator.ibm.com
8+
spec:
9+
group: operator.ibm.com
10+
names:
11+
kind: NamespaceScope
12+
listKind: NamespaceScopeList
13+
plural: namespacescopes
14+
singular: namespacescope
15+
scope: Namespaced
16+
subresources:
17+
status: {}
18+
validation:
19+
openAPIV3Schema:
20+
description: NamespaceScope is the Schema for the namespacescopes API
21+
properties:
22+
apiVersion:
23+
description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
24+
type: string
25+
kind:
26+
description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
27+
type: string
28+
metadata:
29+
type: object
30+
spec:
31+
description: NamespaceScopeSpec defines the desired state of NamespaceScope
32+
properties:
33+
configmapName:
34+
description: ConfigMap name that will contain the list of namespaces to be watched
35+
type: string
36+
manualManagement:
37+
description: Set the following to true to manaually manage permissions for the NamespaceScope operator to extend control over other namespaces The operator may fail when trying to extend permissions to other namespaces, but the cluster administrator can correct this using the authorize-namespace command.
38+
type: boolean
39+
namespaceMembers:
40+
description: Namespaces that are part of this scope
41+
items:
42+
type: string
43+
type: array
44+
restartLabels:
45+
additionalProperties:
46+
type: string
47+
description: Restart pods with the following labels when the namspace list changes
48+
type: object
49+
type: object
50+
status:
51+
description: NamespaceScopeStatus defines the observed state of NamespaceScope
52+
type: object
53+
type: object
54+
version: v1
55+
versions:
56+
- name: v1
57+
served: true
58+
storage: true
59+
status:
60+
acceptedNames:
61+
kind: ""
62+
plural: ""
63+
conditions: []
64+
storedVersions: []

bundle/metadata/annotations.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
annotations:
2+
operators.operatorframework.io.bundle.channel.default.v1: beta
3+
operators.operatorframework.io.bundle.channels.v1: beta
4+
operators.operatorframework.io.bundle.manifests.v1: manifests/
5+
operators.operatorframework.io.bundle.mediatype.v1: registry+v1
6+
operators.operatorframework.io.bundle.metadata.v1: metadata/
7+
operators.operatorframework.io.bundle.package.v1: ibm-namespace-scope-operator
8+
operators.operatorframework.io.metrics.builder: operator-sdk-v1.1.0
9+
operators.operatorframework.io.metrics.mediatype.v1: metrics+v1
10+
operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v2
11+
operators.operatorframework.io.test.config.v1: tests/scorecard/
12+
operators.operatorframework.io.test.mediatype.v1: scorecard+v1

bundle/tests/scorecard/config.yaml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
apiVersion: scorecard.operatorframework.io/v1alpha3
2+
kind: Configuration
3+
metadata:
4+
name: config
5+
stages:
6+
- parallel: true
7+
tests:
8+
- entrypoint:
9+
- scorecard-test
10+
- basic-check-spec
11+
image: quay.io/operator-framework/scorecard-test:v1.1.0
12+
labels:
13+
suite: basic
14+
test: basic-check-spec-test
15+
- entrypoint:
16+
- scorecard-test
17+
- olm-bundle-validation
18+
image: quay.io/operator-framework/scorecard-test:v1.1.0
19+
labels:
20+
suite: olm
21+
test: olm-bundle-validation-test
22+
- entrypoint:
23+
- scorecard-test
24+
- olm-crds-have-validation
25+
image: quay.io/operator-framework/scorecard-test:v1.1.0
26+
labels:
27+
suite: olm
28+
test: olm-crds-have-validation-test
29+
- entrypoint:
30+
- scorecard-test
31+
- olm-crds-have-resources
32+
image: quay.io/operator-framework/scorecard-test:v1.1.0
33+
labels:
34+
suite: olm
35+
test: olm-crds-have-resources-test
36+
- entrypoint:
37+
- scorecard-test
38+
- olm-spec-descriptors
39+
image: quay.io/operator-framework/scorecard-test:v1.1.0
40+
labels:
41+
suite: olm
42+
test: olm-spec-descriptors-test
43+
- entrypoint:
44+
- scorecard-test
45+
- olm-status-descriptors
46+
image: quay.io/operator-framework/scorecard-test:v1.1.0
47+
labels:
48+
suite: olm
49+
test: olm-status-descriptors-test

0 commit comments

Comments
 (0)