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

OLM integration #2062

Merged
merged 8 commits into from
Apr 3, 2019
Merged

OLM integration #2062

merged 8 commits into from
Apr 3, 2019

Conversation

slintes
Copy link
Contributor

@slintes slintes commented Feb 27, 2019

What this PR does / why we need it:
This PR adds needed manifests for integration with the Operator Lifecycle Management (OLM).

Special notes for your reviewer:

  • For generating the new manifests I codified most parts of of the operator deployment and RBAC rules, which makes them easier to be reused in the CSV and prerequisites manifest.
  • Since the CSV file does not support role references for defining needed permissions, the operator uses more fine grained rules now instead of just using the cluster-admin account. These rules are combined from what the operator needs itself, and what it needs indirectly for installing the (Cluster)Roles of the virt components. The latter rules are created by reusing and just concatenating the rules of the existing codified (Cluster)Roles.

See /docs/devel/olm-integration.md !

Release note:

Added manifests needed for integration of the KubeVirt operator with the Operator Lifecycle Manager and Operator Marketplace

@slintes slintes requested a review from davidvossel February 27, 2019 20:50
@kubevirt-bot kubevirt-bot added release-note Denotes a PR that will be considered when it comes time to generate release notes. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. size/XXL labels Feb 27, 2019
Copy link
Member

@davidvossel davidvossel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

\cc @rthallisey @djzager @lveyde

There are some parallel efforts going on here with kubevirt olm integration.

From what I understand, the kubevirt-olm project is investigating a unified olm CSV file that contains all the operators (kubevirt, cdi, etc...) that encompass openshift CNV. (which means it might make sense to call it the cnv-olm project instead)

It's unclear to me exactly how all this will shake out at the moment. What I don't want to see is the community trying to maintain two separate KubeVirt olm CSV files. We need one source of truth here for what it means to integrate KubeVirt with olm.

Since the KubeVirt CSV file is tightly coupled to the virt-operator, I think it makes sense for both of these pieces to live within the same repository (like @slintes is doing in this PR). From there I'd expect something like a CNV CSV file to either depend on the KubeVirt/CDI operator CRs, or somehow merge the KubeVirt/CDI maintained CSV files into a unified CNV CSV file.

The main point is, we want the KubeVirt CSV file bits consumed from and maintained within the KubeVirt repo.

Trying to talk about this problem set sounds like gibberish. Hopefully what I'm saying makes sense to everyone.

- name: Source Code
url: https://github.com/kubevirt/kubevirt
icon:
- base64data: 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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wow, lol. that's an interesting way for olm to retrieve the icon. We'll probably want to generate this base64 from the actual icon binary stored in the source tree.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good idea ;)


_The KubeVirt Open Cloud Service is Tech Preview. The goal before GA is to fully support updates._

keywords: ['KubeVirt', 'CNV', 'Virtualization']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i'm unsure if cnv belongs in here or not.

@slintes
Copy link
Contributor Author

slintes commented Feb 28, 2019

Since the KubeVirt CSV file is tightly coupled to the virt-operator, I think it makes sense for both of these pieces to live within the same repository (like @slintes is doing in this PR). From there I'd expect something like a CNV CSV file to either depend on the KubeVirt/CDI operator CRs, or somehow merge the KubeVirt/CDI maintained CSV files into a unified CNV CSV file.

The main point is, we want the KubeVirt CSV file bits consumed from and maintained within the KubeVirt repo.

Exactly, and that is IIUC what @fabiand had in mind, when he asked me to go on with this topic.
I would be happy to collaborate with the operator team, to make this effort useful for them and their unified CSV and / or operator of operators.

@fabiand
Copy link
Member

fabiand commented Feb 28, 2019

It's unclear to me exactly how all this will shake out at the moment. What I don't want to see is the community trying to maintain two separate KubeVirt olm CSV files. We need one source of truth here for what it means to integrate KubeVirt with olm.

Heya. There is some duplication atm, yes. But the duplication is not the goal :) It's a side effect of the reserach going on.
To me the goals of @slintes and @rthallisey and @lveyde are distinct:

@slintes is working on enabling to auto-generate all necessary OLM metadata for KubeVirt releases only in order to provide automated updates of KubeVirt only through OLM. This is a KubeVirt focused goal. KubeVirt is used standalone, and we want it to be easily consumable via OLM. This also implies that this metadta and update flows will be tested in our CI.

@rthallisey is working on enabling the orchestrated deployment of KubeVirt and other components (liek CDI, multus, etc). This is a slightly different problem, as it's orchestrating deployment of multiple components with OLM. And IIUCI then it's currently not clear how this orchestration can happen (there are options, but it's not yet decided). However @rthallisey and @lveyde work goes beyond kubevirt.

To me, ideally, @rthallisey and @lveyde can consume the work that @slintes is doing in one way or the other.
After all it's just a separation of concerns.

@rthallisey
Copy link
Contributor

I think the goals here have been captured well. We want to communicate how all the components are glued together in OLM. What we need is for components to have OLM manifests written and tested so we can consume them from a combined CNV perspective.

Breaking this down into items:
Kubevirt

  • CSV file to launch kubevirt-operator

CNV

  • Combination of component csv files

@fabiand
Copy link
Member

fabiand commented Feb 28, 2019

CNV

* Combination of component csv files

Not sure what CNV is in this context, but I agree about the kubevir part.

@djzager
Copy link

djzager commented Feb 28, 2019

Not sure what CNV is in this context, but I agree about the kubevir part.

Interestingly enough, as I am becoming more familiar with kubevirt, I have been looking more into what @rthallisey is saying here:

CNV

  • Combination of component csv files

My idea is that a combined kubevirt CSV would really be a dummy package that would specify version 1.0.0 of the combined kubevirt requires kubevirts.kubevirt.io/v1alpha3, ..., cdis.cdi.kubevirt.io/v1alpha1. When you make a subscription to kubevirt.v1.0.0 you get the specified versions of the individual components. An example would look something like:

apiVersion: operators.coreos.com/v1alpha1
kind: ClusterServiceVersion
metadata:
  name: kubevirt.v1.0.0
  annotations:
    tectonic-visibility: ocs
spec:
...
  installModes:
  - type: OwnNamespace
    supported: true
  - type: SingleNamespace
    supported: true
  - type: MultiNamespace
    supported: false
  - type: AllNamespaces
    supported: false
  install:
    strategy: ???
    ....maybe my dummy deployment if I use the deployment strategy...
  customresourcedefinitions:
    required:
    - name: kubevirts.kubevirt.io
      version: v1alpha3
      kind: KubeVirt
      displayName: KubeVirt
      description: KubeVirt
    - name: cdis.cdi.kubevirt.io
      version: v1alpha1
      kind: CDI
      displayName: CDI Application
      description: Represents an instance of a CDI application

@djzager
Copy link

djzager commented Feb 28, 2019

The main point is, we want the KubeVirt CSV file bits consumed from and maintained within the KubeVirt repo.

I forgot to reply to this when I got in this morning. I wholeheartedly agree with this. If it can be done though...I would prefer to not consume any bits and just mark the CRD that you own as required in the composite kubevirt CSV.

@davidvossel
Copy link
Member

I would prefer to not consume any bits and just mark the CRD that you own as required in the composite kubevirt CSV

yep, i'd prefer this, but I'm not sure how this would work without confusing people.

What would the olm CSV you all provide be called if KubeVirt is a dependency?

@djzager
Copy link

djzager commented Mar 4, 2019

What would the olm CSV you all provide be called if KubeVirt is a dependency?

that thought experiment I had blew up after a conversation with @rthallisey for exactly the reason that you mention. I ended up with something that looked like:

20190304_113105_scrot

Whereas I think what we would want is to have a single package "KubeVirt" that gets you all of the components required.

Edit: Adding a screenshot of what I think we want

20190304_132849_scrot

@kubevirt-bot kubevirt-bot added needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. labels Mar 9, 2019
@slintes
Copy link
Contributor Author

slintes commented Mar 9, 2019

Almost there...

@fabiand I need a few things:

  • a username and password for kubevirt on Quay.io (and I need to see how to use that in Travis)
  • push access to docker.io/kubevirt/builder (my docker hub account is slintes)
  • and we need to consider which ones of the new manifests to release on github
  • and when to push new CSVs to Quay
    • only on releases?
    • or also on every PR merge from master? we could use maybe a alpha channel for this, and beta/whatever for releases

To anyone who wants to have a look at this: you need to run make builder-build before doing anything else, until I pushed a new builder image. And I think /docs/devel/olm-integration.md is helpful :)

Copy link

@alexxa alexxa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@slintes Many compliments on Readme! So well written: very clear, detailed, all acronyms are defined (!!!) And the same for the PR description!


#### OLM Operator

Installs application operators based in information in ClusterServiceVersions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/based in information/based on the information

installed by Catalog Operator

- OperatorGroup:
declares on which namespaces OLM should operate
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

declares which namespaces OLM should operate on

provided and installed by Marketplace Operator based on CatalogSourceConfig

- Subscription:
declares which version of an operator to install (which channel from which source)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure, but I believe it's 'the operator'


## KubeVirt Manifests

Our OLM / Marketplace manifest templates live in /manifests/release/olm. As for all manifests, you need to run
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Our?

- a Subscription manifest: only needed when not created using the OKD console.
- a OperatorGroup manifest: can be created in the console, too??

Last but not least there is a preconditions manifest: if want to test the CSV manifest manually, without
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/if want/

  • if you want
  • if there is a need to test
  • if one wants

Then we have:
- the OperatorSource manifest: this will be deployed to your cluster.
- a Subscription manifest: only needed when not created using the OKD console.
- a OperatorGroup manifest: can be created in the console, too??
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

so, where can it be created?

These files are pushed to Quay (after they are processed with)

Then we have:
- the OperatorSource manifest: this will be deployed to your cluster.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"deploy to" - is a remote operation
"deploy on" - a local one
which one is the case here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well, no clue... We don't know if it's a remote or local cluster.
But thanks for your review! I think I resolved all other comments.

- clone github.com/operator-framework/operator-marketplace
- `cd deploy/upstream/manifests`
- `kubectl apply -f upstream/`
- if you get an error about rolebinding, repeat with `--validate=false`
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check >**Note:** Text here syntax

- `kubectl apply -f upstream/`
- if you get an error about rolebinding, repeat with `--validate=false`

## Sources
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Change plain urls to hyperlinks, please, everywhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@fabiand
Copy link
Member

fabiand commented Mar 11, 2019

  • a username and password for kubevirt on Quay.io (and I need to see how to use that in Travis)

I'll catch you offline for this one.

  • push access to docker.io/kubevirt/builder (my docker hub account is slintes)

@rmohr can you sort this out with @slintes (or Marc, reach out to Roman off-list)

  • and we need to consider which ones of the new manifests to release on github

Can you explain this a little more

  • and when to push new CSVs to Quay
    • only on releases?

For now yes.
(Once our CI is great (TM) then maybe for each merged PR into an alpha channel? :))

  • or also on every PR merge from master? we could use maybe a alpha channel for this, and beta/whatever for releases

Alpha at best. And IMO only once we have confidence that our CI is catching the worst things.
@davidvossel was actually recently discussing that we need CI for merged master and stbale branch PRs.

Thus: Once we have CI running on merged PRs on master and stable branches, maybe that's a good time to start playing with alpha release channel?
Or do you feel comfortable of enabling it now? And once we have the beefed up CI, then make them beta channels?

@slintes
Copy link
Contributor Author

slintes commented Mar 11, 2019

  • push access to docker.io/kubevirt/builder (my docker hub account is slintes)

@rmohr can you sort this out with @slintes (or Marc, reach out to Roman off-list)

already sorted out with Artyom, new builder image is pushed

  • and we need to consider which ones of the new manifests to release on github

Can you explain this a little more

we have several new manifests, some are pushed to Quay as "bundle". But I guess we also want to add some them to the release artifacts here on github?
We have (first 3 are in the bundle):

  • the CSV (I would say, yes, add to artifacts)
  • the KubeVirt CRD (not sure, probably not, it's part of the already existing operator manifest)
  • the Package description (no)
  • the preconditions manifest (no, this is mainly useful only for testing the CSV without the catalog/Marketplace operators)
  • the OperatorSource (yes)
  • the OperatorGroup (not sure, need to find out if this can be created in the UI)
  • the Subscription (no, created in the UI)
  • and when to push new CSVs to Quay

    • only on releases?

For now yes.
(Once our CI is great (TM) then maybe for each merged PR into an alpha channel? :))

  • or also on every PR merge from master? we could use maybe a alpha channel for this, and beta/whatever for releases

Alpha at best. And IMO only once we have confidence that our CI is catching the worst things.
@davidvossel was actually recently discussing that we need CI for merged master and stbale branch PRs.

Thus: Once we have CI running on merged PRs on master and stable branches, maybe that's a good time to start playing with alpha release channel?
Or do you feel comfortable of enabling it now? And once we have the beefed up CI, then make them beta channels?

fair point about the CI on merged PRs, let's wait for it.
So only releases for now, going into a beta channel? So that we use alpha later on for master?

endpoint: https://quay.io/cnr
registryNamespace: kubevirt
displayName: "KubeVirt"
publisher: "Red Hat"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

KubeVirt Project

Copy link

@djzager djzager left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of nits.

`cd _out/manifests/release/olm`
`kubectl apply -f kubevirt-operatorsource.yaml`
- check that a CatalogSourceConfig and a CatalogSource were created in the marketplace namespace
- WORKAROUND: the OKD console only shows operators from CatalogSources in the `olm` namespace. In order to get it there,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure how important this is, but I believe that olm should be openshift-operator-lifecycle-manager

`DOCKER_PREFIX="index.docker.io/<docker_user>" DOCKER_TAG="<tag>" make bazel-push-images`
- push the operator bundle:
`CSV_VERSION=<csv-version> QUAY_USER=<username> QUAY_PASSWORD=<password> make olm-push`
Note: you need to update the CSV version (and so run `make manifests`) on every push! (or maybe delete an old version before pushing again?)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(and so run make manifests) -> and also run..

@slintes slintes changed the title WIP OLM integration OLM integration Mar 12, 2019
@kubevirt-bot kubevirt-bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 12, 2019
Copy link
Contributor Author

@slintes slintes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I consider this not WIP anymore, ready for review

These files are pushed to Quay (after they are processed with)

Then we have:
- the OperatorSource manifest: this will be deployed to your cluster.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well, no clue... We don't know if it's a remote or local cluster.
But thanks for your review! I think I resolved all other comments.

- `kubectl apply -f upstream/`
- if you get an error about rolebinding, repeat with `--validate=false`

## Sources
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

kind: OperatorGroup
metadata:
name: {{.Namespace}}
namespace: {{.Namespace}}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm curious, if you don't specify:

spec:
    targetNamespaces:
        - {{.Namespace}}

Does this make it so the KubeVirt operator has to be watching all namespaces?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, at the moment the operator watches all namespaces anyway, it does not evaluate the injected target namespaces yet.

@slintes
Copy link
Contributor Author

slintes commented Mar 12, 2019

ci test please

1 similar comment
@slintes
Copy link
Contributor Author

slintes commented Mar 12, 2019

ci test please

@slintes
Copy link
Contributor Author

slintes commented Mar 14, 2019

while last week updating a CSV triggered a redeployment of at least cluster rules, today I see that the virt-operator deployment is not updated when changing the verbosity level. Looking at events and OLM code it seems that OLM misses the replaces field in the CSV manifest. So I need to fill that somehow with the last published CSV version of that same channel...

/hold

@kubevirt-bot kubevirt-bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 14, 2019
@slintes
Copy link
Contributor Author

slintes commented Mar 14, 2019

meh...and when you set the replaces field, the bundle uploaded to Quay also needs to contains that old CSV...

- KubeVirt
- Virtualization
version: {{.CsvVersion}}
maturity: alpha
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what impact this would have but I noticed that package refers to a beta channel but this says the CSV is alpha

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not sure if those fields are related, will check, thx!

{{.OperatorDeploymentSpec}}
customresourcedefinitions:
owned:
- name: kubevirts.kubevirt.io
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking more about this over the past week or so. Not exposing the underlying CRDs that the virt-operator creates prevents other operators from relying on these APIs. Is that use-case something kubevirt wishes to support? if yes and now is not the time, is there an issue to track that case?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason / usecase why other operators would depend on the underlying CRDs, and not the KubeVirt application CRD?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I have an operator that creates virtual machines. That seems reasonable.

@slintes
Copy link
Contributor Author

slintes commented Mar 26, 2019

need to test if Travis integration works as expected, but otherwise this is ready for another round of review
/hold cancel

@kubevirt-bot kubevirt-bot removed the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Mar 26, 2019
Copy link
Member

@davidvossel davidvossel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 looks excellent! Great work @slintes

is there anything else we need to wait on before merging this?

specDescriptors:
- description: The ImagePullPolicy to use for the KubeVirt components.
displayName: ImagePullPolicy
path: imagePullPolicy
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

imageTag and imageRegistry exist now as well

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good catch, fixed

slintes added 8 commits April 2, 2019 20:42
For doing that without manifest duplication, the operator RBAC and
deployment manifests are generated now too.

Signed-off-by: Marc Sluiter <[email protected]>
Signed-off-by: Marc Sluiter <[email protected]>
Signed-off-by: Marc Sluiter <[email protected]>
…t replaces field of new CSV

Signed-off-by: Marc Sluiter <[email protected]>
@slintes
Copy link
Contributor Author

slintes commented Apr 2, 2019

Thanks for reviewing @davidvossel !
The only thing I'd like to add is testing this stuff. But installing OLM and Marketplace manually doesn't make sense (I think the Openshift 3.11 OLM is quite old, not sure if Marketplace can be enabled), so I'd like to see if that is possible as soon as we have a OpenShift 4.x test lane.

@davidvossel
Copy link
Member

The only thing I'd like to add is testing this stuff. But installing OLM and Marketplace manually doesn't make sense

yeah, we aren't there yet with a openshift 4.x lane. I think there's value for this to go in now so projects like the 'hyperconverged-cluster-operator' can at least begin consuming the initial work here.

Once a stable 4.x provider lands, we should investigate functional tests.

@stu-gott
Copy link
Member

stu-gott commented Apr 2, 2019

This is really excellent work @slintes! I've made a moderate pass over the PR, but owe you a deeper look. However, I'd defer to @davidvossel if he thinks this is ready.

@slintes
Copy link
Contributor Author

slintes commented Apr 3, 2019

I think there's value for this to go in now so projects like the 'hyperconverged-cluster-operator' can at least begin consuming the initial work here

yes, I didn't mean that I want to wait for 4.x. And this stuff is already used by the hyperconverged cluster operator from my fork, so I absolutely also want to get this. So I'm going to merge this.

Thx all for reviews!

@slintes slintes merged commit 04b9095 into kubevirt:master Apr 3, 2019
@slintes slintes deleted the olm branch April 3, 2019 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release-note Denotes a PR that will be considered when it comes time to generate release notes. size/XXL
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants