diff --git a/.pyspelling.yml b/.pyspelling.yml index 3c9f601..ff0401b 100644 --- a/.pyspelling.yml +++ b/.pyspelling.yml @@ -15,5 +15,5 @@ matrix: - code - pre sources: - - '!dump/*|!**/INFO.md|!**/TODO.md|!venv/**|**/*.md' + - '!**/INFO.md|!**/TODO.md|!venv/**|!scratch/**|!dump/**|**/*.md' default_encoding: utf-8 diff --git a/.yamllint b/.yamllint index 9da3878..e4ab480 100644 --- a/.yamllint +++ b/.yamllint @@ -7,10 +7,20 @@ rules: new-line-at-end-of-file: disable indentation: indent-sequences: whatever - ignore: dump/ + ignore: kludgeops/ braces: - ignore: components/operators/grafana-operator/base/instance/grafana.yaml + min-spaces-inside: 0 + max-spaces-inside: 1 truthy: ignore: .github/workflows/ trailing-spaces: - ignore: components/operators/openshift-gitops-operator/instance/overlays/default/patch-resource-customizations.yaml + ignore: | + # components/operators/openshift-gitops-operator/instance/overlays/default/patch-resource-customizations.yaml + empty-lines: + ignore: | + components/operators/ack-controllers/base/adoptedresources-crd.yaml + +ignore: + - "scratch/*" + - "components/containers/web-terminal/src/*" + - "components/operators/gpu-operator-certified/operator/components/console-plugin-helm/*" diff --git a/components/demos/instance/rhods/datasciencecluster.yaml b/components/demos/instance/rhods/datasciencecluster.yaml new file mode 100644 index 0000000..eaec283 --- /dev/null +++ b/components/demos/instance/rhods/datasciencecluster.yaml @@ -0,0 +1,34 @@ +kind: DataScienceCluster +apiVersion: datasciencecluster.opendatahub.io/v1 +metadata: + name: default-dsc + labels: + app.kubernetes.io/name: datasciencecluster + app.kubernetes.io/instance: default + app.kubernetes.io/part-of: rhods-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: rhods-operator +spec: + components: + codeflare: + managementState: Managed + dashboard: + managementState: Managed + datasciencepipelines: + managementState: Managed + kserve: + managementState: Managed + serving: + ingressGateway: + certificate: + type: SelfSigned + managementState: Managed + name: knative-serving + modelmeshserving: + managementState: Managed + ray: + managementState: Managed + trustyai: + managementState: Managed + workbenches: + managementState: Managed diff --git a/components/demos/instance/rhods/kustomization.yaml b/components/demos/instance/rhods/kustomization.yaml index bc4cd3e..4215aa7 100644 --- a/components/demos/instance/rhods/kustomization.yaml +++ b/components/demos/instance/rhods/kustomization.yaml @@ -4,6 +4,7 @@ kind: Kustomization resources: - ../../base - nb-culler-config.yaml + - datasciencecluster.yaml - odh-dashboard-config-cr.yaml - rhods-admins-group.yaml - rhods-self-provisioner-clusterrolebinding.yaml diff --git a/components/operators/rhods-operator/INFO.md b/components/operators/rhods-operator/INFO.md index 7ee1dc9..530cd3c 100644 --- a/components/operators/rhods-operator/INFO.md +++ b/components/operators/rhods-operator/INFO.md @@ -1,16 +1,24 @@ # rhods-operator -Red Hat OpenShift Data Science (RHODS) is a machine-learning-as-a-service -platform built on Red Hat's Kubernetes-based OpenShift Container Platform, -Ceph Object Storage, and integrating a collection of open source projects. +Red Hat OpenShift AI is a complete platform for the entire lifecycle of your AI/ML projects. -The RHODS operator allows users to install and manage RHODS components. -Users can mix and match tools from each project to fulfill the needs of -their use case. Each of the projects share some components, but can be -mostly seen as an extension of each other to provide as complete a solution -as possible for enterprise users. +When using Red Hat OpenShift AI, your users will find all the tools they would expect from a modern AI/ML platform in an interface that is intuitive, requires no local install, and is backed by the power of your OpenShift cluster. -### Components +Your Data Scientists will feel right at home with quick and simple access to the Notebook interface they are used to. They can leverage the default Notebook Images (Including PyTorch, tensorflow, and CUDA), or add custom ones. Your MLOps engineers will be able to leverage Data Science Pipelines to easily parallelize and/or schedule the required workloads. They can then quickly serve, monitor, and update the created AI/ML models. They can do that by either using the provided out-of-the-box OpenVino Server Model Runtime or by adding their own custom serving runtime instead. These activities are tied together with the concept of Data Science Projects, simplifying both organization and collaboration. + +But beyond the individual features, one of the key aspects of this platform is its flexibility. Not only can you augment it with your own Customer Workbench Image and Custom Model Serving Runtime Images, but you will also have a consistent experience across any infrastructure footprint. Be it in the public cloud, private cloud, on-premises, and even in disconnected clusters. Red Hat OpenShift AI can be installed on any supported OpenShift. It can scale out or in depending on the size of your team and its computing requirements. + +Finally, thanks to the operator-driven deployment and updates, the administrative load of the platform is very light, leaving everyone more time to focus on the work that makes a difference. -* Notebook Controller - Open source multi-user notebook platform w/ GPU support -* RHODS Dashboard - Dashboard for Red Hat OpenShift Data Science + +### Components +* Dashboard +* Curated Workbench Images (incl CUDA, PyTorch, Tensorflow, code-server) +* Ability to add Custom Images +* Ability to leverage accelerators (such as NVIDIA GPU) +* Data Science Pipelines. (including Elyra notebook interface, and based on standard OpenShift Pipelines) +* Model Serving using ModelMesh and Kserve. +* Ability to use other runtimes for serving +* Model Monitoring +* Distributed workloads (KubeRay, CodeFlare) +* XAI explanations of predictive models (TrustyAI) diff --git a/components/operators/rhods-operator/README.md b/components/operators/rhods-operator/README.md index 570c154..3293198 100644 --- a/components/operators/rhods-operator/README.md +++ b/components/operators/rhods-operator/README.md @@ -1,17 +1,20 @@ -# Red Hat OpenShift Data Science +# Red Hat OpenShift AI -Install Red Hat OpenShift Data Science. +Install Red Hat OpenShift AI. Do not use the `base` directory directly, as you will need to patch the `channel` based on the version of OpenShift you are using, or the version of the operator you want to use. The current *overlays* available are for the following channels: +* [alpha](operator/overlays/alpha) * [beta](operator/overlays/beta) +* [embedded](operator/overlays/embedded) +* [fast](operator/overlays/fast) * [stable](operator/overlays/stable) ## Usage -If you have cloned the `gitops-catalog` repository, you can install Red Hat OpenShift Data Science based on the overlay of your choice by running from the root (`gitops-catalog`) directory. +If you have cloned the `gitops-catalog` repository, you can install Red Hat OpenShift AI based on the overlay of your choice by running from the root (`gitops-catalog`) directory. ``` oc apply -k rhods-operator/operator/overlays/ diff --git a/components/operators/rhods-operator/instance/base/kustomization.yaml b/components/operators/rhods-operator/instance/base/kustomization.yaml new file mode 100644 index 0000000..8992540 --- /dev/null +++ b/components/operators/rhods-operator/instance/base/kustomization.yaml @@ -0,0 +1,5 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - profile-nvidia.yaml diff --git a/components/operators/rhods-operator/instance/base/profile-nvidia.yaml b/components/operators/rhods-operator/instance/base/profile-nvidia.yaml new file mode 100644 index 0000000..c190acc --- /dev/null +++ b/components/operators/rhods-operator/instance/base/profile-nvidia.yaml @@ -0,0 +1,19 @@ +apiVersion: dashboard.opendatahub.io/v1 +kind: AcceleratorProfile +metadata: + annotations: + # opendatahub.io/modified-date: '2024-02-14T00:57:22.878Z' + name: nvidia + namespace: redhat-ods-applications +spec: + description: Default Nvidia GPU Profile + displayName: Nvidia GPU + enabled: true + identifier: nvidia.com/gpu + tolerations: + - effect: NoSchedule + key: nvidia-gpu-only + operator: Exists + - effect: NoSchedule + key: nvidia.com/gpu + operator: Exists diff --git a/components/operators/rhods-operator/instance/overlays/2.6/datasciencecluster.yaml b/components/operators/rhods-operator/instance/overlays/2.6/datasciencecluster.yaml new file mode 100644 index 0000000..eaec283 --- /dev/null +++ b/components/operators/rhods-operator/instance/overlays/2.6/datasciencecluster.yaml @@ -0,0 +1,34 @@ +kind: DataScienceCluster +apiVersion: datasciencecluster.opendatahub.io/v1 +metadata: + name: default-dsc + labels: + app.kubernetes.io/name: datasciencecluster + app.kubernetes.io/instance: default + app.kubernetes.io/part-of: rhods-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: rhods-operator +spec: + components: + codeflare: + managementState: Managed + dashboard: + managementState: Managed + datasciencepipelines: + managementState: Managed + kserve: + managementState: Managed + serving: + ingressGateway: + certificate: + type: SelfSigned + managementState: Managed + name: knative-serving + modelmeshserving: + managementState: Managed + ray: + managementState: Managed + trustyai: + managementState: Managed + workbenches: + managementState: Managed diff --git a/components/operators/rhods-operator/instance/overlays/2.6/kustomization.yaml b/components/operators/rhods-operator/instance/overlays/2.6/kustomization.yaml new file mode 100644 index 0000000..d2784ad --- /dev/null +++ b/components/operators/rhods-operator/instance/overlays/2.6/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + - datasciencecluster.yaml diff --git a/components/operators/rhods-operator/instance/overlays/2.9.1/datasciencecluster.yaml b/components/operators/rhods-operator/instance/overlays/2.9.1/datasciencecluster.yaml new file mode 100644 index 0000000..dc86a3c --- /dev/null +++ b/components/operators/rhods-operator/instance/overlays/2.9.1/datasciencecluster.yaml @@ -0,0 +1,36 @@ +apiVersion: datasciencecluster.opendatahub.io/v1 +kind: DataScienceCluster +metadata: + name: default-dsc + labels: + app.kubernetes.io/name: datasciencecluster + app.kubernetes.io/instance: default-dsc + app.kubernetes.io/part-of: rhods-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: rhods-operator +spec: + components: + codeflare: + managementState: Managed + dashboard: + managementState: Managed + datasciencepipelines: + managementState: Managed + kserve: + managementState: Managed + serving: + ingressGateway: + certificate: + type: SelfSigned + managementState: Managed + name: knative-serving + kueue: + managementState: Managed + modelmeshserving: + managementState: Managed + ray: + managementState: Managed + trustyai: + managementState: Managed + workbenches: + managementState: Managed diff --git a/components/operators/rhods-operator/instance/overlays/2.9.1/kustomization.yaml b/components/operators/rhods-operator/instance/overlays/2.9.1/kustomization.yaml new file mode 100644 index 0000000..d2784ad --- /dev/null +++ b/components/operators/rhods-operator/instance/overlays/2.9.1/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + - datasciencecluster.yaml diff --git a/components/operators/rhods-operator/operator/base/namespace.yaml b/components/operators/rhods-operator/operator/base/namespace.yaml index 7229464..200f8ce 100644 --- a/components/operators/rhods-operator/operator/base/namespace.yaml +++ b/components/operators/rhods-operator/operator/base/namespace.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Namespace metadata: annotations: - openshift.io/display-name: "Red Hat OpenShift Data Science" + openshift.io/display-name: "Red Hat OpenShift AI" labels: openshift.io/cluster-monitoring: 'true' name: redhat-ods-operator diff --git a/components/operators/rhods-operator/operator/base/operator-group.yaml b/components/operators/rhods-operator/operator/base/operator-group.yaml index 06574d7..73a3b51 100644 --- a/components/operators/rhods-operator/operator/base/operator-group.yaml +++ b/components/operators/rhods-operator/operator/base/operator-group.yaml @@ -1,5 +1,5 @@ apiVersion: operators.coreos.com/v1 kind: OperatorGroup metadata: - name: rhods-operator-group + name: rhods-operator namespace: redhat-ods-operator diff --git a/components/operators/rhods-operator/operator/overlays/alpha/kustomization.yaml b/components/operators/rhods-operator/operator/overlays/alpha/kustomization.yaml new file mode 100644 index 0000000..975881f --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/alpha/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + +patches: + - target: + kind: Subscription + name: rhods-operator + path: patch-channel.yaml diff --git a/components/operators/rhods-operator/operator/overlays/alpha/patch-channel.yaml b/components/operators/rhods-operator/operator/overlays/alpha/patch-channel.yaml new file mode 100644 index 0000000..22afbce --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/alpha/patch-channel.yaml @@ -0,0 +1,3 @@ +- op: replace + path: /spec/channel + value: alpha diff --git a/components/operators/rhods-operator/operator/overlays/embedded/kustomization.yaml b/components/operators/rhods-operator/operator/overlays/embedded/kustomization.yaml new file mode 100644 index 0000000..975881f --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/embedded/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + +patches: + - target: + kind: Subscription + name: rhods-operator + path: patch-channel.yaml diff --git a/components/operators/rhods-operator/operator/overlays/embedded/patch-channel.yaml b/components/operators/rhods-operator/operator/overlays/embedded/patch-channel.yaml new file mode 100644 index 0000000..36d53f1 --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/embedded/patch-channel.yaml @@ -0,0 +1,3 @@ +- op: replace + path: /spec/channel + value: embedded diff --git a/components/operators/rhods-operator/operator/overlays/fast/kustomization.yaml b/components/operators/rhods-operator/operator/overlays/fast/kustomization.yaml new file mode 100644 index 0000000..975881f --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/fast/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + +patches: + - target: + kind: Subscription + name: rhods-operator + path: patch-channel.yaml diff --git a/components/operators/rhods-operator/operator/overlays/fast/patch-channel.yaml b/components/operators/rhods-operator/operator/overlays/fast/patch-channel.yaml new file mode 100644 index 0000000..19ca8d0 --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/fast/patch-channel.yaml @@ -0,0 +1,3 @@ +- op: replace + path: /spec/channel + value: fast diff --git a/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/kustomization.yaml b/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/kustomization.yaml new file mode 100644 index 0000000..975881f --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/kustomization.yaml @@ -0,0 +1,11 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: + - ../../base + +patches: + - target: + kind: Subscription + name: rhods-operator + path: patch-channel.yaml diff --git a/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/patch-channel.yaml b/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/patch-channel.yaml new file mode 100644 index 0000000..a6c644e --- /dev/null +++ b/components/operators/rhods-operator/operator/overlays/stable-pre-2.6/patch-channel.yaml @@ -0,0 +1,6 @@ +- op: replace + path: /spec/channel + value: stable +- op: replace + path: /spec/startingCSV + value: rhods-operator.1.30.0 diff --git a/components/operators/rhods-operator/operator/overlays/stable/kustomization.yaml b/components/operators/rhods-operator/operator/overlays/stable/kustomization.yaml index e18bc53..975881f 100644 --- a/components/operators/rhods-operator/operator/overlays/stable/kustomization.yaml +++ b/components/operators/rhods-operator/operator/overlays/stable/kustomization.yaml @@ -9,12 +9,3 @@ patches: kind: Subscription name: rhods-operator path: patch-channel.yaml - # kludge: for rhdp - just don't install operator - - target: - group: operators.coreos.com - kind: OperatorGroup - name: rhods-operator-group - patch: |- - - op: replace - path: /metadata/name - value: rhods-ods-operator