st4sd-olm
An Operator Lifecycle Manager (OLM) operator to automate installing and upgrading ST4SD deployments on OpenShift clusters
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.1%) to scientific vocabulary
Repository
An Operator Lifecycle Manager (OLM) operator to automate installing and upgrading ST4SD deployments on OpenShift clusters
Basic Info
- Host: GitHub
- Owner: st4sd
- License: apache-2.0
- Language: Go
- Default Branch: main
- Size: 634 KB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 2
- Releases: 10
Metadata Files
README.md
Deploy ST4SD using OperatorLifecycleManager (OLM)
This repository contains the code to build the Operator for deploying the Simulation Toolkit for Scientific Discovery (ST4SD). The ST4SD-Runtime is a python framework, and associated services, for creating and deploying virtual-experiments - data-flows which embody the measurement of properties of systems.
There are three parts to the ST4SD-Runtime
- st4sd-runtime-core: The core python framework for describing and executing virtual experiments
- st4sd-runtime-k8s: Extensions which enable running and managing virtual-experiments on k8s clusters
- st4sd-runtime-service: A RESTapi based service allowing users to add, start, stop and query virtual-experiments
Features
- Cross-platform data-flows
- Supports multiple backends (LSF, OpenShift/Kubernetes, local)
- Abstracts the differences between backends allowing a single component description to be used
- Variables can be used to encapsulate platform specific options
- Can define component and platform specific environments
- Co-processing model
- Consumers can be configured to run repeatedly while their producers are alive
- Simple to replicate workflow sub-graphs over sets of inputs
- Supports
do-whileconstructs - Handles task persistence across backend allocation windows and allows user customisable restarts
- Deploy workflows directly from GitHub (Kubernetes stack)
- Store and retrieve data and metadata from st4sd-datastore
More Information
Our documentation website contains detailed information on installing ST4SD, writing and running virtual-experiments, along with much more.
Installation
You can install ST4SD by first installing this operator in your cluster, configuring it, and then asking it to deploy ST4SD Cloud under a namespace in your cluster.
Requirements:
- Access to an OpenShift cluster with
cluster-adminpermissions- Required for creation of a kubernetes objects (such as CustomResourceDefinition and Role Based Access Control (RBAC)).
- OpenShift command line tools (
ocv4.9+)- Instructions: https://docs.openshift.com/container-platform/4.9/cli_reference/openshift_cli/getting-started-cli.html
- Install stable version of
ocfrom https://mirror.openshift.com/pub/openshift-v4/clients/ocp/stable/ - It is good practice to periodically update your
occommand line utility to ensure that yourocbinary contains the latest patches and bug-fixes.
Before you continue any further, ensure that you have logged in your OpenShift cluster using the oc command-line interface.
Install the operator
Add the Simulation Toolkit for Scientific Discovery (ST4SD) operator to the Operator Catalog of your OpenShift cluster:
oc apply -f https://raw.githubusercontent.com/st4sd/st4sd-olm/main/examples/deploy.yaml
Then wait for the pod st4sd-catalog-xxxx in the namespace openshift-marketplace to transition to the Running state.
Configure the operator
Navigate to the OperatorHub in the OpenShift Web Console of your OpenShift cluster and install the operator Simulation Toolkit for Scientific Discovery (ST4SD) in the openshift-operators namespace.
Expand to see step-by-step instructions
1. Switch back to the OpenShift Web Console page on your browser. Make sure you are in the `Administrator` view. 2. On the left panel, expand the menu `Operators`, and then click the `OperatorHub` option. 3. In the search box type `ST4SD`. The right panel should filter out unrelated entries and display one with the label `Simulation Toolkit For Scientific Discovery (ST4SD)`. 4. Click on the `Simulation Toolkit For Scientific Discovery (ST4SD)` entry and wait for a new panel to pop up. Click the `Install` button at the top left of this panel - you will transition to a new page. If the button label is `Uninstall`, then the operator is already installed on your cluster. In this case, you do not need to re-install the operator, you may skip to the last step. 5. In the new page, select the `stable` update channel. Set the `Installed Namespace` dropdown to `openshift-operators`. Set `Update approval` to `Automatic` if you wish that ST4SD deployments you create via this operator to be auto-updated. Set it to `Manual` if you wish to manually update this operator and therefore control when you receive new updates to your ST4SD instance. We recommend using the option `Automatic`. Finally, click the `Install` button at the bottom left - you will transition to a new page. The page reports the installation status of the operator. Wait for it to become `Installed operator - ready for use`. 6. Verify that the `st4sd-olm` operator pod is up and running. You should see it in the namespace that you deployed the operator in Step 11 (e.g. `openshift-operators`).If you followed the above, and you are a cluster-admin, you are now able to install ST4SD in any namespace on your cluster using the
st4sd-olm operator (this repository). You can enable other users of your Cluster to install st4sd in their own
namespaces by granting them Role-Based Access Control (RBAC) privileges to handle
simulationtoolkits.deploy.st4sd.ibm.com objects in their namespaces. You can find more information about this in our documentation website.
See example-role.yaml for an example Role object you can use (with a RoleBinding) to
give users permissions to deploy ST4SD in a namespace.
Note: Update the
metadata.namespacefield in example-role.yaml to the name of the namespace that you wish for users to deploy ST4Sd to. Thenoc apply -f examples/example-role.yaml. Now, you can create a RoleBinding object in the same namespace and use the RoleBinding to map users to this new Role. These users will be able to install ST4SD usingst4sd-olmin this namespace.
Deploy ST4SD Cloud using the operator
- Create the 3 PVCs following the st4sd-deployment instructions. In short create 1 PVC for each of the 3 fields in the basic.yaml:
spec.setup.pvcInstances: The PersistentVolumeClaim (PVC) (e.g.workflow-instances) should support mounting under multiple pods in Read/Write, filesystem mode (i.e. ReadWriteMany). ST4SD stores the outputs of components on this PVC.spec.setup.pvcDatastore: This PVC (e.g.datastore-mongodb) should support mounting on multiple pods in Read/Write, filesystem mode (i.e. ReadWriteMany). The ST4SD Datastore uses this PVC to store its MongoDB database.spec.setup.pvcRuntimeService: This PVC (e.g.runtime-service) should support mounting under multiple pods in Read/Write, filesystem mode (i.e. ReadWriteMany). The ST4SD Runtime Service uses this PVC to store the metadata of virtual experiments of your ST4SD Registry.
(Optional) Configure the Internal Experiments feature of st4sd-runtime-service. This switches on the Build Canvas functionality of st4sd-runtime-service thereby enabling users to create experiments using an interactive Build Canvas. These "internal experiments" are stored on a S3 bucket and users have the option of making changes to them using the same Build Canvas feature. To enable this feature record the credentials and information of a S3 bucket in a Kubernetes secret using the following keys:
- S3_ENDPOINT (required)
- S3_BUCKET (required)
- S3ACCESSKEY_ID (optional)
- S3SECRETACCESS_KEY (optional)
- S3_REGION (optional)
The st4sd-runtime-service will store the DSL 2.0 workflow definitions in the referenced S3 bucket with the prefix
experiments/.(Optional) Configure the Graph Library feature of st4sd-runtime-service. This feature enables users to access re-usable Graph recipes that are stored in a Graph Library. They can also manage the contents of the library. To enable this feature record the credentials and information of a S3 bucket (can be the same as the one above) in a Kubernetes secret using the following keys:
- S3_ENDPOINT (required)
- S3_BUCKET (required)
- S3ACCESSKEY_ID (optional)
- S3SECRETACCESS_KEY (optional)
- S3_REGION (optional)
The st4sd-runtime-service will store the Graph Templates in the referenced S3 bucket with the prefix
library/.Modify the basic.yaml YAML file to modify the names of the PVCs (unless you used the ones we suggested above) and the desired RouteDomain of your ST4SD instance
- If you are using an OpenShift cluster on IBM Cloud,
st4sd-olmcan auto-detect your cluster ingress. You can use${CLUSTER_INGRESS}to reference it in yourspec.setup.routeDomainfield (see example). - If you have created the Secret(s) for the Internal Experiments (i.e. Build Canvas) and/or Graph Library also fill in the optional fields
spec.secretS3InternalExperimentsandspec.secretS3InternalExperiments.
- If you are using an OpenShift cluster on IBM Cloud,
Create the basic.yaml YAML file (e.g.
oc apply -f examples/basic.yaml).
Note: If you have already installed ST4SD Cloud manually using the st4sd-deployment instructions then inspect the
deployment-options.yamlfile you created for ST4SD. You can re-use the PersistentVolumeClaim (PVC) objects androutePrefixyou selected when you deployed ST4SD manually. The st4sd-olm operator will import your existing deployment and automatically keep it up to date.
References
If you use ST4SD in your projects, please consider citing the following:
bibtex
@software{st4sd_2022,
author = {Johnston, Michael A. and Vassiliadis, Vassilis and Pomponio, Alessandro and Pyzer-Knapp, Edward},
license = {Apache-2.0},
month = {12},
title = {{Simulation Toolkit for Scientific Discovery}},
url = {https://github.com/st4sd/st4sd-runtime-core},
year = {2022}
}
Owner
- Name: ST4SD: Simulation Tookit for Scientific Discovery
- Login: st4sd
- Kind: organization
- Website: https://st4sd.github.io/overview/
- Repositories: 5
- Profile: https://github.com/st4sd
Citation (CITATION.cff)
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!
cff-version: 1.2.0
title: Simulation Toolkit for Scientific Discovery
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Michael A.
family-names: Johnston
affiliation: IBM Research
- given-names: Vassilis
family-names: Vassiliadis
affiliation: IBM Research
- given-names: Alessandro
family-names: Pomponio
affiliation: IBM Research
orcid: 'https://orcid.org/0000-0003-1655-7500'
- given-names: Edward
family-names: Pyzer-Knapp
affiliation: IBM Research
identifiers:
- type: url
value: 'https://github.com/st4sd/st4sd-runtime-core'
description: ST4SD Runtime
repository-code: 'https://github.com/st4sd/st4sd-runtime-core'
url: 'https://st4sd.github.io/overview/'
keywords:
- accelerated-discovery
- simulation
- toolkit
license: Apache-2.0
date-released: '2022-12-08'
GitHub Events
Total
- Release event: 3
- Push event: 1
- Create event: 3
Last Year
- Release event: 3
- Push event: 1
- Create event: 3
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 0
proxy.golang.org: github.com/st4sd/st4sd-olm
- Homepage: https://github.com/st4sd/st4sd-olm
- Documentation: https://pkg.go.dev/github.com/st4sd/st4sd-olm#section-documentation
- License: Apache-2.0
Rankings
Dependencies
- gcr.io/distroless/static nonroot build
- golang 1.19 build
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
- github.com/BurntSushi/toml v1.2.1
- github.com/MakeNowJust/heredoc v1.0.0
- github.com/Masterminds/goutils v1.1.1
- github.com/Masterminds/semver/v3 v3.2.0
- github.com/Masterminds/sprig/v3 v3.2.3
- github.com/Masterminds/squirrel v1.5.3
- github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d
- github.com/beorn7/perks v1.0.1
- github.com/cespare/xxhash/v2 v2.2.0
- github.com/chai2010/gettext-go v1.0.2
- github.com/containerd/containerd v1.6.18
- github.com/cyphar/filepath-securejoin v0.2.3
- github.com/davecgh/go-spew v1.1.1
- github.com/docker/cli v20.10.22+incompatible
- github.com/docker/distribution v2.8.1+incompatible
- github.com/docker/docker v20.10.22+incompatible
- github.com/docker/docker-credential-helpers v0.7.0
- github.com/docker/go-connections v0.4.0
- github.com/docker/go-metrics v0.0.1
- github.com/docker/go-units v0.5.0
- github.com/emicklei/go-restful/v3 v3.10.1
- github.com/evanphx/json-patch v5.6.0+incompatible
- github.com/evanphx/json-patch/v5 v5.6.0
- github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f
- github.com/fatih/color v1.13.0
- github.com/fsnotify/fsnotify v1.6.0
- github.com/go-errors/errors v1.4.2
- github.com/go-gorp/gorp/v3 v3.1.0
- github.com/go-logr/logr v1.2.3
- github.com/go-logr/zapr v1.2.3
- github.com/go-openapi/jsonpointer v0.19.5
- github.com/go-openapi/jsonreference v0.20.0
- github.com/go-openapi/swag v0.22.3
- github.com/gobwas/glob v0.2.3
- github.com/gogo/protobuf v1.3.2
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
- github.com/golang/protobuf v1.5.2
- github.com/google/btree v1.1.2
- github.com/google/gnostic v0.6.9
- github.com/google/go-cmp v0.5.9
- github.com/google/gofuzz v1.2.0
- github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
- github.com/google/uuid v1.3.0
- github.com/gorilla/mux v1.8.0
- github.com/gosuri/uitable v0.0.4
- github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79
- github.com/huandu/xstrings v1.4.0
- github.com/imdario/mergo v0.3.13
- github.com/inconshreveable/mousetrap v1.1.0
- github.com/jmoiron/sqlx v1.3.5
- github.com/josharian/intern v1.0.0
- github.com/json-iterator/go v1.1.12
- github.com/klauspost/compress v1.15.13
- github.com/lann/builder v0.0.0-20180802200727-47ae307949d0
- github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0
- github.com/lib/pq v1.10.7
- github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
- github.com/mailru/easyjson v0.7.7
- github.com/mattn/go-colorable v0.1.13
- github.com/mattn/go-isatty v0.0.17
- github.com/mattn/go-runewidth v0.0.14
- github.com/matttproud/golang_protobuf_extensions v1.0.4
- github.com/mitchellh/copystructure v1.2.0
- github.com/mitchellh/go-wordwrap v1.0.1
- github.com/mitchellh/reflectwalk v1.0.2
- github.com/moby/locker v1.0.1
- github.com/moby/spdystream v0.2.0
- github.com/moby/term v0.0.0-20221205130635-1aeaba878587
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
- github.com/modern-go/reflect2 v1.0.2
- github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
- github.com/morikuni/aec v1.0.0
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
- github.com/onsi/ginkgo/v2 v2.6.0
- github.com/onsi/gomega v1.24.1
- github.com/opencontainers/go-digest v1.0.0
- github.com/opencontainers/image-spec v1.1.0-rc2
- github.com/openshift/api v0.0.0-20221013123534-96eec44e1979
- github.com/openshift/client-go v0.0.0-20220603133046-984ee5ebedcf
- github.com/peterbourgon/diskv v2.0.1+incompatible
- github.com/pkg/errors v0.9.1
- github.com/prometheus/client_golang v1.14.0
- github.com/prometheus/client_model v0.3.0
- github.com/prometheus/common v0.39.0
- github.com/prometheus/procfs v0.9.0
- github.com/rivo/uniseg v0.4.3
- github.com/rubenv/sql-migrate v1.2.0
- github.com/russross/blackfriday/v2 v2.1.0
- github.com/shopspring/decimal v1.3.1
- github.com/sirupsen/logrus v1.9.0
- github.com/spf13/cast v1.5.0
- github.com/spf13/cobra v1.6.1
- github.com/spf13/pflag v1.0.5
- github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
- github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
- github.com/xeipuuv/gojsonschema v1.2.0
- github.com/xlab/treeprint v1.1.0
- go.starlark.net v0.0.0-20221205180719-3fd0dac74452
- go.uber.org/atomic v1.10.0
- go.uber.org/multierr v1.9.0
- go.uber.org/zap v1.24.0
- golang.org/x/crypto v0.5.0
- golang.org/x/net v0.5.0
- golang.org/x/oauth2 v0.3.0
- golang.org/x/sync v0.1.0
- golang.org/x/sys v0.4.0
- golang.org/x/term v0.4.0
- golang.org/x/text v0.6.0
- golang.org/x/time v0.3.0
- gomodules.xyz/jsonpatch/v2 v2.2.0
- google.golang.org/appengine v1.6.7
- google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef
- google.golang.org/grpc v1.51.0
- google.golang.org/protobuf v1.28.1
- gopkg.in/inf.v0 v0.9.1
- gopkg.in/yaml.v2 v2.4.0
- gopkg.in/yaml.v3 v3.0.1
- helm.sh/helm/v3 v3.11.1
- k8s.io/api v0.26.0
- k8s.io/apiextensions-apiserver v0.26.0
- k8s.io/apimachinery v0.26.0
- k8s.io/apiserver v0.26.0
- k8s.io/cli-runtime v0.26.0
- k8s.io/client-go v0.26.0
- k8s.io/component-base v0.26.0
- k8s.io/klog/v2 v2.80.1
- k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715
- k8s.io/kubectl v0.26.0
- k8s.io/utils v0.0.0-20221128185143-99ec85e7a448
- oras.land/oras-go v1.2.2
- sigs.k8s.io/controller-runtime v0.14.1
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
- sigs.k8s.io/kustomize/api v0.12.1
- sigs.k8s.io/kustomize/kyaml v0.13.9
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3
- sigs.k8s.io/yaml v1.3.0
- 980 dependencies