diff --git a/charts/dependencies/cert-manager-operator/test/snapshots/default.snap.yaml b/charts/dependencies/cert-manager-operator/test/snapshots/default.snap.yaml index 9d5144e3..7b92cf55 100644 --- a/charts/dependencies/cert-manager-operator/test/snapshots/default.snap.yaml +++ b/charts/dependencies/cert-manager-operator/test/snapshots/default.snap.yaml @@ -10,6 +10,7 @@ apiVersion: v1 kind: Namespace metadata: name: cert-manager + --- # Source: cert-manager-operator/templates/serviceaccount-cert-manager-operator-controller-manager.yaml apiVersion: v1 @@ -19,6 +20,7 @@ metadata: namespace: cert-manager-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: cert-manager-operator/templates/serviceaccount-cert-manager.yaml apiVersion: v1 @@ -46,6 +48,7 @@ metadata: namespace: cert-manager imagePullSecrets: - name: rhai-pull-secret + --- # Source: cert-manager-operator/templates/clusterrole-cert-manager-operator-controller-manager-clusterro.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -336,6 +339,7 @@ rules: - subjectaccessreviews verbs: - create + --- # Source: cert-manager-operator/templates/clusterrole-cert-manager-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -353,6 +357,7 @@ rules: - /metrics verbs: - get + --- # Source: cert-manager-operator/templates/clusterrolebinding-cert-manager-operator-controller-manager-clusterro.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -368,6 +373,7 @@ subjects: - kind: ServiceAccount name: cert-manager-operator-controller-manager namespace: cert-manager-operator + --- # Source: cert-manager-operator/templates/role-cert-manager-operator-controller-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -407,6 +413,7 @@ rules: verbs: - create - patch + --- # Source: cert-manager-operator/templates/rolebinding-cert-manager-operator-controller-manager-rolebindi.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -422,6 +429,7 @@ subjects: - kind: ServiceAccount name: cert-manager-operator-controller-manager namespace: cert-manager-operator + --- # Source: cert-manager-operator/templates/service-cert-manager-operator-controller-manager-metrics-s.yaml apiVersion: v1 @@ -444,6 +452,7 @@ spec: targetPort: https selector: control-plane: controller-manager + --- # Source: cert-manager-operator/templates/deployment-cert-manager-operator-controller-manager.yaml apiVersion: apps/v1 @@ -559,6 +568,7 @@ spec: volumes: - emptyDir: {} name: tmp + --- # Source: cert-manager-operator/templates/certmanager.yaml apiVersion: operator.openshift.io/v1alpha1 diff --git a/charts/dependencies/gateway-api/test/snapshots/default.snap.yaml b/charts/dependencies/gateway-api/test/snapshots/default.snap.yaml index 77133ed9..8c9f06f9 100644 --- a/charts/dependencies/gateway-api/test/snapshots/default.snap.yaml +++ b/charts/dependencies/gateway-api/test/snapshots/default.snap.yaml @@ -1318,6 +1318,7 @@ status: plural: "" conditions: null storedVersions: null + --- # Source: gateway-api/templates/gateway.networking.k8s.io_gatewayclasses.yaml apiVersion: apiextensions.k8s.io/v1 @@ -1835,6 +1836,7 @@ status: plural: "" conditions: null storedVersions: null + --- # Source: gateway-api/templates/gateway.networking.k8s.io_gateways.yaml apiVersion: apiextensions.k8s.io/v1 @@ -4090,6 +4092,7 @@ status: plural: "" conditions: null storedVersions: null + --- # Source: gateway-api/templates/gateway.networking.k8s.io_grpcroutes.yaml apiVersion: apiextensions.k8s.io/v1 @@ -6162,6 +6165,7 @@ status: plural: "" conditions: null storedVersions: null + --- # Source: gateway-api/templates/gateway.networking.k8s.io_httproutes.yaml apiVersion: apiextensions.k8s.io/v1 @@ -11807,6 +11811,7 @@ status: plural: "" conditions: null storedVersions: null + --- # Source: gateway-api/templates/gateway.networking.k8s.io_referencegrants.yaml apiVersion: apiextensions.k8s.io/v1 diff --git a/charts/dependencies/lws-operator/test/snapshots/default.snap.yaml b/charts/dependencies/lws-operator/test/snapshots/default.snap.yaml index 05bc73fc..7512d26b 100644 --- a/charts/dependencies/lws-operator/test/snapshots/default.snap.yaml +++ b/charts/dependencies/lws-operator/test/snapshots/default.snap.yaml @@ -4,6 +4,7 @@ apiVersion: v1 kind: Namespace metadata: name: openshift-lws-operator + --- # Source: lws-operator/templates/serviceaccount-lws-controller.yaml apiVersion: v1 @@ -13,6 +14,7 @@ metadata: namespace: openshift-lws-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: lws-operator/templates/serviceaccount-openshift-lws-operator.yaml apiVersion: v1 @@ -22,6 +24,7 @@ metadata: namespace: openshift-lws-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: lws-operator/templates/clusterrole-openshift-lws-operator-clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -213,6 +216,7 @@ rules: - patch - update - watch + --- # Source: lws-operator/templates/clusterrolebinding-openshift-lws-operator-clusterrolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -228,6 +232,7 @@ subjects: - kind: ServiceAccount name: openshift-lws-operator namespace: openshift-lws-operator + --- # Source: lws-operator/templates/role-openshift-lws-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -359,6 +364,7 @@ rules: - list - patch - update + --- # Source: lws-operator/templates/kube-system-role-binding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -374,6 +380,7 @@ subjects: - kind: ServiceAccount name: openshift-lws-operator namespace: openshift-lws-operator + --- # Source: lws-operator/templates/rolebinding-openshift-lws-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -389,6 +396,7 @@ subjects: - kind: ServiceAccount name: openshift-lws-operator namespace: openshift-lws-operator + --- # Source: lws-operator/templates/deployment-openshift-lws-operator.yaml apiVersion: apps/v1 @@ -440,6 +448,7 @@ spec: volumes: - emptyDir: {} name: tmp + --- # Source: lws-operator/templates/leaderworkersetoperator.yaml apiVersion: operator.openshift.io/v1 diff --git a/charts/dependencies/sail-operator/test/snapshots/default.snap.yaml b/charts/dependencies/sail-operator/test/snapshots/default.snap.yaml index d86fbe64..560c4122 100644 --- a/charts/dependencies/sail-operator/test/snapshots/default.snap.yaml +++ b/charts/dependencies/sail-operator/test/snapshots/default.snap.yaml @@ -4,6 +4,7 @@ apiVersion: v1 kind: Namespace metadata: name: istio-system + --- # Source: sail-operator/templates/serviceaccount-servicemesh-operator3.yaml apiVersion: v1 @@ -13,6 +14,7 @@ metadata: namespace: istio-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: sail-operator/templates/clusterrole-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -31,6 +33,7 @@ rules: - /metrics verbs: - get + --- # Source: sail-operator/templates/clusterrole-servicemesh-operator3-clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -296,6 +299,7 @@ rules: - get - patch - update + --- # Source: sail-operator/templates/clusterrolebinding-servicemesh-operator3-clusterrolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -311,6 +315,7 @@ subjects: - kind: ServiceAccount name: servicemesh-operator3 namespace: istio-system + --- # Source: sail-operator/templates/role-servicemesh-operator3-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -350,6 +355,7 @@ rules: verbs: - create - patch + --- # Source: sail-operator/templates/rolebinding-servicemesh-operator3-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -365,6 +371,7 @@ subjects: - kind: ServiceAccount name: servicemesh-operator3 namespace: istio-system + --- # Source: sail-operator/templates/service-servicemesh-operator3-metrics-service.yaml apiVersion: v1 @@ -389,6 +396,7 @@ spec: targetPort: 8443 selector: control-plane: servicemesh-operator3 + --- # Source: sail-operator/templates/deployment-servicemesh-operator3.yaml apiVersion: apps/v1 @@ -544,6 +552,7 @@ spec: fieldPath: metadata.annotations path: config.properties name: operator-config + --- # Source: sail-operator/templates/istio.yaml apiVersion: sailoperator.io/v1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/all-components-managed.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/all-components-managed.snap.yaml index 69dbef54..f10b004a 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/all-components-managed.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/all-components-managed.snap.yaml @@ -114,6 +114,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -168,6 +169,7 @@ spec: workbenches: managementState: Managed workbenchNamespace: opendatahub + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -188,6 +190,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/maas.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -210,6 +213,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -244,6 +248,7 @@ metadata: spec: logLevel: Normal operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/config.yaml apiVersion: kuadrant.io/v1beta1 @@ -254,6 +259,7 @@ metadata: labels: helm.sh/chart: HELM_CHART_VERSION_REDACTED app.kubernetes.io/managed-by: Helm + --- # Source: rhai-on-openshift-chart/templates/dependencies/kueue/config.yaml apiVersion: kueue.openshift.io/v1 @@ -275,6 +281,7 @@ spec: - StatefulSet - TrainJob managementState: Managed + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/config.yaml apiVersion: operator.openshift.io/v1 @@ -288,6 +295,7 @@ spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/cert-manager/operator.yaml apiVersion: operators.coreos.com/v1 @@ -444,6 +452,8 @@ spec: name: openshift-cert-manager-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/cluster-observability/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -460,6 +470,8 @@ spec: name: cluster-observability-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/job-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -476,6 +488,7 @@ spec: name: job-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/kueue/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -492,6 +505,8 @@ spec: name: kueue-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -508,6 +523,7 @@ spec: name: leader-worker-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/nfd/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -524,6 +540,7 @@ spec: name: nfd source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/nvidia-gpu-operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -540,6 +557,7 @@ spec: name: gpu-operator-certified source: certified-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/opentelemetry/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -556,6 +574,8 @@ spec: name: opentelemetry-product source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -572,6 +592,7 @@ spec: name: rhcl-operator source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/tempo/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -588,6 +609,8 @@ spec: name: tempo-product source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/enable-llm-d-wva.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/enable-llm-d-wva.snap.yaml index 5cc39cb1..fada1d53 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/enable-llm-d-wva.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/enable-llm-d-wva.snap.yaml @@ -69,6 +69,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -123,6 +124,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: opendatahub + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -143,6 +145,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -166,6 +169,7 @@ metadata: spec: logLevel: Normal operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/config.yaml apiVersion: kuadrant.io/v1beta1 @@ -176,6 +180,7 @@ metadata: labels: helm.sh/chart: HELM_CHART_VERSION_REDACTED app.kubernetes.io/managed-by: Helm + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/config.yaml apiVersion: operator.openshift.io/v1 @@ -189,6 +194,7 @@ spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/cert-manager/operator.yaml apiVersion: operators.coreos.com/v1 @@ -281,6 +287,8 @@ spec: name: openshift-cert-manager-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/custom-metrics-autoscaler/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -297,6 +305,8 @@ spec: name: openshift-custom-metrics-autoscaler-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/job-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -313,6 +323,7 @@ spec: name: job-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -329,6 +340,7 @@ spec: name: leader-worker-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -345,6 +357,7 @@ spec: name: rhcl-operator source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/inference-only.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/inference-only.snap.yaml index 91f491c6..23ac6836 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/inference-only.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/inference-only.snap.yaml @@ -51,6 +51,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -105,6 +106,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: rhods-notebooks + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -125,6 +127,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -146,6 +149,7 @@ metadata: labels: helm.sh/chart: HELM_CHART_VERSION_REDACTED app.kubernetes.io/managed-by: Helm + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/config.yaml apiVersion: operator.openshift.io/v1 @@ -159,6 +163,7 @@ spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/cert-manager/operator.yaml apiVersion: operators.coreos.com/v1 @@ -225,6 +230,8 @@ spec: name: openshift-cert-manager-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -241,6 +248,7 @@ spec: name: leader-worker-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -257,6 +265,7 @@ spec: name: rhcl-operator source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/install-with-helm-dependencies.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/install-with-helm-dependencies.snap.yaml index 472341da..c023c54a 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/install-with-helm-dependencies.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/install-with-helm-dependencies.snap.yaml @@ -15,6 +15,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/profile-with-customization.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/profile-with-customization.snap.yaml index 3c19b03a..6717530c 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/profile-with-customization.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/profile-with-customization.snap.yaml @@ -60,6 +60,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -114,6 +115,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: rhods-notebooks + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -134,6 +136,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -157,6 +160,7 @@ metadata: spec: logLevel: Normal operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/config.yaml apiVersion: kuadrant.io/v1beta1 @@ -167,6 +171,7 @@ metadata: labels: helm.sh/chart: HELM_CHART_VERSION_REDACTED app.kubernetes.io/managed-by: Helm + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/config.yaml apiVersion: operator.openshift.io/v1 @@ -180,6 +185,7 @@ spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/cert-manager/operator.yaml apiVersion: operators.coreos.com/v1 @@ -260,6 +266,8 @@ spec: name: openshift-cert-manager-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/job-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -276,6 +284,7 @@ spec: name: job-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -292,6 +301,7 @@ spec: name: leader-worker-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -308,6 +318,7 @@ spec: name: rhcl-operator source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-odh.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-odh.snap.yaml index 3a2ca9c8..9dd9166c 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-odh.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-odh.snap.yaml @@ -24,6 +24,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -78,6 +79,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: opendatahub + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-rhoai.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-rhoai.snap.yaml index 90694f6c..53c9c431 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-rhoai.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/skip-crd-check-rhoai.snap.yaml @@ -24,6 +24,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -78,6 +79,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: rhods-notebooks + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1 diff --git a/charts/rhai-on-openshift-chart/test/snapshots/with-rhcl-config.snap.yaml b/charts/rhai-on-openshift-chart/test/snapshots/with-rhcl-config.snap.yaml index c6f07f3b..2a4f6070 100644 --- a/charts/rhai-on-openshift-chart/test/snapshots/with-rhcl-config.snap.yaml +++ b/charts/rhai-on-openshift-chart/test/snapshots/with-rhcl-config.snap.yaml @@ -60,6 +60,7 @@ spec: trustedCABundle: managementState: Managed customCABundle: "" + --- # Source: rhai-on-openshift-chart/templates/operator/datasciencecluster.yaml apiVersion: datasciencecluster.opendatahub.io/v2 @@ -114,6 +115,7 @@ spec: workbenches: managementState: Removed workbenchNamespace: opendatahub + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -134,6 +136,7 @@ spec: name: https port: 443 protocol: HTTPS + --- # Source: rhai-on-openshift-chart/templates/dependencies/gateway/kserve-gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1 @@ -157,6 +160,7 @@ metadata: spec: logLevel: Normal operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/config.yaml apiVersion: kuadrant.io/v1beta1 @@ -167,6 +171,7 @@ metadata: labels: helm.sh/chart: HELM_CHART_VERSION_REDACTED app.kubernetes.io/managed-by: Helm + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/config.yaml apiVersion: operator.openshift.io/v1 @@ -180,6 +185,7 @@ spec: logLevel: Normal managementState: Managed operatorLogLevel: Normal + --- # Source: rhai-on-openshift-chart/templates/dependencies/cert-manager/operator.yaml apiVersion: operators.coreos.com/v1 @@ -260,6 +266,8 @@ spec: name: openshift-cert-manager-operator source: redhat-operators sourceNamespace: openshift-marketplace + + --- # Source: rhai-on-openshift-chart/templates/dependencies/job-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -276,6 +284,7 @@ spec: name: job-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/leader-worker-set/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -292,6 +301,7 @@ spec: name: leader-worker-set source: redhat-operators sourceNamespace: openshift-marketplace + --- # Source: rhai-on-openshift-chart/templates/dependencies/rhcl/operator.yaml apiVersion: operators.coreos.com/v1alpha1 @@ -312,6 +322,7 @@ spec: env: - name: RELATED_IMAGE_WASMSHIM value: image-value + --- # Source: rhai-on-openshift-chart/templates/operator/operator.yaml apiVersion: operators.coreos.com/v1alpha1 diff --git a/charts/rhai-on-openshift-chart/values.schema.json b/charts/rhai-on-openshift-chart/values.schema.json index aa304495..cd439a01 100644 --- a/charts/rhai-on-openshift-chart/values.schema.json +++ b/charts/rhai-on-openshift-chart/values.schema.json @@ -378,7 +378,6 @@ "$ref": "#/definitions/defaultManagementState" } }, - "required": ["managementState"], "additionalProperties": false }, "defaults": { @@ -412,7 +411,6 @@ } } }, - "required": ["managementState"], "additionalProperties": false }, "defaults": { @@ -455,7 +453,7 @@ "description": "Default cluster queue name" } }, - "required": ["managementState", "defaultLocalQueueName", "defaultClusterQueueName"], + "required": ["defaultLocalQueueName", "defaultClusterQueueName"], "additionalProperties": false }, "defaults": { @@ -493,7 +491,6 @@ "$ref": "#/definitions/defaultManagementState" } }, - "required": ["managementState"], "additionalProperties": false }, "wva": { @@ -504,7 +501,6 @@ "$ref": "#/definitions/defaultManagementState" } }, - "required": ["managementState"], "additionalProperties": false }, "modelsAsService": { @@ -517,7 +513,6 @@ } } }, - "required": ["managementState"], "additionalProperties": false }, "gatewayClass": { @@ -561,7 +556,6 @@ "description": "Namespace for model registries. Overrides defaults if set." } }, - "required": ["managementState"], "additionalProperties": false }, "defaults": { @@ -590,7 +584,6 @@ "description": "Namespace for workbenches. Overrides defaults if set." } }, - "required": ["managementState"], "additionalProperties": false }, "defaults": { @@ -643,7 +636,6 @@ "additionalProperties": false } }, - "required": ["managementState"], "additionalProperties": false }, "defaults": { diff --git a/charts/rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml b/charts/rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml index f327fcc7..9787c977 100644 --- a/charts/rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml +++ b/charts/rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml @@ -49,6 +49,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: diff --git a/charts/rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml b/charts/rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml index a66db6f5..ceac616d 100644 --- a/charts/rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml +++ b/charts/rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml @@ -8,7 +8,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -68,6 +67,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -146,6 +155,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -285,12 +295,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -325,12 +335,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -348,12 +358,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -765,6 +775,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -1168,35 +1219,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -1242,6 +1269,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers diff --git a/charts/rhai-on-xks-chart/test/snapshots/aws-with-pull-secret.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/aws-with-pull-secret.snap.yaml index 78c420f8..c7623fd8 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/aws-with-pull-secret.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/aws-with-pull-secret.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -49,6 +52,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml # TODO: This is a temporary solution to inject the pull secret into the llmisvc-controller-manager service account. @@ -59,6 +63,7 @@ metadata: namespace: redhat-ods-applications imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -68,6 +73,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -398,6 +404,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -450,6 +457,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -592,6 +683,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/clusterrole-rhai-aws-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -856,6 +948,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -867,6 +960,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -878,7 +972,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -938,6 +1031,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -1016,6 +1119,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1155,12 +1259,12 @@ rules: - feastoperators - kserves - kueues - - llamastackoperators - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1195,12 +1299,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - llamastackoperators/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1218,12 +1322,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - llamastackoperators/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1635,6 +1739,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -2038,35 +2183,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -2112,6 +2233,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2237,6 +2359,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/clusterrolebinding-rhai-aws-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2251,6 +2374,7 @@ subjects: - kind: ServiceAccount name: aws-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2265,6 +2389,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/role-aws-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2289,6 +2414,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/rolebinding-aws-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2304,6 +2430,7 @@ subjects: - kind: ServiceAccount name: aws-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2321,6 +2448,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2342,6 +2470,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/manager/deployment-aws-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2453,6 +2582,7 @@ spec: type: RuntimeDefault serviceAccountName: aws-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2516,7 +2646,7 @@ spec: value: "true" - name: RHAI_DISABLE_KUEUE_COMPONENT value: "true" - - name: RHAI_DISABLE_LLAMASTACKOPERATOR_COMPONENT + - name: RHAI_DISABLE_OGX_COMPONENT value: "true" - name: RHAI_DISABLE_MLFLOWOPERATOR_COMPONENT value: "true" @@ -2656,6 +2786,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2812,6 +2943,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2902,6 +3034,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -3061,3 +3194,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/aws.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/aws.snap.yaml index 4e4daf6c..daed0660 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/aws.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/aws.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/serviceaccount-aws-cloud-manager-operator.yaml apiVersion: v1 @@ -25,6 +28,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -34,6 +38,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/crds/customresourcedefinition-awskubernetesengines.infrastructure.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -260,6 +265,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -312,6 +318,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -454,6 +544,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/clusterrole-rhai-aws-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -718,6 +809,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -729,6 +821,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -740,7 +833,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -800,6 +892,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -878,6 +980,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1017,12 +1120,12 @@ rules: - feastoperators - kserves - kueues - - llamastackoperators - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1057,12 +1160,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - llamastackoperators/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1080,12 +1183,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - llamastackoperators/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1497,6 +1600,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -1900,35 +2044,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -1974,6 +2094,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2099,6 +2220,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/clusterrolebinding-rhai-aws-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2113,6 +2235,7 @@ subjects: - kind: ServiceAccount name: aws-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2127,6 +2250,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/role-aws-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2151,6 +2275,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/rbac/rolebinding-aws-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2166,6 +2291,7 @@ subjects: - kind: ServiceAccount name: aws-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2183,6 +2309,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2204,6 +2331,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/aws/manager/deployment-aws-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2315,6 +2443,7 @@ spec: type: RuntimeDefault serviceAccountName: aws-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2378,7 +2507,7 @@ spec: value: "true" - name: RHAI_DISABLE_KUEUE_COMPONENT value: "true" - - name: RHAI_DISABLE_LLAMASTACKOPERATOR_COMPONENT + - name: RHAI_DISABLE_OGX_COMPONENT value: "true" - name: RHAI_DISABLE_MLFLOWOPERATOR_COMPONENT value: "true" @@ -2518,6 +2647,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2674,6 +2804,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2764,6 +2895,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -2923,3 +3055,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/azure-with-pull-secret.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/azure-with-pull-secret.snap.yaml index bc043c98..7472ddac 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/azure-with-pull-secret.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/azure-with-pull-secret.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -49,6 +52,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml # TODO: This is a temporary solution to inject the pull secret into the llmisvc-controller-manager service account. @@ -59,6 +63,7 @@ metadata: namespace: redhat-ods-applications imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -68,6 +73,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -398,6 +404,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -450,6 +457,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -592,6 +683,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrole-rhai-azure-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -856,6 +948,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -867,6 +960,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -878,7 +972,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -938,6 +1031,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -1016,6 +1119,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1155,12 +1259,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1195,12 +1299,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1218,12 +1322,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1635,6 +1739,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -2038,35 +2183,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -2112,6 +2233,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2237,6 +2359,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrolebinding-rhai-azure-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2251,6 +2374,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2265,6 +2389,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/role-azure-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2289,6 +2414,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/rolebinding-azure-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2304,6 +2430,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2321,6 +2448,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2342,6 +2470,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/manager/deployment-azure-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2453,6 +2582,7 @@ spec: type: RuntimeDefault serviceAccountName: azure-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2656,6 +2786,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2812,6 +2943,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2902,6 +3034,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -3065,3 +3198,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/azure-with-related-images.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/azure-with-related-images.snap.yaml index dab39d5a..9f2fca13 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/azure-with-related-images.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/azure-with-related-images.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/serviceaccount-azure-cloud-manager-operator.yaml apiVersion: v1 @@ -25,6 +28,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -34,6 +38,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/crds/customresourcedefinition-azurekubernetesengines.infrastructure.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -260,6 +265,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -312,6 +318,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -454,6 +544,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrole-rhai-azure-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -718,6 +809,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -729,6 +821,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -740,7 +833,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -800,6 +892,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -878,6 +980,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1017,12 +1120,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1057,12 +1160,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1080,12 +1183,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1497,6 +1600,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -1900,35 +2044,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -1974,6 +2094,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2099,6 +2220,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrolebinding-rhai-azure-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2113,6 +2235,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2127,6 +2250,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/role-azure-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2151,6 +2275,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/rolebinding-azure-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2166,6 +2291,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2183,6 +2309,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2204,6 +2331,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/manager/deployment-azure-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2315,6 +2443,7 @@ spec: type: RuntimeDefault serviceAccountName: azure-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2520,6 +2649,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2676,6 +2806,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2766,6 +2897,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -2929,3 +3061,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/coreweave-with-pull-secret.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/coreweave-with-pull-secret.snap.yaml index 03d390e4..bca0f3d1 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/coreweave-with-pull-secret.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/coreweave-with-pull-secret.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -49,6 +52,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml # TODO: This is a temporary solution to inject the pull secret into the llmisvc-controller-manager service account. @@ -59,6 +63,7 @@ metadata: namespace: redhat-ods-applications imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -68,6 +73,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -398,6 +404,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -450,6 +457,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -592,6 +683,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/clusterrole-rhai-coreweave-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -856,6 +948,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -867,6 +960,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -878,7 +972,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -938,6 +1031,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -1016,6 +1119,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1155,12 +1259,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1195,12 +1299,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1218,12 +1322,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1635,6 +1739,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -2038,35 +2183,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -2112,6 +2233,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2237,6 +2359,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/clusterrolebinding-rhai-coreweave-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2251,6 +2374,7 @@ subjects: - kind: ServiceAccount name: coreweave-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2265,6 +2389,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/role-coreweave-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2289,6 +2414,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/rolebinding-coreweave-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2304,6 +2430,7 @@ subjects: - kind: ServiceAccount name: coreweave-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2321,6 +2448,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2342,6 +2470,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/manager/deployment-coreweave-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2453,6 +2582,7 @@ spec: type: RuntimeDefault serviceAccountName: coreweave-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2656,6 +2786,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2812,6 +2943,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2902,6 +3034,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -3061,3 +3194,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/coreweave.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/coreweave.snap.yaml index c6b81284..00756f97 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/coreweave.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/coreweave.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/serviceaccount-coreweave-cloud-manager-operator.yaml apiVersion: v1 @@ -25,6 +28,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -34,6 +38,7 @@ metadata: namespace: redhat-ods-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/crds/customresourcedefinition-coreweavekubernetesengines.infrastructure.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -260,6 +265,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -312,6 +318,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -454,6 +544,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/clusterrole-rhai-coreweave-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -718,6 +809,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -729,6 +821,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -740,7 +833,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -800,6 +892,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -878,6 +980,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1017,12 +1120,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1057,12 +1160,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1080,12 +1183,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1497,6 +1600,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -1900,35 +2044,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -1974,6 +2094,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2099,6 +2220,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/clusterrolebinding-rhai-coreweave-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2113,6 +2235,7 @@ subjects: - kind: ServiceAccount name: coreweave-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2127,6 +2250,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: redhat-ods-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/role-coreweave-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2151,6 +2275,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/rbac/rolebinding-coreweave-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2166,6 +2291,7 @@ subjects: - kind: ServiceAccount name: coreweave-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2183,6 +2309,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2204,6 +2331,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/coreweave/manager/deployment-coreweave-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2315,6 +2443,7 @@ spec: type: RuntimeDefault serviceAccountName: coreweave-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2518,6 +2647,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2674,6 +2804,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2764,6 +2895,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -2923,3 +3055,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." + diff --git a/charts/rhai-on-xks-chart/test/snapshots/with-custom-namespace.snap.yaml b/charts/rhai-on-xks-chart/test/snapshots/with-custom-namespace.snap.yaml index e4ffcd2f..bc9a6163 100644 --- a/charts/rhai-on-xks-chart/test/snapshots/with-custom-namespace.snap.yaml +++ b/charts/rhai-on-xks-chart/test/snapshots/with-custom-namespace.snap.yaml @@ -4,18 +4,21 @@ apiVersion: v1 kind: Namespace metadata: name: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-applications.yaml apiVersion: v1 kind: Namespace metadata: name: rhai-applications + --- # Source: rhai-on-xks-chart/templates/manager/namespace-redhat-ods-operator.yaml apiVersion: v1 kind: Namespace metadata: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -49,6 +52,7 @@ metadata: namespace: rhai-cloudmanager-system imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml # TODO: This is a temporary solution to inject the pull secret into the llmisvc-controller-manager service account. @@ -59,6 +63,7 @@ metadata: namespace: rhai-applications imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/rbac/serviceaccount-redhat-ods-operator-controller-manager.yaml apiVersion: v1 @@ -68,6 +73,7 @@ metadata: namespace: rhai-operator imagePullSecrets: - name: rhai-pull-secret + --- # Source: rhai-on-xks-chart/templates/pull-secret.yaml apiVersion: v1 @@ -398,6 +404,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/crds/customresourcedefinition-kserves.components.platform.opendatahub.io.yaml apiVersion: apiextensions.k8s.io/v1 @@ -450,6 +457,90 @@ spec: spec: description: KserveSpec defines the desired state of Kserve properties: + modelCache: + description: Configures and enables Model Cache integration + properties: + cacheSize: + anyOf: + - type: integer + - type: string + description: |- + CacheSize specifies the storage capacity for the model cache PersistentVolume + and PersistentVolumeClaim (e.g., "100Gi", "500Gi", "1Ti"). + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + managementState: + default: Removed + enum: + - Managed + - Removed + pattern: ^(Managed|Unmanaged|Force|Removed)$ + type: string + nodeNames: + description: |- + NodeNames is a list of specific node names to enable model caching on. + The operator will label these nodes with kserve/localmodel=worker. + Mutually exclusive with NodeSelector. + items: + type: string + minItems: 1 + type: array + nodeSelector: + description: |- + NodeSelector is a label selector that identifies nodes for model caching + using pre-existing node labels (e.g., nvidia.com/gpu). + The operator will label matching nodes with kserve/localmodel=worker. + Mutually exclusive with NodeNames. + properties: + matchExpressions: + description: matchExpressions is a list of label selector requirements. The requirements are ANDed. + items: + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector applies to. + type: string + operator: + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. + type: string + values: + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. + items: + type: string + type: array + x-kubernetes-list-type: atomic + required: + - key + - operator + type: object + type: array + x-kubernetes-list-type: atomic + matchLabels: + additionalProperties: + type: string + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. + type: object + type: object + x-kubernetes-map-type: atomic + type: object + x-kubernetes-validations: + - message: cacheSize is required when managementState is Managed + rule: self.managementState != 'Managed' || has(self.cacheSize) + - message: one non-empty nodeNames or nodeSelector is required when managementState is Managed + rule: self.managementState != 'Managed' || (has(self.nodeNames) && size(self.nodeNames) > 0) || (has(self.nodeSelector) && ((has(self.nodeSelector.matchLabels) && size(self.nodeSelector.matchLabels) > 0) || (has(self.nodeSelector.matchExpressions) && size(self.nodeSelector.matchExpressions) > 0))) + - message: nodeNames and nodeSelector are mutually exclusive + rule: '!(has(self.nodeNames) && has(self.nodeSelector))' modelsAsService: description: Configures and enables Models as a Service integration properties: @@ -592,6 +683,7 @@ spec: storage: true subresources: status: {} + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrole-rhai-azure-cloud-manager-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -856,6 +948,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-redhat-ods-operator-metrics-reader.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -867,6 +960,7 @@ rules: - /metrics verbs: - get + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrole-rhods-operator-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -878,7 +972,6 @@ rules: - "" resources: - clusterversions - - nodes - rhmis verbs: - get @@ -938,6 +1031,16 @@ rules: - patch - update - watch + - apiGroups: + - "" + resources: + - nodes + verbs: + - get + - list + - patch + - update + - watch - apiGroups: - "" resources: @@ -1016,6 +1119,7 @@ rules: - apiGroups: - apps resources: + - daemonsets - deployments - deployments/finalizers - statefulsets @@ -1155,12 +1259,12 @@ rules: - feastoperators - kserves - kueues - - ogxs - mlflowoperators - modelcontrollers - modelmeshservings - modelregistries - modelsasservices + - ogxs - rays - sparkoperators - trainers @@ -1195,12 +1299,12 @@ rules: - feastoperators/status - kserves/status - kueues/status - - ogxs/status - mlflowoperators/status - modelcontrollers/status - modelmeshservings/status - modelregistries/status - modelsasservices/status + - ogxs/status - rays/status - sparkoperators/status - trainers/status @@ -1218,12 +1322,12 @@ rules: - feastoperators/finalizers - kserves/finalizers - kueues/finalizers - - ogxs/finalizers - mlflowoperators/finalizers - modelcontrollers/finalizers - modelmeshservings/finalizers - modelregistries/finalizers - modelsasservices/finalizers + - ogxs/finalizers - rays/finalizers - sparkoperators/finalizers - trainers/finalizers @@ -1635,6 +1739,47 @@ rules: - get - patch - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - configs/finalizers + verbs: + - update + - apiGroups: + - maas.opendatahub.io + resources: + - configs/status + verbs: + - get + - patch + - update + - apiGroups: + - maas.opendatahub.io + resources: + - tenants + verbs: + - delete + - get + - list + - watch + - apiGroups: + - maas.opendatahub.io + resources: + - tenants/status + verbs: + - get - apiGroups: - machinelearning.seldon.io resources: @@ -2038,35 +2183,11 @@ rules: - securitycontextconstraints verbs: - create + - delete - get - list - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - anyuid - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch - - use - - watch - - apiGroups: - - security.openshift.io - resourceNames: - - restricted - resources: - - securitycontextconstraints - verbs: - - create - - get - - list - - patch + - update - use - watch - apiGroups: @@ -2112,6 +2233,7 @@ rules: - inferenceservices - inferenceservices/finalizers - llminferenceserviceconfigs + - localmodelnodegroups - predictors - servingruntimes - servingruntimes/finalizers @@ -2237,6 +2359,7 @@ rules: - patch - update - watch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/clusterrolebinding-rhai-azure-cloud-manager-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2251,6 +2374,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/rbac/clusterrolebinding-rhods-operator-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2265,6 +2389,7 @@ subjects: - kind: ServiceAccount name: rhai-operator-controller-manager namespace: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/role-azure-cloud-manager-leader-election-role.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2289,6 +2414,7 @@ rules: verbs: - create - patch + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/rbac/rolebinding-azure-cloud-manager-leader-election-rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 @@ -2304,6 +2430,7 @@ subjects: - kind: ServiceAccount name: azure-cloud-manager-operator namespace: rhai-cloudmanager-system + --- # Source: rhai-on-xks-chart/templates/manager/service-redhat-ods-operator-controller-manager-metrics-service.yaml apiVersion: v1 @@ -2321,6 +2448,7 @@ spec: targetPort: http selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/webhooks/service-rhai-operator-webhook-service.yaml apiVersion: v1 @@ -2342,6 +2470,7 @@ spec: targetPort: 9443 selector: name: rhai-operator + --- # Source: rhai-on-xks-chart/templates/cloudmanager/azure/manager/deployment-azure-cloud-manager-operator.yaml apiVersion: apps/v1 @@ -2453,6 +2582,7 @@ spec: type: RuntimeDefault serviceAccountName: azure-cloud-manager-operator terminationGracePeriodSeconds: 10 + --- # Source: rhai-on-xks-chart/templates/manager/deployment-rhods-operator.yaml apiVersion: apps/v1 @@ -2656,6 +2786,7 @@ spec: medium: Memory sizeLimit: 10Mi name: tmp + --- # Source: rhai-on-xks-chart/templates/webhooks/mutatingwebhookconfiguration-rhai-operator-mutating-webhook-configuration.yaml apiVersion: admissionregistration.k8s.io/v1 @@ -2812,6 +2943,7 @@ subjects: - kind: ServiceAccount name: rhai-post-install-hook namespace: default + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-crs-job.yaml apiVersion: batch/v1 @@ -2902,6 +3034,7 @@ spec: managementPolicy: Managed EOF echo "Done." + --- # Source: rhai-on-xks-chart/templates/hooks/post-install-gateway-job.yaml apiVersion: batch/v1 @@ -3065,3 +3198,4 @@ spec: name: inference-gateway-config EOF echo "Gateway CR 'inference-gateway' created successfully." +