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 #1185

Open
wants to merge 7 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

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

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/1f257e4277c9467181e84ee9e28981e7

✔️ openstack-k8s-operators-content-provider SUCCESS in 51m 29s
podified-multinode-edpm-deployment-crc FAILURE in 32m 12s
cifmw-crc-podified-edpm-baremetal FAILURE in 36m 32s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 37m 45s
openstack-operator-tempest-multinode FAILURE in 36m 23s
✔️ openstack-operator-docs-preview SUCCESS in 1m 56s

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/acee34c3f26e49c79a494026270d3f6a

✔️ openstack-k8s-operators-content-provider SUCCESS in 1h 50m 30s
podified-multinode-edpm-deployment-crc FAILURE in 18m 50s
cifmw-crc-podified-edpm-baremetal FAILURE in 37m 11s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 38m 51s
openstack-operator-tempest-multinode FAILURE in 36m 33s
✔️ openstack-operator-docs-preview SUCCESS in 1m 57s

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/973a51e7b0804c0c8501e2bd727f7b2f

openstack-k8s-operators-content-provider FAILURE in 10m 46s
⚠️ 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 2m 02s

@dprince
Copy link
Contributor Author

dprince commented Dec 19, 2024

/test openstack-operator-build-deploy-kuttl

@abays
Copy link
Contributor

abays commented Dec 20, 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 8771703 link true /test openstack-operator-build-deploy-kuttl

Full PR test history. Your PR dashboard.

error: build error: Failed to push image: trying to reuse blob sha256:1e6b7297048ae70484705dda4e582fb8ad5778ea4c8ae464cf3e6a02ac439012 at destination: pinging container registry quay.rdoproject.org: Get "https://quay.rdoproject.org/v2/": dial tcp 38.129.56.158:443: i/o timeout

/test openstack-operator-build-deploy-kuttl

@dprince
Copy link
Contributor Author

dprince commented Dec 20, 2024

/test openstack-operator-build-deploy-kuttl

@dprince
Copy link
Contributor Author

dprince commented Dec 20, 2024

recheck

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/581a74be6d6f451c8b5232e9ad48b221

✔️ openstack-k8s-operators-content-provider SUCCESS in 1h 32m 36s
podified-multinode-edpm-deployment-crc FAILURE in 30m 57s
cifmw-crc-podified-edpm-baremetal RETRY_LIMIT in 22m 57s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 35m 21s
openstack-operator-tempest-multinode FAILURE in 33m 01s
✔️ openstack-operator-docs-preview SUCCESS in 2m 06s

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 is so it doesn't catch bindata files which we want to be checked in
after running 'make bindata'
Currently configured just to extra webhooks for the
infra operator as it is also a multigroup operator
which requires webhooks to be enabled
@dprince
Copy link
Contributor Author

dprince commented Dec 20, 2024

/retest

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/fbc9d847fb3f4b22905a48d70d98cdd9

✔️ openstack-k8s-operators-content-provider SUCCESS in 53m 34s
podified-multinode-edpm-deployment-crc FAILURE in 29m 15s
cifmw-crc-podified-edpm-baremetal FAILURE in 30m 36s
adoption-standalone-to-crc-ceph-provider RETRY_LIMIT in 36m 44s
openstack-operator-tempest-multinode FAILURE in 34m 43s
✔️ openstack-operator-docs-preview SUCCESS in 1m 55s

@dprince
Copy link
Contributor Author

dprince commented Dec 20, 2024

/test openstack-operator-build-deploy-kuttl

Copy link
Contributor

openshift-ci bot commented Dec 20, 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 dc9eda9 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.

@abays
Copy link
Contributor

abays commented Dec 22, 2024

recheck

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/f6eda7c0b0d249dba45d3fd218a73ee3

✔️ openstack-k8s-operators-content-provider SUCCESS in 2h 16m 52s
podified-multinode-edpm-deployment-crc POST_FAILURE in 1h 12m 42s
cifmw-crc-podified-edpm-baremetal POST_FAILURE in 1h 09m 28s
adoption-standalone-to-crc-ceph-provider FAILURE in 2h 04m 51s
openstack-operator-tempest-multinode POST_FAILURE in 1h 29m 45s
✔️ openstack-operator-docs-preview SUCCESS in 2m 04s

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

Successfully merging this pull request may close these issues.

5 participants