Skip to content

Commit

Permalink
Add Seldon Deploy v2.2.0-rc2 Helm Chart (#50)
Browse files Browse the repository at this point in the history
  • Loading branch information
RafalSkolasinski committed Oct 4, 2023
1 parent d6c058e commit aed3f5b
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 14 deletions.
4 changes: 2 additions & 2 deletions helm-charts/seldon-deploy/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apiVersion: v2
appVersion: "2.1.1"
appVersion: "2.2.0-rc2"
description: A Helm chart for Kubernetes
name: seldon-deploy
version: 2.1.1
version: 2.2.0-rc2
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ data:
{ "ID": "USER_MANAGEMENT_ENABLED", "Value": "true" },
{ "ID": "SELDON_DEPLOYMENTS_ENABLED", "Value": "{{ .Values.seldon.enabled }}" },
{ "ID": "KNATIVE_SERVICES_ENABLED", "Value": "{{ .Values.seldon.knativeEnabled }}" },
{ "ID": "SELDON_PIPELINES_ENABLED", "Value": "{{ .Values.seldonCoreV2.enabled }}" }
{ "ID": "SELDON_PIPELINES_ENABLED", "Value": "{{ .Values.seldonCoreV2.enabled }}" },
{ "ID": "INFERENCE_LOGS_SERVICE_ENABLED", "Value": "{{ .Values.inferenceLogs.enabled }}" }
]
{{- end -}}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ data:
ingressNamespace: {{ .Values.ingressGateway.ingressNamespace }}
seldonCurlForm: {{ .Values.seldon.curlForm | quote }}
seldonTensorflowCurlForm: {{ .Values.seldon.tensorFlowCurlForm | quote }}
seldonV2CurlForm: {{ .Values.seldon.v2CurlForm | quote }}
seldonRequestForm: {{ .Values.seldon.seldonRequestForm | quote }}
seldonTensorflowRequestForm: {{ .Values.seldon.tensorflowRequestForm | quote }}
seldonV2RequestForm: {{ .Values.seldon.v2RequestForm | quote }}
Expand Down
12 changes: 12 additions & 0 deletions helm-charts/seldon-deploy/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,14 @@ spec:
value: "{{ .Values.batchjobs.storageInitializer.image }}"
- name: "BATCHJOBS_PVC_DEFAULT_SIZE"
value: "{{ .Values.batchjobs.pvc.defaultSize }}"
- name: "BATCHJOBS_REQUESTS_CPU"
value: "{{ .Values.batchjobs.resources.requests.cpu }}"
- name: "BATCHJOBS_LIMITS_CPU"
value: "{{ .Values.batchjobs.resources.limits.cpu }}"
- name: "BATCHJOBS_REQUESTS_MEMORY"
value: "{{ .Values.batchjobs.resources.requests.memory }}"
- name: "BATCHJOBS_LIMITS_MEMORY"
value: "{{ .Values.batchjobs.resources.limits.memory }}"
- name: "WORKFLOW_SECURITY_CONTEXT_RUN_AS_USER"
value: "{{ .Values.workflow.securityContext.runAsUser }}"
- name: "WORKFLOW_SECURITY_CONTEXT_FS_GROUP"
Expand Down Expand Up @@ -331,6 +339,10 @@ spec:
- name: "APP_LOGS_ELASTIC_POD_NAME_FIELD"
value: "{{ .Values.applicationLogs.elasticPodNameField }}"
{{- end}}
{{- if .Values.inferenceLogs.maxPayloadsPerRequest }}
- name: "INFERENCE_LOGS_MAX_PAYLOADS_PER_REQUEST"
value: "{{ .Values.inferenceLogs.maxPayloadsPerRequest }}"
{{- end}}
livenessProbe:
httpGet:
path: /seldon-deploy/api/status
Expand Down
39 changes: 37 additions & 2 deletions helm-charts/seldon-deploy/templates/request-logger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -122,10 +122,12 @@ spec:
- name: METRONOME_SERVER_KAFKA_CONSUMER_SECURITY_PROTOCOL
value: {{ .Values.requestLogger.kafka_consumer.protocol | quote }}
{{- if (eq .Values.requestLogger.kafka_consumer.protocol "SSL") }}
{{- if .Values.requestLogger.kafka_consumer.ssl.client.secret }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SSL_KEY_LOCATION
value: {{ .Values.requestLogger.kafka_consumer.ssl.client.keyPath | quote }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SSL_CERTIFICATE_LOCATION
value: {{ .Values.requestLogger.kafka_consumer.ssl.client.crtPath | quote }}
{{- end }}
{{- if .Values.requestLogger.kafka_consumer.ssl.client.brokerValidationSecret }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SSL_CA_LOCATION
value: {{ .Values.requestLogger.kafka_consumer.ssl.client.brokerCaPath | quote }}
Expand All @@ -137,14 +139,47 @@ spec:
{{- if (eq .Values.requestLogger.kafka_consumer.protocol "SASL_SSL") }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_MECHANISM
value: {{ .Values.requestLogger.kafka_consumer.sasl.mechanism | quote }}
{{- if (eq .Values.requestLogger.kafka_consumer.sasl.mechanism "OAUTHBEARER") }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_METHOD
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: method
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_CLIENT_ID
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: "client_id"
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: "client_secret"
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_TOKEN_ENDPOINT_URL
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: "token_endpoint_url"
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_EXTENSIONS
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: "extensions"
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_OAUTHBEARER_SCOPE
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: "scope"
{{- else }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_USERNAME
value: {{ .Values.requestLogger.kafka_consumer.sasl.client.username | quote }}
{{- if .Values.requestLogger.kafka_consumer.sasl.client.secret }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SASL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote}}
key: {{ base .Values.requestLogger.kafka_consumer.sasl.client.passwordPath | quote}}
name: {{ .Values.requestLogger.kafka_consumer.sasl.client.secret | quote }}
key: {{ base .Values.requestLogger.kafka_consumer.sasl.client.passwordPath | quote }}
{{- end }}
{{- end }}
{{- if .Values.requestLogger.kafka_consumer.ssl.client.brokerValidationSecret }}
- name: METRONOME_SERVER_KAFKA_CONSUMER_SSL_CA_LOCATION
Expand Down
35 changes: 26 additions & 9 deletions helm-charts/seldon-deploy/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ loadtest:
image: seldonio/hey-loadtester:0.2

alibidetect:
image: seldonio/alibi-detect-server:1.15.0
image: seldonio/alibi-detect-server:1.17.1

nameOverride: ""
fullnameOverride: ""
Expand All @@ -42,6 +42,10 @@ enableAppAnalytics: true

env:
USERID_CLAIM_KEY: "preferred_username" # claim to be used as userid (defaults to "preferred_username")
SA_ID_CLAIM_KEY: "preferred_username" # claim to be used as userid for service accounts (defaults to "preferred_username")
USERNAME_CLAIM_KEY: "name" # claim to be used as username (defaults to "name")
EMAIL_CLAIM_KEY: "email" # claim to be used as user email (defaults to "email")
GROUPS_CLAIM_KEY: "groups" # claim to be used as user groups (defaults to "groups")
OIDC_PROVIDER: "" # oidc issuerURL
CLIENT_ID: "deploy-server" # oidc client ID
CLIENT_SECRET: "deploy-secret" # oidc client secret
Expand Down Expand Up @@ -112,13 +116,19 @@ workflow:

batchjobs:
processor:
image: seldonio/seldon-core-s2i-python37:1.16.0
image: seldonio/seldon-core-s2i-python37:1.17.1
processorV2:
image: seldonio/mlserver:1.3.1-slim
image: seldonio/mlserver:1.4.0.rc5-slim
storageInitializer:
image: seldonio/rclone-storage-initializer:1.16.0
image: seldonio/rclone-storage-initializer:1.17.1
pvc:
defaultSize: 1Gi
resources:
limits:
memory: 200Mi
requests:
cpu: 200m
memory: 200Mi

seldon:
protocol: "http"
Expand All @@ -132,6 +142,9 @@ seldon:
tensorFlowCurlForm: |
CLUSTER_IP=$(kubectl -n {{ .IngressNamespace }} get service {{ .IngressServiceName }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')<br>
curl -k -H "{{ .TokenHeader }}: {{ .Token }} " -H "Content-Type: application/json" {{ .SeldonProtocol }}://$CLUSTER_IP/seldon/{{ .Namespace }}/{{ .ModelName }}/v1/models/:predict -d '{{ .Payload }}'
v2CurlForm: |
CLUSTER_IP=$(kubectl -n {{ .IngressNamespace }} get service {{ .IngressServiceName }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')<br>
curl -k -H "{{ .TokenHeader }}: {{ .Token }} " -H "Content-Type: application/json" {{ .SeldonProtocol }}://$CLUSTER_IP/seldon/{{ .Namespace }}/{{ .ModelName }}/v2/models/{{ .GraphModelName }}/infer -d '{{ .Payload }}'
#Forms for cluster-internal calls.
#e.g. could be changed to skip ingress by setting to "http://{{ .ModelName }}-{{ .ModelName }}-{{ .Predictor }}.{{ .Namespace }}:8000/api/v0.1/predictions"
seldonRequestForm: "{{ .SeldonProtocol }}://{{ .IngressServiceName }}/seldon/{{ .Namespace }}/{{ .ModelName }}/api/v0.1/predictions"
Expand All @@ -147,10 +160,11 @@ seldonCoreV2:
enabled: false
curlForm: |
CLUSTER_IP=$(kubectl -n {{ .IngressNamespace }} get service {{ .IngressServiceName }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')<br>
curl -v {{ .SeldonProtocol }}://$CLUSTER_IP/v2/models/{{ .ModelName }}/infer -H "Content-Type: application/json" -H "seldon-model: {{ .ModelName }}.pipeline" -d '{{ .Payload }}'
curl -v {{ .SeldonProtocol }}://$CLUSTER_IP/v2/models/{{ .ModelName }}/infer -H "Content-Type: application/json" -H "seldon-model: {{ .ModelName }}.pipeline" -H "Host: {{ .Namespace }}.inference.seldon" -d '{{ .Payload }}'
requestForm: "{{ .SeldonProtocol }}://seldon-mesh.{{ .Namespace }}.svc.cluster.local/v2/pipelines/{{ .ModelName }}/infer"
explainForm: "{{ .SeldonProtocol }}://seldon-mesh.{{ .Namespace }}.svc.cluster.local/v2/models/{{ .GraphModelName }}/infer"


external:
protocol: "http"

Expand Down Expand Up @@ -226,7 +240,7 @@ elasticsearch:
#detectors are created in the namespace requestLogger.namespace.name so rbac is created there
requestLogger:
create: true
image: seldonio/metronome:1.5.1
image: seldonio/metronome:1.6.0
#increase logger replicas if there are high traffic volumes
replicas: 1
imagePullPolicy: IfNotPresent
Expand Down Expand Up @@ -263,9 +277,8 @@ requestLogger:
brokerValidationSecret:
brokerCaPath: /tmp/certs/kafka/broker/ca.crt
endpointIdentificationAlgorithm:

# env:
# MAX_PAYLOAD_BYTES: "300000"
env:
MAX_PAYLOAD_BYTES: "300000"
deployHost: "http://seldon-deploy.seldon-system/seldon-deploy/api/v1alpha1"
authSecret: ""
trigger:
Expand Down Expand Up @@ -328,3 +341,7 @@ keycloakUserManagement:
userRealm: "deploy-realm"
debug: "true"
tls_insecure: "false"

inferenceLogs:
enabled: true
maxPayloadsPerRequest: 100

0 comments on commit aed3f5b

Please sign in to comment.