operator-sdk is making a csv from a ghost file

13 views
Skip to first unread message

Arturo Vélez

unread,
Apr 18, 2024, 4:28:55 AMApr 18
to Operator Framework
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: yo...@email.com
    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.
Reply all
Reply to author
Forward
0 new messages