Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
29cadbe
[minor] Add RHOAI installation support for Ai service
Divyesh-Khokhar Apr 13, 2026
68a6208
Merge branch 'main' into MASAIB-2112
Divyesh-Khokhar Apr 15, 2026
a387ea8
[patch] update version and remove MariaDB
Divyesh-Khokhar Apr 16, 2026
3b89d10
[patch] disable odh part
karol-czarnecki Apr 16, 2026
03f3a71
[patch] update rhoai version
Divyesh-Khokhar Apr 16, 2026
ce56e0d
[patch] update logic condition for odh
karol-czarnecki Apr 16, 2026
d75b4a2
[patch] fix wrong syntax
karol-czarnecki Apr 16, 2026
d889306
[patch] update odh logic
karol-czarnecki Apr 16, 2026
a0a9807
[patch] make install plan to automatic
Divyesh-Khokhar Apr 16, 2026
0b91d24
[patch] update approval to Automatic for rhoai
karol-czarnecki Apr 17, 2026
67ff895
[patch] added one missing value
karol-czarnecki Apr 17, 2026
2913590
[patch] fix namespace issue
Divyesh-Khokhar Apr 17, 2026
2522c76
[patch] fix sync issue
Divyesh-Khokhar Apr 17, 2026
7edacfa
[patch] add install param to switch odh/rhoai
Divyesh-Khokhar Apr 21, 2026
42de326
[patch] Configure SLS through Gitops
Divyesh-Khokhar Apr 21, 2026
84bb6fa
[patch] Add SLS template to ibm-aiservice-instance-root
Divyesh-Khokhar Apr 21, 2026
7656adb
Revert "[patch] Add SLS template to ibm-aiservice-instance-root"
Divyesh-Khokhar Apr 22, 2026
187b4c0
Revert "[patch] Configure SLS through Gitops"
Divyesh-Khokhar Apr 22, 2026
baed88b
[patch] migrate to rhoai
Divyesh-Khokhar Apr 22, 2026
64280c6
[patch] install odh
Divyesh-Khokhar Apr 24, 2026
c789ef4
[patch] odh unin
Divyesh-Khokhar Apr 24, 2026
031a2fa
[patch] revent ArgoCD from deleting namespace
Divyesh-Khokhar Apr 27, 2026
aebb359
[patch] test changes
Divyesh-Khokhar Apr 27, 2026
c76f92d
[patch] remove odh
Divyesh-Khokhar Apr 27, 2026
6fa640d
[patch] install rhoai
Divyesh-Khokhar Apr 27, 2026
d7d9086
Revert "[patch] revent ArgoCD from deleting namespace"
Divyesh-Khokhar Apr 27, 2026
b67570a
[patch] AIS+ODH
Divyesh-Khokhar Apr 27, 2026
82da292
[patch] fix lint issue
Divyesh-Khokhar Apr 27, 2026
bfe8bd9
Update values.yaml
Divyesh-Khokhar Apr 27, 2026
d1faf1b
Revert "Update values.yaml"
Divyesh-Khokhar Apr 27, 2026
a301dee
[patch] re-apply changes
Divyesh-Khokhar Apr 27, 2026
f98496f
[patch] remove odh
Divyesh-Khokhar Apr 28, 2026
3d14877
[patch] install rhoai
Divyesh-Khokhar Apr 28, 2026
85c689b
AIS 9.1 with ODH
Divyesh-Khokhar Apr 29, 2026
2e8386a
add change
Divyesh-Khokhar Apr 29, 2026
e0fc696
remove odh
Divyesh-Khokhar Apr 29, 2026
b26e52f
install rhoai
Divyesh-Khokhar Apr 29, 2026
8ffad9b
[patch] Fix manual CSV deletion issue
Divyesh-Khokhar May 1, 2026
84b1a88
remove odh
Divyesh-Khokhar May 1, 2026
243a051
install rhoai
Divyesh-Khokhar May 1, 2026
2dd62b2
Merge remote-tracking branch 'origin/main' into MASAIB-2112
Divyesh-Khokhar May 8, 2026
7eb9f3f
[patch] add readme for migration
Divyesh-Khokhar May 8, 2026
5ec949e
[patch] Removed commented part
Divyesh-Khokhar May 11, 2026
8626a03
Merge branch 'main' into MASAIB-2112
Divyesh-Khokhar May 11, 2026
69ee87c
[patch] Added role-based conditions to RHOAI
Divyesh-Khokhar May 11, 2026
a647090
Merge branch 'main' into MASAIB-2112
Divyesh-Khokhar May 12, 2026
ae83fc4
Merge branch 'main' into MASAIB-2112
Divyesh-Khokhar May 12, 2026
65f8df0
[patch] Used action var
Divyesh-Khokhar May 13, 2026
c79673d
[patch] update odh/rhoai to action based var
Divyesh-Khokhar May 14, 2026
239c874
Merge remote-tracking branch 'origin/main' into MASAIB-2112
Divyesh-Khokhar May 14, 2026
c66c3e3
[patch] add rhoai application admin role in ArgoCD deployments
Divyesh-Khokhar May 15, 2026
f57c130
Merge branch 'main' into MASAIB-2112
Divyesh-Khokhar May 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions instance-applications/112-ibm-odh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ Deploy and configure ODH with configurable version

<!--docs-include-start-->

## Migration to RHOAI

**Note**: OpenDataHub (ODH) is being replaced by Red Hat OpenShift AI (RHOAI). To migrate to RHOAI, see the [RHOAI Migration Guide](../116-ibm-rhoai/README.md#migration-from-odh-to-rhoai).

Shared resources (aiservice namespace, ServiceMesh, Authorino, Serverless operators, and NetworkPolicies) have ArgoCD protection annotations that prevent deletion during ODH uninstallation, ensuring a safe migration path to RHOAI.

## Resources Created

Expand All @@ -25,6 +30,7 @@ This chart accepts the following configuration values in the ArgoCD Application

```yaml
ibm_odh:
install: string # Set to "true" to enable ODH installation
openshift_namespace: string
odh_pipeline_channel: string
odh_pipeline_installplan: string
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ metadata:
name: {{ .Values.serverless_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "117"
# Prevent ArgoCD from deleting this namespace during ODH to RHOAI migration
# This namespace is shared between ODH and RHOAI
argocd.argoproj.io/sync-options: Prune=false,Delete=false

---
apiVersion: operators.coreos.com/v1
Expand All @@ -24,6 +27,9 @@ metadata:
namespace: {{ .Values.serverless_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "118"
# Prevent ArgoCD from deleting this subscription during ODH to RHOAI migration
# This subscription is shared between ODH and RHOAI
argocd.argoproj.io/sync-options: Prune=false,Delete=false
spec:
channel: stable
installPlanApproval: Automatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ metadata:
namespace: openshift-operators
annotations:
argocd.argoproj.io/sync-wave: "118"
# Prevent ArgoCD from deleting this subscription during ODH to RHOAI migration
# This subscription is shared between ODH and RHOAI
argocd.argoproj.io/sync-options: Prune=false,Delete=false
spec:
channel: stable
installPlanApproval: Automatic
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ metadata:
namespace: openshift-operators
annotations:
argocd.argoproj.io/sync-wave: "121"
# Prevent ArgoCD from deleting this subscription during ODH to RHOAI migration
# This subscription is shared between ODH and RHOAI
argocd.argoproj.io/sync-options: Prune=false,Delete=false
spec:
channel: stable
name: authorino-operator
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,8 @@ metadata:
name: "{{ .Values.aiservice_namespace }}"
annotations:
argocd.argoproj.io/sync-wave: "128"
# Prevent ArgoCD from deleting this namespace during ODH uninstall
# This namespace is shared with RHOAI and must persist during migration
argocd.argoproj.io/sync-options: Prune=false,Delete=false

{{- end }}
11 changes: 11 additions & 0 deletions instance-applications/116-ibm-rhoai/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v2
name: ibm-rhoai
description: IBM RHOAI (Red Hat OpenShift AI)
type: application
version: 1.0.0

dependencies:
- name: junitreporter
version: 1.0.0
repository: "file://../../sub-charts/junitreporter/"
condition: junitreporter.devops_mongo_uri != ""
112 changes: 112 additions & 0 deletions instance-applications/116-ibm-rhoai/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
IBM RHOAI (Red Hat OpenShift AI)
===============================================================================
Deploy and configure Red Hat OpenShift AI with configurable version

<!--docs-include-start-->

## Migration from ODH to RHOAI

To migrate from OpenDataHub (ODH) to Red Hat OpenShift AI (RHOAI):

1. **Disable ODH**: Set `ibm_odh.install: "false"` in your configuration
2. **Sync with Prune**: Sync the ODH application in ArgoCD with the prune option enabled
3. **Wait for Uninstallation**: Wait for ODH resources to be removed (shared resources like namespaces, operators, and NetworkPolicies are protected and will not be deleted)
4. **Enable RHOAI**: Set `ibm_rhoai.install: "true"` in your configuration
5. **Sync RHOAI**: Sync the RHOAI application in ArgoCD

**Note**: The migration is safe because shared resources (aiservice namespace, ServiceMesh, Authorino, Serverless operators, and NetworkPolicies) have ArgoCD protection annotations (`Prune=false,Delete=false`) that prevent deletion during ODH uninstallation. RHOAI will reuse these existing resources.

## Resources Created

| Resource Type | Resource Name | Namespace | Condition | Installed By |
|--------------|---------------|-----------|-----------|--------------|
| `Namespace` | RHOAI and serverless namespaces | RHOAI-related namespaces | Always | `application_admin_role` |
| `OperatorGroup` | RHOAI operator groups | RHOAI-related namespaces | Always | `application_admin_role` |
| `Subscription` | RHOAI/operator subscriptions | RHOAI-related namespaces | Always | `application_admin_role` |
| `ServiceAccount` | RHOAI service mesh service account | RHOAI-related namespaces | Always | `application_admin_role` |
| `DSCInitialization` | RHOAI DSC initialization CR | RHOAI namespace | Always | `application_admin_role` |
| `DataScienceCluster` | RHOAI data science cluster CR | RHOAI namespace | Always | `application_admin_role` |
| `PeerAuthentication` | Istio peer authentication for RHOAI | RHOAI namespace | Always | `application_admin_role` |
| `DestinationRule` | Istio destination rule for RHOAI | RHOAI namespace | Always | `application_admin_role` |
| `NetworkPolicy` | RHOAI network policy | RHOAI namespace | Always | `application_admin_role` |

## Configuration

This chart accepts the following configuration values in the ArgoCD Application values:

```yaml
ibm_rhoai:
install: string # Set to "true" to enable RHOAI installation
openshift_namespace: string
rhoai_pipeline_name: string
rhoai_pipeline_namespace: string
rhoai_pipeline_operatorName: string
rhoai_pipeline_source: string
rhoai_pipeline_sourceNamespace: string
serverless_namespace: string
serverless_operator_name: string
serverless_operator_source: string
serverless_operator_sourceNamespace: string
rhoai_OperatorGroup_name: string
rhoai_name: string
rhoai_channel: string
rhoai_namespace: string
rhoai_applications_namespace: string
rhoai_monitoring_namespace: string
rhoai_installPlanApproval: string
rhoai_source: string
rhoai_sourceNamespace: string
rhoai_pipeline_channel: string
rhoai_pipeline_installplan: string
service_mesh_namespace: string
service_mesh_channel: string
service_mesh_catalog_source: string
serverless_channel: string
authorino_catalog_source: string
rhoai_catalog_source: string
rhoai_operator_version: string

aiservice_namespace: string
pull_secret_name: string (secret reference)

mas_aiservice_storage_provider: string
mas_aiservice_storage_accesskey: string (secret reference)
mas_aiservice_storage_secretkey: string (secret reference)
mas_aiservice_storage_host: string
mas_aiservice_storage_port: string
mas_aiservice_storage_ssl: string
mas_aiservice_storage_region: string
mas_aiservice_storage_pipelines_bucket: string
primary_storage_class: string
aiservice_rhoai_model_deployment_type: string
```

**Note**: Values marked with "(secret reference)" should use the format `<path:secrets/path:key>` to reference secrets stored in the Secrets Vault.

## Base Instance Values

This chart inherits common instance configuration values. The most frequently used base values are:

```yaml
account:
id: string # Account identifier
name: string # Account name

region:
id: string # Region identifier
name: string # Region name

cluster:
id: string # Cluster identifier
name: string # Cluster name

instance:
id: string # MAS instance identifier

sm: # Secrets Manager configuration
aws_secret_region: string
aws_access_key_id: string (secret reference)
aws_secret_access_key: string (secret reference)
```

For complete documentation of all base instance values including optional fields like `custom_labels`, `argocluster_instance`, `application_admin_service_account`, `mas_wipe_mongo_data`, `allow_list`, `additional_vpn`, `application_configuration`, `use_postdelete_hooks`, `additional_resources`, `extensions`, `enhanced_dr`, and `cli_image_repo`, see the [Instance Base Values Reference](../../docs/reference/instance-base-values.md).
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{{- if .Values.cluster_admin_role }}
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.serverless_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "117"

---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: operatorgroup
namespace: {{ .Values.serverless_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "117"

---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: {{ .Values.serverless_operator_name}}
namespace: {{ .Values.serverless_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "118"
spec:
channel: stable
installPlanApproval: Automatic
name: {{ .Values.serverless_operator_name}}
source: {{ .Values.serverless_operator_source}}
sourceNamespace: {{ .Values.serverless_operator_sourceNamespace}}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{{- if .Values.cluster_admin_role }}
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: servicemeshoperator
namespace: openshift-operators
annotations:
argocd.argoproj.io/sync-wave: "118"
spec:
channel: stable
installPlanApproval: Automatic
name: servicemeshoperator
source: redhat-operators
sourceNamespace: openshift-marketplace

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: istio-operator
namespace: openshift-operators
annotations:
argocd.argoproj.io/sync-wave: "119"

{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{- if .Values.cluster_admin_role }}
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: authorino-operator
namespace: openshift-operators
annotations:
argocd.argoproj.io/sync-wave: "121"
spec:
channel: stable
name: authorino-operator
source: community-operators
sourceNamespace: openshift-marketplace
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{{- if .Values.cluster_admin_role }}
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.rhoai_namespace }}
annotations:
argocd.argoproj.io/sync-wave: "125"
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: {{ .Values.rhoai_OperatorGroup_name}}
namespace: {{ .Values.rhoai_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "126"

---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: {{ .Values.rhoai_name}}
namespace: {{ .Values.rhoai_namespace}}
annotations:
argocd.argoproj.io/sync-wave: "127"
spec:
channel: {{ .Values.rhoai_channel}}
installPlanApproval: {{ .Values.rhoai_installPlanApproval}}
name: {{ .Values.rhoai_name}}
source: {{ .Values.rhoai_source}}
sourceNamespace: {{ .Values.rhoai_sourceNamespace}}
startingCSV: {{ .Values.rhoai_operator_version }}
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{- if .Values.cluster_admin_role }}
---
apiVersion: v1
kind: Namespace
metadata:
name: "{{ .Values.aiservice_namespace }}"
Comment thread
karol-czarnecki marked this conversation as resolved.
annotations:
argocd.argoproj.io/sync-wave: "128"
# Prevent ArgoCD from deleting this namespace during RHOAI uninstall
# This namespace is shared with ODH and must persist during migration
argocd.argoproj.io/sync-options: Prune=false,Delete=false

{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{{- if .Values.application_admin_role }}
---
apiVersion: dscinitialization.opendatahub.io/v1
kind: DSCInitialization
metadata:
annotations:
argocd.argoproj.io/sync-wave: "130"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
finalizers:
- dscinitialization.opendatahub.io/finalizer
labels:
app.kubernetes.io/created-by: rhods-operator
app.kubernetes.io/instance: default
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: dscinitialization
app.kubernetes.io/part-of: rhods-operator
name: default-dsci
spec:
applicationsNamespace: "{{ .Values.rhoai_applications_namespace }}"
monitoring:
managementState: Managed
namespace: "{{ .Values.rhoai_monitoring_namespace }}"
serviceMesh:
auth:
audiences:
- 'https://kubernetes.default.svc'
controlPlane:
metricsCollection: Istio
name: data-science-smcp
namespace: istio-system
{{- if eq .Values.aiservice_rhoai_model_deployment_type "raw" }}
managementState: Removed
{{- else }}
managementState: Managed
{{- end }}
trustedCABundle:
customCABundle: ''
managementState: Managed
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{{- if .Values.application_admin_role }}
---
kind: DataScienceCluster
apiVersion: datasciencecluster.opendatahub.io/v1
metadata:
annotations:
argocd.argoproj.io/sync-wave: "131"
argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true
labels:
app.kubernetes.io/created-by: rhods-operator
app.kubernetes.io/instance: default
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/name: datasciencecluster
app.kubernetes.io/part-of: rhods-operator
name: default-dsc
spec:
components:
datasciencepipelines:
managementState: Removed
kserve:
managementState: Managed
serving:
name: knative-serving
ingressGateway:
certificate:
type: SelfSigned
{{- if eq .Values.aiservice_rhoai_model_deployment_type "raw" }}
managementState: Removed
defaultDeploymentMode: RawDeployment
{{- else }}
managementState: Managed
{{- end }}
{{- end }}
Loading
Loading