{"id":28480356,"url":"https://github.com/seldonio/seldon-deploy-operator","last_synced_at":"2025-06-14T21:04:56.307Z","repository":{"id":48497754,"uuid":"266504384","full_name":"SeldonIO/seldon-deploy-operator","owner":"SeldonIO","description":"Seldon Deploy installation","archived":false,"fork":false,"pushed_at":"2021-07-22T18:33:13.000Z","size":632,"stargazers_count":4,"open_issues_count":4,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-07T19:06:13.366Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Makefile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeldonIO.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-24T08:58:27.000Z","updated_at":"2023-09-27T13:02:53.000Z","dependencies_parsed_at":"2022-08-29T22:51:31.495Z","dependency_job_id":null,"html_url":"https://github.com/SeldonIO/seldon-deploy-operator","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/SeldonIO/seldon-deploy-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeldonIO%2Fseldon-deploy-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeldonIO%2Fseldon-deploy-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeldonIO%2Fseldon-deploy-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeldonIO%2Fseldon-deploy-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeldonIO","download_url":"https://codeload.github.com/SeldonIO/seldon-deploy-operator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeldonIO%2Fseldon-deploy-operator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259884428,"owners_count":22926442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-07T19:06:14.211Z","updated_at":"2025-06-14T21:04:56.300Z","avatar_url":"https://github.com/SeldonIO.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Seldon Deploy Operator\n\nThis operator can be used for installing instances of Seldon Deploy. Built with operator-sdk (v1.8.0).\n\nIntended as a [Red Hat Marketplace operator](https://redhat-connect.gitbook.io/partner-guide-for-red-hat-openshift-and-container/certify-your-operator/certify-your-operator-bundle-image/creating-operator-bundle-image-project) but can be run outside openshfit.\n\nIt is a helm-based operator. So basically an image that runs helm and can install a helm chart in response to a CRD being posted. The CRD maps directly to a values file.\n\nThere are dependencies needed for running Deploy and marketplace imposes restrictions on these. See [installation google doc](https://docs.google.com/document/d/1a_KHXZI4H_2-CdJl89ejB_zGNsq_gCDDmD6jMCsF3gc/edit?usp=sharing)\n\n## Building\n\nDependencies\n\n * [Operator SDK](https://sdk.operatorframework.io/)\n   * Tested with 1.8.0\n\n\nTo build and push just the operator:\n```bash\nmake docker-build\nmake docker-push\n```\nTo also build and push the bundle:\n```bash\nmake update_openshift\n```\n\n## Testing\n\n### KIND Full Deploy Stack\n\nTo test in KIND with entire stack:\n\n* First run kind-setup.sh from seldon-deploy repo.\n* Next run `make install`\n* Then `make deploy`\n* Then `kubectl apply -n seldon-system -f ./examples-testing/kind-full-setup.yaml`\n* Then `make open_kind`\n\n### KIND no dependencies\n\nThis is a minimal setup just for checking installation. No Deploy features work.\n\n* `kind create cluster`\n* `kubectl create ns seldon-logs`\n* `make install`\n* `make deploy`\n* `kubectl apply -n seldon-system -f ./examples-testing/kind-minimal-setup.yaml`\n*  Port-forward to deploy (`kubectl port-forward -n seldon-system svc/seldondeploy-sample-kind-full-seldon-deploy 8080:80`) \n[to see UI](http://localhost:8080/seldon-deploy/), though you can't deploy anything in this setup. \n\n### OLM Deployment\n\nFirst need a cluster e.g. `kind create cluster`.\n\nFor KIND or other clusters without OLM, we [first install OLM](https://sdk.operatorframework.io/docs/olm-integration/quickstart-bundle/)\n\n* Install OLM - `operator-sdk olm install` (tested with 1.8.0)\n\n* Install marketplace - `make operator-marketplace`\n\nNow [create](https://redhat-connect.gitbook.io/certified-operator-guide/ocp-deployment/operator-metadata/creating-the-metadata-bundle), push and [validate the bundle](https://redhat-connect.gitbook.io/certified-operator-guide/ocp-deployment/operator-metadata/creating-the-csv)\n\n* All done in `make update_openshift`\n\nCreate a catalog_source\n\n```bash\nkubectl create -f tests/catalog-source.yaml\n```\n\nCheck\n\n```\nkubectl get catalogsource seldon-deploy-catalog -n marketplace -o yaml\n```\n\nCreate operator group\n\n```bash\nkubectl create -f tests/operator-group.yaml\n```\n\nCreate Subscription\n\n```bash\nkubectl create -f tests/operator-subscription.yaml\n```\nCheck the Subscription and CSV:\n```bash\nkubectl get subscriptions.operators.coreos.com -n marketplace seldon-deploy-operator-subsription -o yaml\nkubectl get ClusterServiceVersion -n marketplace\n```\nNote here the operator will be namespace only ([OwnNamespace mode](https://catalog.redhat.com/software/operators/detail/5f0f35842991b4207fcdb202/deploy)) so will only manage SeldonDeploy instances in marketplace namespace.\n\nNow we create a deploy instance.\n\n* `kubectl create ns seldon-logs || true`\n* `kubectl apply -n marketplace -f ./examples-testing/kind-minimal-setup.yaml` (or full if stack is present, see above for `kind-full-setup.yaml`)\n\nIf using `kind-minimal-setup.yaml` then this is all you can do.\n\nIf using the full stack then we can run demos. We'll need to apply a license, either in the UI or using `make apply_license_kind`. Open with `make open_kind`\n\n### Testing on OpenShift\n\nBefore testing a new version make sure `make update_openshift` has been run.\n\nCreate catalog source\n```bash\nkubectl create -f tests/catalog-source-openshift.yaml\n```\nCheck\n```bash\nkubectl get catalogsource seldon-deploy-catalog -n openshift-marketplace -o yaml\n```\nChoose the operator in the UI. Be sure to get the right version.\n\nIf clusterwide (initially only option) then check with:\n```bash\nkubectl get subscriptions.operators.coreos.com -n openshift-operators seldon-deploy-operator -o yaml\n```\nAdjust namespace if not clusterwide.\n\nUse [installation google doc](https://docs.google.com/document/d/1a_KHXZI4H_2-CdJl89ejB_zGNsq_gCDDmD6jMCsF3gc/edit?usp=sharing) for setting up dependencies or running minimal version.\n\nTest as applicable e.g. using Deploy demos. The google doc points at how to open or you can use `make open_cluster_with_istio`.\n\nNote you can only test a demo if you've got the necessary dependencies. So not batch as there are [limitations for argo and minio](https://github.com/SeldonIO/seldon-deploy-operator/issues/13)\n\n\n### Scorecard\n\nFirst have a bundle built. Then `make scorecard`. But no point running this.\n\nProblem is that it deploys the manifest from config/samples, which is the alm-examples one. That needs the dependencies.\n\nThat example is the one that shows up in marketplace. Would need RH to decouple scorecard from alm-examples to use this.\n\n## Maintaining This Project\n\n### Steps for Publishing a New Deploy Version\n\n 1. First check the deploy image is published from deploy repo with `make build_image_redhat` and `make push_to_dockerhub_ubi`. Ensure you are in the release branch, e.g. `git checkout v1.2.1`\n 1. This new version of the seldonio/seldon-deploy-server-ubi image should be plugged into the values file. You could plug into deploy's [values-redhat.yaml](https://github.com/SeldonIO/seldon-deploy/blob/master/tools/seldon-deploy-install/sd-setup/helm-charts/seldon-deploy/values-redhat.yaml) before release or in [seldon-deploy-operator](helm-charts/seldon-deploy/values-redhat.yaml) when copied over (later step). \n 1. Then in seldon-deploy-operator change the version in [version.txt](version.txt) and also [replaces.txt](replaces.txt) (which is the version before this).\n 1.  If the target openshift version has changed then change that too (in the various bundle-*.Dockerfile files inc [bundle.Dockerfile](bundle.Dockerfile))\n 1. Run `make get-helm-chart` to pull in latest helm chart. Will need to save values.yaml if you have changed this as it will be overwritten.\n    * Note that the deploy image (seldonio/seldon-deploy-server-ubi) may not have been updated in the deploy [values-redhat.yaml](helm-charts/seldon-deploy/values-redhat.yaml) file (see first step) and if so you'll need to update here.\n 1. If there have been changes in the values file then you'll have to update examples in examples-testing and [config/samples/machinelearning.seldon_v1alpha1_seldondeploy.yaml](config/samples/machinelearning.seldon_v1alpha1_seldondeploy.yaml)\n    * [config/samples/machinelearning.seldon_v1alpha1_seldondeploy.yaml](config/samples/machinelearning.seldon_v1alpha1_seldondeploy.yaml) is best updated by copy-pasting the [values-redhat.yaml](helm-charts/seldon-deploy/values-redhat.yaml) and changing the indentation but [examples-testing](examples-testing/) files need to be updated with the specific changes\n    * You can look at the history of the values file in deploy to determine what has changed since last release.\n 1. Update referenced images in the values file will come across with the values file but [config/samples]((config/samples/machinelearning.seldon_v1alpha1_seldondeploy.yaml)), [examples-testing](examples-testing/), [manager.yaml](config/manager/manager.yaml) and [packagemanifests-certified.sh](packagemanifests-certified.sh) need manual update to correct image tags (see [IMAGES.md](IMAGES.md))\n    * Updating the above-referenced files should cover all uses of the dependent images (those referenced in values-redhat.yaml and [IMAGES.md](IMAGES.md)) but best to search workspace for each version to make sure none missed.\n 1. Update the `opm_index` and `opm_index_certified` commands in the Makefile to include the previous version in the list of images. If you don't add all versions (inc past) to its list, you'll hit `bundle specifies a non-existent replacement` error.\n 1. To build and push test images for deploy operator and its bundle you can run `make update_openshift` (this is run during testing steps but can also run first).\n 1.  Run through all the tests above - kind and in openshift and with marketplace and all the dependencies. Note these tests use quay/dockerhub images. The corresponding images in red hat container registry have to be approved before use.\n 1. If anything has changed in an openshift version (e.g. a change to user-workload-monitoring), update the docs (see 'publishing docs' below).\n 1. Before publishing update the `create_bundles_cert` and `push_bundles_cert` make targets in [Makefile](Makefile) to include the new version.\n 1. Publish images except bundle - see [IMAGES.md](IMAGES.md) for how to publish (all make targets listed there).\n 1. Run `make openshift_update_cert`\n 1. Publish bundle except bundle - see [IMAGES.md](IMAGES.md) for how to publish\n 1. Publish docs - see docs section below\n 1.  After publication contact IBM (see contacts below) to confirm new version of [bundle](https://catalog.redhat.com/software/containers/seldonio/seldon-deploy-operator-bundle/5f77569a29373868204224e3) has gone to their queue \n \n [Video explaining the above](https://us02web.zoom.us/rec/share/uUZBYABuiPJmtZU4jX67hZN8z8wy6jdbj8Tp4jAGRO_iK7kphsg1i2a3DEn-gxZ2.-dlNKTUa032I79P4)\n \n### Contacts\n\nSee https://seldonio.atlassian.net/wiki/spaces/COMPANY/pages/1201078285/Tech+Contacts\n\n### Systems Involved\n\nRCR - redhat container registry - integrated with connect.redhat.com for publishing official images.\nhttps://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=f4hgces2dvxqirpcsir2uiqbe4\u0026v=65l42gglwnfjheao6fu4pmxeti\n\nconnect.redhat.com - system for publishing images and bundles and other RH stuff (including raising issues with the system via https://connect.redhat.com/support/technology-partner/).\nhttps://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=pbdteciyqnp3rsxpcrkaxevftm\u0026v=po7kyvksukhlrsurwmygolab3a\n\nQuay.io - for test images before switching to RCR for publication (as that has manual steps).\nhttps://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=taumgl2tiapt2dnphzbugepjxy\u0026v=65l42gglwnfjheao6fu4pmxeti\n\nRed Hat marketplace workbench for listing documentation. You have to [go through the correct red hat marketplace partner link](https://marketplace.redhat.com/partner/products) to get to it. And sometimes you have to hit the edit button multiple times.\nhttps://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=vdgkpe3ii5bm6vkzycvw4tepni\u0026v=po7kyvksukhlrsurwmygolab3a\n\ncloud.redhat.com for creating clusters\nhttps://seldonio.atlassian.net/wiki/spaces/COMPANY/pages/159318256/Creating+an+Openshift+cluster\n\n### Testing on OpenShift\n\nThere are multiple ways to setup OpenShift clusters but we have a [preferred method for seldon test clusters](https://seldonio.atlassian.net/wiki/spaces/COMPANY/pages/159318256/Creating+an+Openshift+cluster).\n\n### Pushing Images\n\nTo push images you need `~/.config/seldon/seldon-core/redhat-image-passwords.sh` configured. Get from [1password](https://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=f4hgces2dvxqirpcsir2uiqbe4\u0026v=65l42gglwnfjheao6fu4pmxeti)\n\n### Publishing Images of Dependencies\n\nImages are published with Makefiles but some in core, some deploy and some here. See [IMAGES.md](IMAGES.md) for details.\n\nNote that the Makefile commands are only part of it. You also have to press 'publish' in the Red Hat UI.\n\nIf you need a new image for a new component then that's a new project and requires filling out a form for Red Hat.\n\n### Publishing Operator\n\nEach new release needs to be based on the latest seldon deploy helm chart. The makefile references a get-helm-chart script for this.\n\nNote that the makefile refers to a particular version in version.txt.\n\nThere are separate folders for certified vs not certified versions. This is because certified has to be hosted in redhat container registry and approved so can't iterate so fast on that.\n\nOtherewise the operator is itself an image. It's just a special type of project in the RH UI with its own special checks.\n\nA good walkthrough is https://redhat-connect.gitbook.io/partner-guide-for-red-hat-openshift-and-container/certify-your-operator/certify-your-operator-bundle-image/creating-operator-bundle-image-project\n\n### Publishing Docs\n\nThe listing is maintained in https://marketplace.redhat.com/partner/products/9697de171a307b0dce64e423c2d7946a\n (replacing https://www.ibm.com/marketplace/workbench/provider/dashboard)\n\nThe account for this is in [1password](https://start.1password.com/open/i?a=SSGQBEYWPRHN7GYLNPQYAOU7QA\u0026h=team-seldon.1password.com\u0026i=vdgkpe3ii5bm6vkzycvw4tepni\u0026v=po7kyvksukhlrsurwmygolab3a)\n\nAccess management is handled at:  http://marketplace.redhat.com/en-us/account/partner-management\n\nNote it needs markdown https://docs.google.com/document/d/1a_KHXZI4H_2-CdJl89ejB_zGNsq_gCDDmD6jMCsF3gc/edit?usp=sharing\n\n### Updating Quickstarts\n\nFork https://github.com/red-hat-data-services/odh-dashboard\n\nCreate a PR to updates the [seldon quickstarts](https://github.com/red-hat-data-services/odh-dashboard/tree/master/data/quickstarts) - Usually by updating the links to new version of Deploy but might also need to change actually demo instructions. \n\n### Troubleshooting Publication Issues\n\nIf you hit a bug in the Red Hat systems then raise an issue via https://connect.redhat.com/support/technology-partner/\n\nWe also have a slack channel and some direct contacts.\n\n### Common Mistakes/Issues/Gotchas\n\n* Image vulnerability scans can sometimes take a long time - occasionally as much as 13 hrs\n* Scans sometimes come back without a reason - if so raise issue https://connect.redhat.com/support/technology-partner/\n* Don't worry too much about category when raising these issues - there's rarely a good one but they get re-routed\n* If vulnerability scan fails without a reason it's like a base image needing updating\n* Dependent images must be published first\n* End user has to go through marketplace url when installing, not operatorhub (different from testing flow)\n* Be careful when following RH docs - easy to miss something\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseldonio%2Fseldon-deploy-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseldonio%2Fseldon-deploy-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseldonio%2Fseldon-deploy-operator/lists"}