Open
Description
I've been working on a PoC to generate CSVs from the code. The code can be found at quarkiverse/quarkus-operator-sdk#116 and relies on a SNAPSHOT build of Quarkus since we need the feature that got merged today from quarkusio/quarkus#20113.
CSVs are currently generated for each controller:
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
name: managedkafkaagentcontroller
spec:
customresourcedefinitions:
owned:
- kind: ManagedKafkaAgent
name: managedkafkaagents.managedkafka.bf2.org
version: v1alpha1
install:
spec:
clusterPermissions:
- rules:
- apiGroups:
- managedkafka.bf2.org
resources:
- managedkafkas
- managedkafkas/status
- managedkafkaagents
- managedkafkaagents/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- kafka.strimzi.io
resources:
- kafkas
- kafkas/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- apps
- extensions
resources:
- deployments
- deployments/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- services
- configmaps
- secrets
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- route.openshift.io
resources:
- routes
- routes/custom-host
- routes/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- admissionregistration.k8s.io
resources:
- validatingwebhookconfigurations
verbs:
- get
- list
- watch
- apiGroups:
- operators.coreos.com
resources:
- subscriptions
verbs:
- get
- list
- watch
- apiGroups:
- packages.operators.coreos.com
resources:
- packagemanifests
verbs:
- get
- list
- watch
- apiGroups:
- operators.coreos.com
resources:
- installplans
verbs:
- get
- list
- watch
- patch
- update
- apiGroups:
- ""
resources:
- pods
- nodes
verbs:
- get
- list
- watch
- apiGroups:
- operator.openshift.io
resources:
- ingresscontrollers
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
serviceAccountName: kas-fleetshard-operator
deployments:
- name: kas-fleetshard-operator
spec:
replicas: 1
selector:
matchLabels:
app: kas-fleetshard-operator
app.kubernetes.io/version: 999-SNAPSHOT
app.kubernetes.io/name: kas-fleetshard-operator
template:
metadata:
annotations:
app.quarkus.io/commit-id: 7046be38820fd54c539f32de1627ddb6174e04d5
app.quarkus.io/build-timestamp: 2021-09-15 - 10:41:54 +0000
prometheus.io/scrape: "true"
prometheus.io/path: /q/metrics
prometheus.io/port: "8080"
prometheus.io/scheme: http
labels:
app: kas-fleetshard-operator
app.kubernetes.io/version: 999-SNAPSHOT
app.kubernetes.io/name: kas-fleetshard-operator
name: kas-fleetshard-operator
spec:
containers:
- env:
- name: QUARKUS_PROFILE
value: prod
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: claprun/kas-fleetshard-operator:999-SNAPSHOT
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /q/health/live
port: 8080
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
name: kas-fleetshard-operator
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /q/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
resources:
limits:
cpu: 1500m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
volumeMounts:
- mountPath: /config
name: logging-config-volume
readOnly: false
subPath: ""
serviceAccount: kas-fleetshard-operator
serviceAccountName: kas-fleetshard-operator
volumes:
- configMap:
defaultMode: 384
name: operator-logging-config-override
optional: true
name: logging-config-volume
and
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
name: managedkafkacontroller
spec:
customresourcedefinitions:
owned:
- kind: ManagedKafka
name: managedkafkas.managedkafka.bf2.org
version: v1alpha1
install:
spec:
clusterPermissions:
- rules:
- apiGroups:
- managedkafka.bf2.org
resources:
- managedkafkas
- managedkafkas/status
- managedkafkaagents
- managedkafkaagents/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- kafka.strimzi.io
resources:
- kafkas
- kafkas/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- apps
- extensions
resources:
- deployments
- deployments/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- apps
resources:
- replicasets
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- services
- configmaps
- secrets
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- route.openshift.io
resources:
- routes
- routes/custom-host
- routes/status
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
- apiGroups:
- admissionregistration.k8s.io
resources:
- validatingwebhookconfigurations
verbs:
- get
- list
- watch
- apiGroups:
- operators.coreos.com
resources:
- subscriptions
verbs:
- get
- list
- watch
- apiGroups:
- packages.operators.coreos.com
resources:
- packagemanifests
verbs:
- get
- list
- watch
- apiGroups:
- operators.coreos.com
resources:
- installplans
verbs:
- get
- list
- watch
- patch
- update
- apiGroups:
- ""
resources:
- pods
- nodes
verbs:
- get
- list
- watch
- apiGroups:
- operator.openshift.io
resources:
- ingresscontrollers
verbs:
- get
- list
- watch
- create
- delete
- patch
- update
serviceAccountName: kas-fleetshard-operator
deployments:
- name: kas-fleetshard-operator
spec:
replicas: 1
selector:
matchLabels:
app: kas-fleetshard-operator
app.kubernetes.io/version: 999-SNAPSHOT
app.kubernetes.io/name: kas-fleetshard-operator
template:
metadata:
annotations:
app.quarkus.io/commit-id: 7046be38820fd54c539f32de1627ddb6174e04d5
app.quarkus.io/build-timestamp: 2021-09-15 - 10:41:54 +0000
prometheus.io/scrape: "true"
prometheus.io/path: /q/metrics
prometheus.io/port: "8080"
prometheus.io/scheme: http
labels:
app: kas-fleetshard-operator
app.kubernetes.io/version: 999-SNAPSHOT
app.kubernetes.io/name: kas-fleetshard-operator
name: kas-fleetshard-operator
spec:
containers:
- env:
- name: QUARKUS_PROFILE
value: prod
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
image: claprun/kas-fleetshard-operator:999-SNAPSHOT
imagePullPolicy: Always
livenessProbe:
failureThreshold: 3
httpGet:
path: /q/health/live
port: 8080
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
name: kas-fleetshard-operator
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /q/health/ready
port: 8080
scheme: HTTP
initialDelaySeconds: 0
periodSeconds: 30
successThreshold: 1
timeoutSeconds: 10
resources:
limits:
cpu: 1500m
memory: 1Gi
requests:
cpu: 500m
memory: 512Mi
volumeMounts:
- mountPath: /config
name: logging-config-volume
readOnly: false
subPath: ""
serviceAccount: kas-fleetshard-operator
serviceAccountName: kas-fleetshard-operator
volumes:
- configMap:
defaultMode: 384
name: operator-logging-config-override
optional: true
name: logging-config-volume
Let me know what you think.
[Edit: updated the generated CSV after fixing an issue in the generator that wasn't properly handling defined roles]
/cc @shawkins
Metadata
Metadata
Assignees
Labels
No labels