--- apiVersion: apps/v1 items: - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2026-03-18T16:51:03Z" generation: 1 labels: app.kubernetes.io/component: kserve app.kubernetes.io/name: kserve control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:app.kubernetes.io/component: {} f:app.kubernetes.io/name: {} f:control-plane: {} f:controller-tools.k8s.io: {} f:spec: f:selector: {} f:template: f:metadata: f:annotations: f:kubectl.kubernetes.io/default-container: {} f:labels: f:app.kubernetes.io/name: {} f:control-plane: {} f:controller-tools.k8s.io: {} f:spec: f:containers: k:{"name":"manager"}: .: {} f:args: {} f:env: k:{"name":"POD_NAMESPACE"}: .: {} f:name: {} f:valueFrom: f:fieldRef: {} k:{"name":"SECRET_NAME"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: f:failureThreshold: {} f:httpGet: f:path: {} f:port: {} f:initialDelaySeconds: {} f:timeoutSeconds: {} f:name: {} f:ports: k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: f:failureThreshold: {} f:httpGet: f:path: {} f:port: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:timeoutSeconds: {} f:resources: f:limits: f:cpu: {} f:memory: {} f:requests: f:cpu: {} f:memory: {} f:securityContext: f:allowPrivilegeEscalation: {} f:capabilities: f:drop: {} f:privileged: {} f:readOnlyRootFilesystem: {} f:runAsNonRoot: {} f:volumeMounts: k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:securityContext: f:runAsNonRoot: {} f:seccompProfile: f:type: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: k:{"name":"cert"}: .: {} f:name: {} f:secret: f:defaultMode: {} f:secretName: {} manager: kubectl operation: Apply time: "2026-03-18T16:51:03Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:51:40Z" name: kserve-controller-manager namespace: kserve resourceVersion: "12476" uid: ed9f3274-03e9-4f3e-8e12-30125c7953d9 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: annotations: kubectl.kubernetes.io/default-container: manager creationTimestamp: null labels: app.kubernetes.io/name: kserve-controller-manager control-plane: kserve-controller-manager controller-tools.k8s.io: "1.0" spec: containers: - args: - --metrics-addr=127.0.0.1:8080 - --leader-elect env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: SECRET_NAME value: kserve-webhook-server-cert image: quay.io/opendatahub/kserve-controller@sha256:3d54a8aa01ac1d74b006c7cdf14f31418e8eeaa1adc54e87f72164431e694adb imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 5 httpGet: path: /healthz port: 8081 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 5 httpGet: path: /readyz port: 8081 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 resources: limits: cpu: 100m memory: 300Mi requests: cpu: 50m memory: 200Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsNonRoot: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccount: kserve-controller-manager serviceAccountName: kserve-controller-manager terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: kserve-webhook-server-cert status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:51:40Z" lastUpdateTime: "2026-03-18T16:51:40Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:51:03Z" lastUpdateTime: "2026-03-18T16:51:40Z" message: ReplicaSet "kserve-controller-manager-69d7c9bbdc" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2026-03-18T16:51:03Z" generation: 1 labels: app.kubernetes.io/component: controller app.kubernetes.io/name: llmisvc-controller-manager control-plane: llmisvc-controller-manager controller-tools.k8s.io: "1.0" managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:app.kubernetes.io/component: {} f:app.kubernetes.io/name: {} f:control-plane: {} f:controller-tools.k8s.io: {} f:spec: f:selector: {} f:template: f:metadata: f:annotations: f:kubectl.kubernetes.io/default-container: {} f:labels: f:app.kubernetes.io/component: {} f:app.kubernetes.io/name: {} f:control-plane: {} f:controller-tools.k8s.io: {} f:spec: f:containers: k:{"name":"manager"}: .: {} f:args: {} f:command: {} f:env: k:{"name":"POD_NAMESPACE"}: .: {} f:name: {} f:valueFrom: f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: f:failureThreshold: {} f:httpGet: f:path: {} f:port: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:timeoutSeconds: {} f:name: {} f:ports: k:{"containerPort":8443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: f:failureThreshold: {} f:httpGet: f:path: {} f:port: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:timeoutSeconds: {} f:resources: f:limits: f:cpu: {} f:memory: {} f:requests: f:cpu: {} f:memory: {} f:securityContext: f:allowPrivilegeEscalation: {} f:capabilities: f:drop: {} f:privileged: {} f:readOnlyRootFilesystem: {} f:runAsNonRoot: {} f:seccompProfile: f:type: {} f:volumeMounts: k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:securityContext: f:runAsNonRoot: {} f:seccompProfile: f:type: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: k:{"name":"cert"}: .: {} f:name: {} f:secret: f:defaultMode: {} f:secretName: {} manager: kubectl operation: Apply time: "2026-03-18T16:51:03Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:51:40Z" name: llmisvc-controller-manager namespace: kserve resourceVersion: "12470" uid: 1ecf14dc-9ac3-4eb7-8f9f-372d20e3a7d7 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: control-plane: llmisvc-controller-manager controller-tools.k8s.io: "1.0" strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: annotations: kubectl.kubernetes.io/default-container: manager creationTimestamp: null labels: app.kubernetes.io/component: controller app.kubernetes.io/name: llmisvc-controller-manager control-plane: llmisvc-controller-manager controller-tools.k8s.io: "1.0" spec: containers: - args: - --metrics-addr=127.0.0.1:8443 - --leader-elect command: - /manager env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace image: ghcr.io/opendatahub-io/kserve/odh-kserve-llmisvc-controller:release-v0.17 imagePullPolicy: Always livenessProbe: failureThreshold: 5 httpGet: path: /healthz port: 8081 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 5 name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP - containerPort: 8443 name: metrics protocol: TCP readinessProbe: failureThreshold: 5 httpGet: path: /readyz port: 8081 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 5 successThreshold: 1 timeoutSeconds: 5 resources: limits: cpu: 100m memory: 300Mi requests: cpu: 100m memory: 300Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL privileged: false readOnlyRootFilesystem: true runAsNonRoot: true seccompProfile: type: RuntimeDefault terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccount: llmisvc-controller-manager serviceAccountName: llmisvc-controller-manager terminationGracePeriodSeconds: 30 volumes: - name: cert secret: defaultMode: 420 secretName: llmisvc-webhook-server-cert status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:51:40Z" lastUpdateTime: "2026-03-18T16:51:40Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:51:03Z" lastUpdateTime: "2026-03-18T16:51:40Z" message: ReplicaSet "llmisvc-controller-manager-68cc5db7c4" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app.kubernetes.io/component":"server","app.kubernetes.io/name":"model-serving-api","app.kubernetes.io/part-of":"odh-model-controller"},"name":"model-serving-api","namespace":"kserve"},"spec":{"selector":{"matchLabels":{"app":"model-serving-api","app.kubernetes.io/component":"server","app.kubernetes.io/name":"model-serving-api","app.kubernetes.io/part-of":"odh-model-controller"}},"template":{"metadata":{"labels":{"app":"model-serving-api","app.kubernetes.io/component":"server","app.kubernetes.io/name":"model-serving-api","app.kubernetes.io/part-of":"odh-model-controller"}},"spec":{"containers":[{"env":[{"name":"TLS_CERT_DIR","value":"/tls"},{"name":"GATEWAY_LABEL_SELECTOR","value":""}],"image":"quay.io/opendatahub/odh-model-serving-api:fast","livenessProbe":{"httpGet":{"path":"/healthz","port":8443,"scheme":"HTTPS"},"initialDelaySeconds":5,"periodSeconds":10},"name":"server","ports":[{"containerPort":8443,"name":"https","protocol":"TCP"},{"containerPort":9090,"name":"metrics","protocol":"TCP"}],"readinessProbe":{"httpGet":{"path":"/readyz","port":8443,"scheme":"HTTPS"},"initialDelaySeconds":5,"periodSeconds":10},"resources":{"limits":{"cpu":"200m","memory":"128Mi"},"requests":{"cpu":"50m","memory":"64Mi"}},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]},"readOnlyRootFilesystem":true},"volumeMounts":[{"mountPath":"/tls","name":"tls-certs","readOnly":true}]}],"securityContext":{"runAsNonRoot":true,"seccompProfile":{"type":"RuntimeDefault"}},"serviceAccountName":"model-serving-api","topologySpreadConstraints":[{"labelSelector":{"matchLabels":{"app":"model-serving-api","app.kubernetes.io/component":"server","app.kubernetes.io/name":"model-serving-api","app.kubernetes.io/part-of":"odh-model-controller"}},"maxSkew":1,"topologyKey":"topology.kubernetes.io/zone","whenUnsatisfiable":"ScheduleAnyway"},{"labelSelector":{"matchLabels":{"app":"model-serving-api","app.kubernetes.io/component":"server","app.kubernetes.io/name":"model-serving-api","app.kubernetes.io/part-of":"odh-model-controller"}},"maxSkew":1,"topologyKey":"kubernetes.io/hostname","whenUnsatisfiable":"ScheduleAnyway"}],"volumes":[{"name":"tls-certs","secret":{"secretName":"model-serving-api-tls"}}]}}}} creationTimestamp: "2026-03-18T16:51:41Z" generation: 1 labels: app.kubernetes.io/component: server app.kubernetes.io/name: model-serving-api app.kubernetes.io/part-of: odh-model-controller managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:kubectl.kubernetes.io/last-applied-configuration: {} f:labels: .: {} f:app.kubernetes.io/component: {} f:app.kubernetes.io/name: {} f:app.kubernetes.io/part-of: {} f:spec: f:progressDeadlineSeconds: {} f:replicas: {} f:revisionHistoryLimit: {} f:selector: {} f:strategy: f:rollingUpdate: .: {} f:maxSurge: {} f:maxUnavailable: {} f:type: {} f:template: f:metadata: f:labels: .: {} f:app: {} f:app.kubernetes.io/component: {} f:app.kubernetes.io/name: {} f:app.kubernetes.io/part-of: {} f:spec: f:containers: k:{"name":"server"}: .: {} f:env: .: {} k:{"name":"GATEWAY_LABEL_SELECTOR"}: .: {} f:name: {} k:{"name":"TLS_CERT_DIR"}: .: {} f:name: {} f:value: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":8443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":9090,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:limits: .: {} f:cpu: {} f:memory: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:readOnlyRootFilesystem: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/tls"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:seccompProfile: .: {} f:type: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:topologySpreadConstraints: .: {} k:{"topologyKey":"kubernetes.io/hostname","whenUnsatisfiable":"ScheduleAnyway"}: .: {} f:labelSelector: {} f:maxSkew: {} f:topologyKey: {} f:whenUnsatisfiable: {} k:{"topologyKey":"topology.kubernetes.io/zone","whenUnsatisfiable":"ScheduleAnyway"}: .: {} f:labelSelector: {} f:maxSkew: {} f:topologyKey: {} f:whenUnsatisfiable: {} f:volumes: .: {} k:{"name":"tls-certs"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} manager: kubectl-client-side-apply operation: Update time: "2026-03-18T16:51:41Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:deployment.kubernetes.io/revision: {} f:status: f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:replicas: {} f:unavailableReplicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T17:01:42Z" name: model-serving-api namespace: kserve resourceVersion: "17833" uid: d05a1cbc-a393-4205-b515-018dd220180a spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: model-serving-api app.kubernetes.io/component: server app.kubernetes.io/name: model-serving-api app.kubernetes.io/part-of: odh-model-controller strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: creationTimestamp: null labels: app: model-serving-api app.kubernetes.io/component: server app.kubernetes.io/name: model-serving-api app.kubernetes.io/part-of: odh-model-controller spec: containers: - env: - name: TLS_CERT_DIR value: /tls - name: GATEWAY_LABEL_SELECTOR image: quay.io/opendatahub/odh-model-serving-api:fast imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 3 httpGet: path: /healthz port: 8443 scheme: HTTPS initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: server ports: - containerPort: 8443 name: https protocol: TCP - containerPort: 9090 name: metrics protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8443 scheme: HTTPS initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: cpu: 200m memory: 128Mi requests: cpu: 50m memory: 64Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: true terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tls name: tls-certs readOnly: true dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault serviceAccount: model-serving-api serviceAccountName: model-serving-api terminationGracePeriodSeconds: 30 topologySpreadConstraints: - labelSelector: matchLabels: app: model-serving-api app.kubernetes.io/component: server app.kubernetes.io/name: model-serving-api app.kubernetes.io/part-of: odh-model-controller maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway - labelSelector: matchLabels: app: model-serving-api app.kubernetes.io/component: server app.kubernetes.io/name: model-serving-api app.kubernetes.io/part-of: odh-model-controller maxSkew: 1 topologyKey: kubernetes.io/hostname whenUnsatisfiable: ScheduleAnyway volumes: - name: tls-certs secret: defaultMode: 420 secretName: model-serving-api-tls status: conditions: - lastTransitionTime: "2026-03-18T16:51:41Z" lastUpdateTime: "2026-03-18T16:51:41Z" message: Deployment does not have minimum availability. reason: MinimumReplicasUnavailable status: "False" type: Available - lastTransitionTime: "2026-03-18T17:01:42Z" lastUpdateTime: "2026-03-18T17:01:42Z" message: ReplicaSet "model-serving-api-9699c8d45" has timed out progressing. reason: ProgressDeadlineExceeded status: "False" type: Progressing observedGeneration: 1 replicas: 1 unavailableReplicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{},"labels":{"app":"odh-model-controller","control-plane":"odh-model-controller"},"name":"odh-model-controller","namespace":"kserve"},"spec":{"replicas":1,"selector":{"matchLabels":{"control-plane":"odh-model-controller"}},"template":{"metadata":{"annotations":{"kubectl.kubernetes.io/default-container":"manager"},"labels":{"app":"odh-model-controller","control-plane":"odh-model-controller"}},"spec":{"containers":[{"args":["--metrics-bind-address=:8080","--leader-elect","--health-probe-bind-address=:8081"],"command":["/manager"],"env":[{"name":"POD_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}},{"name":"NIM_STATE","value":"managed"},{"name":"KSERVE_STATE","value":"managed"},{"name":"MODELREGISTRY_STATE","value":"removed"}],"image":"quay.io/opendatahub/odh-model-controller:fast","imagePullPolicy":"Always","livenessProbe":{"httpGet":{"path":"/healthz","port":8081},"initialDelaySeconds":15,"periodSeconds":20},"name":"manager","ports":[{"containerPort":9443,"name":"webhook-server","protocol":"TCP"}],"readinessProbe":{"httpGet":{"path":"/readyz","port":8081},"initialDelaySeconds":5,"periodSeconds":10},"resources":{"limits":{"cpu":"500m","memory":"2Gi"},"requests":{"cpu":"10m","memory":"64Mi"}},"securityContext":{"allowPrivilegeEscalation":false,"capabilities":{"drop":["ALL"]}},"volumeMounts":[{"mountPath":"/tmp/k8s-webhook-server/serving-certs","name":"cert","readOnly":true}]}],"securityContext":{"runAsNonRoot":true},"serviceAccountName":"odh-model-controller","terminationGracePeriodSeconds":10,"volumes":[{"name":"cert","secret":{"defaultMode":420,"secretName":"odh-model-controller-webhook-cert"}}]}}}} creationTimestamp: "2026-03-18T16:51:41Z" generation: 1 labels: app: odh-model-controller control-plane: odh-model-controller managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:kubectl.kubernetes.io/last-applied-configuration: {} f:labels: .: {} f:app: {} f:control-plane: {} f:spec: f:progressDeadlineSeconds: {} f:replicas: {} f:revisionHistoryLimit: {} f:selector: {} f:strategy: f:rollingUpdate: .: {} f:maxSurge: {} f:maxUnavailable: {} f:type: {} f:template: f:metadata: f:annotations: .: {} f:kubectl.kubernetes.io/default-container: {} f:labels: .: {} f:app: {} f:control-plane: {} f:spec: f:containers: k:{"name":"manager"}: .: {} f:args: {} f:command: {} f:env: .: {} k:{"name":"KSERVE_STATE"}: .: {} f:name: {} f:value: {} k:{"name":"MODELREGISTRY_STATE"}: .: {} f:name: {} f:value: {} k:{"name":"NIM_STATE"}: .: {} f:name: {} f:value: {} k:{"name":"POD_NAMESPACE"}: .: {} f:name: {} f:valueFrom: .: {} f:fieldRef: {} f:image: {} f:imagePullPolicy: {} f:livenessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:name: {} f:ports: .: {} k:{"containerPort":9443,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:readinessProbe: .: {} f:failureThreshold: {} f:httpGet: .: {} f:path: {} f:port: {} f:scheme: {} f:initialDelaySeconds: {} f:periodSeconds: {} f:successThreshold: {} f:timeoutSeconds: {} f:resources: .: {} f:limits: .: {} f:cpu: {} f:memory: {} f:requests: .: {} f:cpu: {} f:memory: {} f:securityContext: .: {} f:allowPrivilegeEscalation: {} f:capabilities: .: {} f:drop: {} f:terminationMessagePath: {} f:terminationMessagePolicy: {} f:volumeMounts: .: {} k:{"mountPath":"/tmp/k8s-webhook-server/serving-certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:dnsPolicy: {} f:restartPolicy: {} f:schedulerName: {} f:securityContext: .: {} f:runAsNonRoot: {} f:serviceAccount: {} f:serviceAccountName: {} f:terminationGracePeriodSeconds: {} f:volumes: .: {} k:{"name":"cert"}: .: {} f:name: {} f:secret: .: {} f:defaultMode: {} f:secretName: {} manager: kubectl-client-side-apply operation: Update time: "2026-03-18T16:51:41Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:51:56Z" name: odh-model-controller namespace: kserve resourceVersion: "12776" uid: 0d7645a3-f45f-42e8-832c-6d9ef461db66 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: control-plane: odh-model-controller strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: annotations: kubectl.kubernetes.io/default-container: manager creationTimestamp: null labels: app: odh-model-controller control-plane: odh-model-controller spec: containers: - args: - --metrics-bind-address=:8080 - --leader-elect - --health-probe-bind-address=:8081 command: - /manager env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: NIM_STATE value: managed - name: KSERVE_STATE value: managed - name: MODELREGISTRY_STATE value: removed image: quay.io/opendatahub/odh-model-controller:fast imagePullPolicy: Always livenessProbe: failureThreshold: 3 httpGet: path: /healthz port: 8081 scheme: HTTP initialDelaySeconds: 15 periodSeconds: 20 successThreshold: 1 timeoutSeconds: 1 name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8081 scheme: HTTP initialDelaySeconds: 5 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: cpu: 500m memory: 2Gi requests: cpu: 10m memory: 64Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: runAsNonRoot: true serviceAccount: odh-model-controller serviceAccountName: odh-model-controller terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: odh-model-controller-webhook-cert status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:51:56Z" lastUpdateTime: "2026-03-18T16:51:56Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:51:41Z" lastUpdateTime: "2026-03-18T16:51:56Z" message: ReplicaSet "odh-model-controller-696fc77849" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2026-03-18T16:51:03Z" generation: 1 labels: app: seaweedfs managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:app: {} f:spec: f:selector: {} f:strategy: f:type: {} f:template: f:metadata: f:labels: f:app: {} f:spec: f:containers: k:{"name":"seaweedfs"}: .: {} f:args: {} f:env: k:{"name":"AWS_ACCESS_KEY_ID"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} k:{"name":"AWS_SECRET_ACCESS_KEY"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: k:{"containerPort":8333,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":8888,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":9333,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":9340,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} k:{"containerPort":23646,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:resources: f:requests: f:cpu: {} f:memory: {} f:volumeMounts: k:{"mountPath":"/data"}: .: {} f:mountPath: {} f:name: {} f:volumes: k:{"name":"data"}: .: {} f:emptyDir: {} f:name: {} manager: kubectl operation: Apply time: "2026-03-18T16:51:03Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:51:10Z" name: seaweedfs namespace: kserve resourceVersion: "12280" uid: 636e3151-e8ef-44ca-b760-3102fe9c3ecd spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: seaweedfs strategy: type: Recreate template: metadata: creationTimestamp: null labels: app: seaweedfs spec: containers: - args: - mini - -dir=/data - -s3 env: - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: key: accesskey name: mlpipeline-s3-artifact - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: secretkey name: mlpipeline-s3-artifact image: docker.io/chrislusf/seaweedfs:4.07@sha256:10fa7df90911dd83439f4d3d792a1c5c6c630121cb2094ba209f42d4b0ca975d imagePullPolicy: Always name: seaweedfs ports: - containerPort: 8333 name: s3 protocol: TCP - containerPort: 23646 name: admin-ui protocol: TCP - containerPort: 9333 name: master-ui protocol: TCP - containerPort: 8888 name: filer-ui protocol: TCP - containerPort: 9340 name: volume protocol: TCP resources: requests: cpu: 10m memory: 32Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /data name: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - emptyDir: {} name: data status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:51:10Z" lastUpdateTime: "2026-03-18T16:51:10Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:51:03Z" lastUpdateTime: "2026-03-18T16:51:10Z" message: ReplicaSet "seaweedfs-748c497bc" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "2" creationTimestamp: "2026-03-18T16:52:09Z" generation: 2 labels: app: seaweedfs-tls-custom managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:app: {} f:spec: f:selector: {} f:strategy: f:type: {} f:template: f:metadata: f:labels: f:app: {} f:spec: f:containers: k:{"name":"seaweedfs-tls-custom"}: .: {} f:env: k:{"name":"AWS_ACCESS_KEY_ID"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} k:{"name":"AWS_SECRET_ACCESS_KEY"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: k:{"containerPort":8333,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:resources: f:requests: f:cpu: {} f:memory: {} f:volumeMounts: k:{"mountPath":"/data"}: .: {} f:mountPath: {} f:name: {} f:volumes: k:{"name":"data"}: .: {} f:emptyDir: {} f:name: {} manager: kubectl operation: Apply time: "2026-03-18T16:52:09Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:spec: f:template: f:spec: f:containers: k:{"name":"seaweedfs-tls-custom"}: f:args: {} f:volumeMounts: k:{"mountPath":"/certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} f:volumes: k:{"name":"seaweedfs-tls-custom"}: .: {} f:name: {} f:projected: .: {} f:defaultMode: {} f:sources: {} manager: kubectl-patch operation: Update time: "2026-03-18T16:52:12Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:52:17Z" name: seaweedfs-tls-custom namespace: kserve resourceVersion: "13022" uid: 6667f1ff-d588-49b8-9825-320f59d32388 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: seaweedfs-tls-custom strategy: type: Recreate template: metadata: creationTimestamp: null labels: app: seaweedfs-tls-custom spec: containers: - args: - mini - -dir=/data - -s3 - -s3.cert.file=/certs/custom.crt - -s3.key.file=/certs/custom.key env: - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: key: accesskey name: seaweedfs-tls-custom-artifact - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: secretkey name: seaweedfs-tls-custom-artifact image: docker.io/chrislusf/seaweedfs:4.07@sha256:10fa7df90911dd83439f4d3d792a1c5c6c630121cb2094ba209f42d4b0ca975d imagePullPolicy: Always name: seaweedfs-tls-custom ports: - containerPort: 8333 name: s3 protocol: TCP resources: requests: cpu: 10m memory: 32Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /certs name: seaweedfs-tls-custom readOnly: true - mountPath: /data name: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: seaweedfs-tls-custom projected: defaultMode: 420 sources: - secret: items: - key: custom.crt path: custom.crt - key: custom.key path: custom.key - key: root.crt path: root.crt name: seaweedfs-tls-custom - emptyDir: {} name: data status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:52:17Z" lastUpdateTime: "2026-03-18T16:52:17Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:52:09Z" lastUpdateTime: "2026-03-18T16:52:17Z" message: ReplicaSet "seaweedfs-tls-custom-5c88b85bb7" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 2 readyReplicas: 1 replicas: 1 updatedReplicas: 1 - apiVersion: apps/v1 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "1" creationTimestamp: "2026-03-18T16:52:26Z" generation: 1 labels: app: seaweedfs-tls-serving managedFields: - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:labels: f:app: {} f:spec: f:selector: {} f:strategy: f:type: {} f:template: f:metadata: f:labels: f:app: {} f:spec: f:containers: k:{"name":"seaweedfs-tls-serving"}: .: {} f:args: {} f:env: k:{"name":"AWS_ACCESS_KEY_ID"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} k:{"name":"AWS_SECRET_ACCESS_KEY"}: .: {} f:name: {} f:valueFrom: f:secretKeyRef: {} f:image: {} f:imagePullPolicy: {} f:name: {} f:ports: k:{"containerPort":8333,"protocol":"TCP"}: .: {} f:containerPort: {} f:name: {} f:protocol: {} f:resources: f:requests: f:cpu: {} f:memory: {} f:volumeMounts: k:{"mountPath":"/certs"}: .: {} f:mountPath: {} f:name: {} f:readOnly: {} k:{"mountPath":"/data"}: .: {} f:mountPath: {} f:name: {} f:volumes: k:{"name":"data"}: .: {} f:emptyDir: {} f:name: {} k:{"name":"seaweedfs-tls-serving"}: .: {} f:name: {} f:projected: f:defaultMode: {} f:sources: {} manager: kubectl operation: Apply time: "2026-03-18T16:52:26Z" - apiVersion: apps/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:deployment.kubernetes.io/revision: {} f:status: f:availableReplicas: {} f:conditions: .: {} k:{"type":"Available"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} k:{"type":"Progressing"}: .: {} f:lastTransitionTime: {} f:lastUpdateTime: {} f:message: {} f:reason: {} f:status: {} f:type: {} f:observedGeneration: {} f:readyReplicas: {} f:replicas: {} f:updatedReplicas: {} manager: kube-controller-manager operation: Update subresource: status time: "2026-03-18T16:52:27Z" name: seaweedfs-tls-serving namespace: kserve resourceVersion: "13148" uid: 918cffeb-6012-4f00-a003-7bc57445dd29 spec: progressDeadlineSeconds: 600 replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app: seaweedfs-tls-serving strategy: type: Recreate template: metadata: creationTimestamp: null labels: app: seaweedfs-tls-serving spec: containers: - args: - mini - -dir=/data - -s3 - -s3.cert.file=/certs/tls.crt - -s3.key.file=/certs/tls.key env: - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: key: accesskey name: seaweedfs-tls-serving-artifact - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: key: secretkey name: seaweedfs-tls-serving-artifact image: docker.io/chrislusf/seaweedfs:4.07@sha256:10fa7df90911dd83439f4d3d792a1c5c6c630121cb2094ba209f42d4b0ca975d imagePullPolicy: Always name: seaweedfs-tls-serving ports: - containerPort: 8333 name: s3 protocol: TCP resources: requests: cpu: 10m memory: 32Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /certs name: seaweedfs-tls-serving readOnly: true - mountPath: /data name: data dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: seaweedfs-tls-serving projected: defaultMode: 420 sources: - secret: items: - key: tls.crt path: tls.crt - key: tls.key path: tls.key name: seaweedfs-tls-serving - emptyDir: {} name: data status: availableReplicas: 1 conditions: - lastTransitionTime: "2026-03-18T16:52:27Z" lastUpdateTime: "2026-03-18T16:52:27Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-03-18T16:52:26Z" lastUpdateTime: "2026-03-18T16:52:27Z" message: ReplicaSet "seaweedfs-tls-serving-7fd5766db9" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 1 readyReplicas: 1 replicas: 1 updatedReplicas: 1 kind: DeploymentList metadata: resourceVersion: "34166"