Reputation: 49
I'm trying to generate a bundle for an operator but the operator-sdk is taking a CSV definition from anywhere I do not know and I do not find anything
They way I'm doing is using kustomize build
to take the definitions and the pipe into operator-sdk generate bundle
to generate the bundle. The theory says that this kustomize created files will be used to create the bundle but the reality is that operator-sdk is not taking them.
For example:
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
alm-examples: '[]'
capabilities: Basic Install
name: example-operator.v0.0.0
namespace: placeholder
spec:
apiservicedefinitions: {}
customresourcedefinitions: {}
description: |
Very Long Description
displayName: Example Operator
icon:
- base64data: "base64_enconded_image"
mediatype: image/jpeg
install:
spec:
deployments: null
strategy: ""
installModes:
- supported: false
type: OwnNamespace
- supported: true
type: SingleNamespace
- supported: false
type: MultiNamespace
- supported: true
type: AllNamespaces
keywords:
- assessment
- audit
- state
- cluster
links:
- name: Example Inc.
url: https://example.com
maturity: alpha
minKubeVersion: 1.16.0
provider:
name: Example
url: example.com
version: 0.0.0
But it is resulting the following under the bundle folder:
apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
annotations:
alm-examples: |-
[
{
"apiVersion": "custom.example.com/v1alpha1",
"kind": "Memcached",
"metadata": {
"labels": {
"app.kubernetes.io/created-by": "example-operator",
"app.kubernetes.io/instance": "memcached-sample",
"app.kubernetes.io/managed-by": "kustomize",
"app.kubernetes.io/name": "memcached",
"app.kubernetes.io/part-of": "example-operator"
},
"name": "example-sample"
},
"spec": {
"author": "",
"author_email": "",
"client": "",
"git_token": ""
}
}
]
capabilities: Basic Install
createdAt: "2024-04-18T08:02:35Z"
operators.operatorframework.io/builder: operator-sdk-v1.34.1
operators.operatorframework.io/project_layout: ansible.sdk.operatorframework.io/v1
name: example-operator.v0.0.44
namespace: placeholder
spec:
apiservicedefinitions: {}
customresourcedefinitions:
owned:
- kind: Memcached
name: memcached.custom.example.com
version: v1alpha1
description: Example Operator description. TODO.
displayName: Example Operator
icon:
- base64data: ""
mediatype: ""
install:
spec:
clusterPermissions:
- rules:
- apiGroups:
- authorization.openshift.io
resources:
- '*'
verbs:
- '*'
- apiGroups:
- rbac.authorization.k8s.io
resources:
- '*'
verbs:
- '*'
- apiGroups:
- ""
resources:
- secrets
- configmaps
- serviceaccounts
- pods
- pods/exec
- pods/log
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- apps
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- custom.crossvale.com
resources:
- assessments
- assessments/status
- assessments/finalizers
verbs:
- create
- delete
- get
- list
- patch
- update
- watch
- apiGroups:
- authentication.k8s.io
resources:
- tokenreviews
verbs:
- create
- apiGroups:
- authorization.k8s.io
resources:
- subjectaccessreviews
verbs:
- create
serviceAccountName: example-operator-controller-manager
deployments:
- label:
app.kubernetes.io/component: manager
app.kubernetes.io/created-by: new-operator
app.kubernetes.io/instance: controller-manager
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: deployment
app.kubernetes.io/part-of: new-operator
control-plane: controller-manager
name: example-operator-controller-manager
spec:
replicas: 1
selector:
matchLabels:
control-plane: controller-manager
strategy: {}
template:
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
labels:
control-plane: controller-manager
spec:
containers:
- args:
- --secure-listen-address=0.0.0.0:8443
- --upstream=http://127.0.0.1:8080/
- --logtostderr=true
- --v=0
image: gcr.io/kubebuilder/kube-rbac-proxy:v0.14.1
name: kube-rbac-proxy
ports:
- containerPort: 8443
name: https
protocol: TCP
resources:
limits:
cpu: 500m
memory: 128Mi
requests:
cpu: 5m
memory: 64Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
- args:
- --health-probe-bind-address=:6789
- --metrics-bind-address=127.0.0.1:8080
- --leader-elect
- --leader-election-id=new-operator
env:
- name: ANSIBLE_GATHERING
value: explicit
image: ghcr.io/crossvale-inc/example-operator:0.0.44
livenessProbe:
httpGet:
path: /healthz
port: 6789
initialDelaySeconds: 15
periodSeconds: 20
name: manager
readinessProbe:
httpGet:
path: /readyz
port: 6789
initialDelaySeconds: 5
periodSeconds: 10
resources:
limits:
cpu: 500m
memory: 768Mi
requests:
cpu: 10m
memory: 256Mi
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
securityContext:
runAsNonRoot: true
serviceAccountName: example-operator-controller-manager
terminationGracePeriodSeconds: 10
permissions:
- rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- get
- list
- watch
- create
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
serviceAccountName: example-operator-controller-manager
strategy: deployment
installModes:
- supported: false
type: OwnNamespace
- supported: false
type: SingleNamespace
- supported: false
type: MultiNamespace
- supported: true
type: AllNamespaces
keywords:
- example-operator
links:
- name: Example Operator
url: https://example-operator.domain
maintainers:
- email: [email protected]
name: Maintainer Name
maturity: alpha
provider:
name: Provider Name
url: https://your.domain
version: 0.0.44
As you see it is taking something that nothing relates with the base manifest I have
Any idea? Cause I'm very frustrated at that point
Thanks in advance.
Upvotes: 0
Views: 52