Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce the operator bundle sizes/1 bundle for the product #1185

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

dprince
Copy link
Contributor

@dprince dprince commented Nov 14, 2024

This PR creates a new "initialization resource" called.... OpenStack (name TBD)

Dockerfile is updated to include new 'operator' binary and bindata directory. Bindata will contain all the CRDs, RBAC, and deployment files needed to deploy all the operators.

Add Makefile targets for bindata, and run-operator.

Forklift bindata impl from old CNOSP compute_node_operator.

Implement new controllers/operator/openstack_controller.go which process files in /bindata using bindata impl (uses k8s unstructured client).

Calling 'make bindata' during a Renovate sync should keep things in sync.

When compared to the old mechanism (i.e. using OLM) this new approach:
-only installs webhooks on the top level openstack-operator (may need them for infra/test operators too though)
-uses Certmanager directly for webhook certs (vs. having OLM create them)
-requires no other Openstack bundle dependencies (simpler)
-no bundle size limit as we store all things in the openstack-operator container

Jira: OSPRH-11244

Copy link
Contributor

openshift-ci bot commented Nov 14, 2024

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dprince

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/b38fc0f49ef14e869d3e407b5e0dc55d

✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 55m 23s
podified-multinode-edpm-deployment-crc FAILURE in 31m 41s
cifmw-crc-podified-edpm-baremetal FAILURE in 33m 58s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 40m 38s
openstack-operator-tempest-multinode FAILURE in 38m 35s
✔️ openstack-operator-docs-preview SUCCESS in 2m 06s

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/6e091c5f71e84cc3addb4875b8075781

✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 34m 54s
podified-multinode-edpm-deployment-crc FAILURE in 33m 05s
cifmw-crc-podified-edpm-baremetal FAILURE in 39m 36s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 40m 50s
openstack-operator-tempest-multinode FAILURE in 35m 31s
✔️ openstack-operator-docs-preview SUCCESS in 2m 00s

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/21a654ede32742b580a01cbe43a0e3ae

openstack-k8s-operators-content-provider FAILURE in 8m 02s
⚠️ podified-multinode-edpm-deployment-crc SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ cifmw-crc-podified-edpm-baremetal SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ adoption-standalone-to-crc-ceph-provider SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-tempest-multinode SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
✔️ openstack-operator-docs-preview SUCCESS in 1m 59s

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/7828a64b64024513997c9b44d8e99b66

openstack-k8s-operators-content-provider FAILURE in 4m 18s
⚠️ podified-multinode-edpm-deployment-crc SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ cifmw-crc-podified-edpm-baremetal SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ adoption-standalone-to-crc-ceph-provider SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
⚠️ openstack-operator-tempest-multinode SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider
✔️ openstack-operator-docs-preview SUCCESS in 1m 55s

@bogdando
Copy link

Could we think of alternatives? One of I can think about is removing operators-specific data from oscp CRD leaving only top scope and nested top-scope, like Nova, spec data there. And hiding everything specific to services operators into data structs and go libraries. That would let us to rely on OLM, still, and avoid custom solutions around it. That is, by the price of no more separate deployments of services operators possible by their own CRs (but we don't support that anyway?)

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/d02a9d8fa37c440bb90bb4e77621079b

✔️ openstack-k8s-operators-content-provider SUCCESS in 1h 35m 57s
podified-multinode-edpm-deployment-crc FAILURE in 32m 45s
cifmw-crc-podified-edpm-baremetal FAILURE in 36m 42s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 39m 23s
openstack-operator-tempest-multinode FAILURE in 36m 49s
✔️ openstack-operator-docs-preview SUCCESS in 2m 21s

@bshephar
Copy link
Contributor

I'm all for this. I think OLM is great, but it's really designed for simpler operators. We have a lot of complexity, so the more of that complexity that we can handle on our own, independent of OLM, the better I think the overall experience will be. For users, but also for developers.

@bogdando
Copy link

I'm all for this. I think OLM is great, but it's really designed for simpler operators. We have a lot of complexity, so the more of that complexity that we can handle on our own, independent of OLM, the better I think the overall experience will be. For users, but also for developers.

complexity is pain, indeed.
We could, however, decouple everything and install simple operators with OLM. And do whatever we need to meta operators

operator-sdk create api --group operator --version v1beta1 --kind OpenStack

Jira: OSPRH-11244
Dockerfile is updated to include new 'operator' binary
and bindata directory. Bindata will contain
all the CRDs, RBAC, and deployment files needed
to deploy all the operators.

Add Makefile targets for bindata, and run-operator.

Forklift bindata impl from old CNOSP compute_node_operator.

Implement new controllers/operator/openstack_controller.go
which process files in /bindata.

Calling 'make bindata' during a Renovate sync should keep
things in sync.

Jira: OSPRH-11244
This gets passed to the the operator-manager and is used
to run the controller-manager
Copy link
Contributor

openshift-ci bot commented Nov 22, 2024

@dprince: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/openstack-operator-build-deploy-kuttl 92f51cd link true /test openstack-operator-build-deploy-kuttl

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Copy link

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://softwarefactory-project.io/zuul/t/rdoproject.org/buildset/33706df2396a45c9be1c54c083349fd7

✔️ openstack-k8s-operators-content-provider SUCCESS in 54m 43s
podified-multinode-edpm-deployment-crc FAILURE in 31m 03s
cifmw-crc-podified-edpm-baremetal FAILURE in 41m 15s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 40m 32s
openstack-operator-tempest-multinode FAILURE in 36m 02s
✔️ openstack-operator-docs-preview SUCCESS in 1m 59s

@openshift-merge-robot
Copy link
Contributor

PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants