346 lines
16 KiB
YAML
346 lines
16 KiB
YAML
apiVersion: apps/v1
|
|
kind: StatefulSet
|
|
metadata:
|
|
name: weaviate
|
|
labels:
|
|
name: weaviate
|
|
app: weaviate
|
|
app.kubernetes.io/name: weaviate
|
|
app.kubernetes.io/managed-by: helm
|
|
spec:
|
|
replicas: {{ .Values.replicas }}
|
|
serviceName: {{ .Values.service.name }}-headless
|
|
selector:
|
|
matchLabels:
|
|
app: weaviate
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: weaviate
|
|
app.kubernetes.io/name: weaviate
|
|
app.kubernetes.io/managed-by: helm
|
|
{{- with .Values.annotations }}
|
|
annotations:
|
|
{{- toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
spec:
|
|
{{- if (index .Values "serviceAccountName") }}
|
|
serviceAccountName: {{ .Values.serviceAccountName }}
|
|
{{- else if and (index .Values "backups" "s3" "enabled") (index .Values "backups" "s3" "serviceAccountName") }} # for backwards compatibility
|
|
serviceAccountName: {{ .Values.backups.s3.serviceAccountName }}
|
|
{{- end }}
|
|
terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds }}
|
|
containers:
|
|
- name: weaviate
|
|
image: '{{ .Values.image.registry }}/{{ .Values.image.repo }}:{{ .Values.image.tag }}'
|
|
imagePullPolicy: Always
|
|
{{- with .Values.command }}
|
|
command: {{ toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
{{- with .Values.args }}
|
|
args: {{ toYaml . | nindent 10 }}
|
|
{{- end }}
|
|
resources:
|
|
{{ toYaml .Values.resources | indent 10 }}
|
|
env:
|
|
{{- if or $.Values.env $.Values.envSecrets }}
|
|
{{- range $key, $value := $.Values.env }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end }}
|
|
{{- range $key, $secret := $.Values.envSecrets }}
|
|
- name: {{ $key }}
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ $secret }}
|
|
key: {{ $key | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
- name: STANDALONE_MODE
|
|
value: 'true'
|
|
- name: PERSISTENCE_DATA_PATH
|
|
value: '/var/lib/weaviate'
|
|
- name: DEFAULT_VECTORIZER_MODULE
|
|
value: {{ index .Values "modules" "default_vectorizer_module" | trim }}
|
|
{{ template "enabled_modules" . }}
|
|
{{- if index .Values "modules" "text2vec-transformers" "enabled" }}
|
|
- name: TRANSFORMERS_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "text2vec-transformers" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "text2vec-transformers" "inferenceUrl" }}
|
|
- name: TRANSFORMERS_INFERENCE_API
|
|
value: {{ index .Values "modules" "text2vec-transformers" "inferenceUrl" }}
|
|
{{- else }}
|
|
{{- if index .Values "modules" "text2vec-transformers" "passageQueryServices" "passage" "enabled" }}
|
|
- name: TRANSFORMERS_PASSAGE_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "text2vec-transformers" "passageQueryServices" "passage" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "text2vec-transformers" "passageQueryServices" "passage" "inferenceUrl" }}
|
|
- name: TRANSFORMERS_PASSAGE_INFERENCE_API
|
|
value: {{ index .Values "modules" "text2vec-transformers" "passageQueryServices" "passage" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "text2vec-transformers" "passageQueryServices" "query" "enabled" }}
|
|
- name: TRANSFORMERS_QUERY_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "text2vec-transformers" "passageQueryServices" "query" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "text2vec-transformers" "passageQueryServices" "query" "inferenceUrl" }}
|
|
- name: TRANSFORMERS_QUERY_INFERENCE_API
|
|
value: {{ index .Values "modules" "text2vec-transformers" "passageQueryServices" "query" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "multi2vec-clip" "enabled" }}
|
|
- name: CLIP_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "multi2vec-clip" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "multi2vec-clip" "inferenceUrl" }}
|
|
- name: CLIP_INFERENCE_API
|
|
value: {{ index .Values "modules" "multi2vec-clip" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "qna-transformers" "enabled" }}
|
|
- name: QNA_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "qna-transformers" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "qna-transformers" "inferenceUrl" }}
|
|
- name: QNA_INFERENCE_API
|
|
value: {{ index .Values "modules" "qna-transformers" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "img2vec-neural" "enabled" }}
|
|
- name: IMAGE_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "img2vec-neural" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "img2vec-neural" "inferenceUrl" }}
|
|
- name: IMAGE_INFERENCE_API
|
|
value: {{ index .Values "modules" "img2vec-neural" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "text-spellcheck" "enabled" }}
|
|
- name: SPELLCHECK_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "text-spellcheck" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "text-spellcheck" "inferenceUrl" }}
|
|
- name: SPELLCHECK_INFERENCE_API
|
|
value: {{ index .Values "modules" "text-spellcheck" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "ner-transformers" "enabled" }}
|
|
- name: NER_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "ner-transformers" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "ner-transformers" "inferenceUrl" }}
|
|
- name: NER_INFERENCE_API
|
|
value: {{ index .Values "modules" "ner-transformers" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{- if index .Values "modules" "sum-transformers" "enabled" }}
|
|
- name: SUM_INFERENCE_API
|
|
value: http://{{ index .Values "modules" "sum-transformers" "fullnameOverride" }}.{{ .Release.Namespace }}.svc.cluster.local:8080
|
|
{{- else if index .Values "modules" "sum-transformers" "inferenceUrl" }}
|
|
- name: SUM_INFERENCE_API
|
|
value: {{ index .Values "modules" "sum-transformers" "inferenceUrl" }}
|
|
{{- end }}
|
|
{{ if or (and (index .Values "modules" "text2vec-openai" "enabled") (index .Values "modules" "text2vec-openai" "apiKey")) (and (index .Values "modules" "qna-openai" "enabled") (index .Values "modules" "qna-openai" "apiKey")) (and (index .Values "modules" "generative-openai" "enabled") (index .Values "modules" "generative-openai" "apiKey")) }}
|
|
- name: OPENAI_APIKEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: weaviate-openai
|
|
key: apiKey
|
|
{{- end }}
|
|
{{- if and (index .Values "modules" "text2vec-huggingface" "enabled") (index .Values "modules" "text2vec-huggingface" "apiKey") }}
|
|
- name: HUGGINGFACE_APIKEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: weaviate-huggingface
|
|
key: apiKey
|
|
{{- end }}
|
|
{{- if and (index .Values "modules" "text2vec-cohere" "enabled") (index .Values "modules" "text2vec-cohere" "apiKey") }}
|
|
- name: COHERE_APIKEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: weaviate-cohere
|
|
key: apiKey
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "filesystem" "enabled") (index .Values "backups" "filesystem" "envconfig") }}
|
|
{{- range $key, $value := index .Values "backups" "filesystem" "envconfig" }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "backups" "s3" "enabled" }}
|
|
{{- if index .Values "backups" "s3" "envconfig" }}
|
|
{{- range $key, $value := index .Values "backups" "s3" "envconfig" }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "backups" "s3" "envSecrets" }}
|
|
{{- range $key, $secret := $.Values.backups.s3.envSecrets }}
|
|
- name: {{ $key }}
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ $secret }}
|
|
key: {{ $key | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "s3" "secrets") (index .Values "backups" "s3" "secrets" "AWS_ACCESS_KEY_ID") }}
|
|
- name: AWS_ACCESS_KEY_ID
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: backup-s3
|
|
key: AWS_ACCESS_KEY_ID
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "s3" "secrets") (index .Values "backups" "s3" "secrets" "AWS_SECRET_ACCESS_KEY") }}
|
|
- name: AWS_SECRET_ACCESS_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: backup-s3
|
|
key: AWS_SECRET_ACCESS_KEY
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "backups" "gcs" "enabled" }}
|
|
{{- if index .Values "backups" "gcs" "envconfig" }}
|
|
{{- range $key, $value := index .Values "backups" "gcs" "envconfig" }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if or (index .Values "backups" "gcs" "secrets") (index .Values "backups" "gcs" "envSecrets") }}
|
|
{{- if or (index .Values "backups" "gcs" "secrets" "GOOGLE_APPLICATION_CREDENTIALS") (index .Values "backups" "gcs" "envSecrets" "GOOGLE_APPLICATION_CREDENTIALS") }}
|
|
- name: GOOGLE_APPLICATION_CREDENTIALS
|
|
value: "/etc/gcp/credentials.json"
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "backups" "azure" "enabled" }}
|
|
{{- if index .Values "backups" "azure" "envconfig" }}
|
|
{{- range $key, $value := index .Values "backups" "azure" "envconfig" }}
|
|
- name: {{ $key }}
|
|
value: {{ $value | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if index .Values "backups" "azure" "envSecrets" }}
|
|
{{- range $key, $secret := $.Values.backups.azure.envSecrets }}
|
|
- name: {{ $key }}
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: {{ $secret }}
|
|
key: {{ $key | quote }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "azure" "secrets") (index .Values "backups" "azure" "secrets" "AZURE_STORAGE_ACCOUNT") }}
|
|
- name: AZURE_STORAGE_ACCOUNT
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: backup-azure
|
|
key: AZURE_STORAGE_ACCOUNT
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "azure" "secrets") (index .Values "backups" "azure" "secrets" "AZURE_STORAGE_KEY") }}
|
|
- name: AZURE_STORAGE_KEY
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: backup-azure
|
|
key: AZURE_STORAGE_KEY
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "azure" "secrets") (index .Values "backups" "azure" "secrets" "AZURE_STORAGE_CONNECTION_STRING") }}
|
|
- name: AZURE_STORAGE_CONNECTION_STRING
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: backup-azure
|
|
key: AZURE_STORAGE_CONNECTION_STRING
|
|
{{- end }}
|
|
{{- end }}
|
|
- name: CLUSTER_JOIN
|
|
value: {{ .Values.service.name }}-headless.{{ .Release.Namespace }}.svc.cluster.local
|
|
ports:
|
|
- containerPort: 8080
|
|
{{- if .Values.env.PROMETHEUS_MONITORING_ENABLED }}
|
|
- name: metrics
|
|
containerPort: 2112
|
|
protocol: TCP
|
|
{{- end }}
|
|
volumeMounts:
|
|
- name: weaviate-config
|
|
mountPath: /weaviate-config
|
|
- name: weaviate-data
|
|
mountPath: /var/lib/weaviate
|
|
{{- if index .Values "backups" "gcs" "enabled" }}
|
|
{{- if or (index .Values "backups" "gcs" "secrets") (index .Values "backups" "gcs" "envSecrets") }}
|
|
{{- if or (index .Values "backups" "gcs" "secrets" "GOOGLE_APPLICATION_CREDENTIALS") (index .Values "backups" "gcs" "envSecrets" "GOOGLE_APPLICATION_CREDENTIALS") }}
|
|
- name: gcs-service-account-credentials-volume
|
|
mountPath: /etc/gcp
|
|
readOnly: true
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if .Values.startupProbe.enabled }}
|
|
startupProbe:
|
|
httpGet:
|
|
path: /v1/.well-known/ready
|
|
port: 8080
|
|
initialDelaySeconds: {{ .Values.startupProbe.initialDelaySeconds }}
|
|
periodSeconds: {{ .Values.startupProbe.periodSeconds }}
|
|
failureThreshold: {{ .Values.startupProbe.failureThreshold }}
|
|
successThreshold: {{ .Values.startupProbe.successThreshold }}
|
|
timeoutSeconds: {{ .Values.startupProbe.timeoutSeconds }}
|
|
{{- end }}
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /v1/.well-known/live
|
|
port: 8080
|
|
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }}
|
|
periodSeconds: {{ .Values.livenessProbe.periodSeconds }}
|
|
failureThreshold: {{ .Values.livenessProbe.failureThreshold }}
|
|
successThreshold: {{ .Values.livenessProbe.successThreshold }}
|
|
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }}
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /v1/.well-known/ready
|
|
port: 8080
|
|
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }}
|
|
periodSeconds: {{ .Values.readinessProbe.periodSeconds }}
|
|
failureThreshold: {{ .Values.readinessProbe.failureThreshold }}
|
|
successThreshold: {{ .Values.readinessProbe.successThreshold }}
|
|
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }}
|
|
volumes:
|
|
- name: weaviate-config
|
|
configMap:
|
|
{{ if .Values.custom_config_map.enabled }}name: {{ .Values.custom_config_map.name }} {{ else }}name: weaviate-config{{ end }}
|
|
# - name: weaviate-persistence-data-vol
|
|
# persistentVolumeClaim:
|
|
# {{ if empty .Values.storage.fullnameOverride }}
|
|
# claimName: weaviate-persistence-data
|
|
# {{ else }}
|
|
# claimName: {{ .Values.storage.fullnameOverride }}
|
|
# {{ end }}
|
|
{{- if index .Values "backups" "gcs" "enabled" }}
|
|
{{- if and (index .Values "backups" "gcs" "secrets") (index .Values "backups" "gcs" "secrets" "GOOGLE_APPLICATION_CREDENTIALS") }}
|
|
- name: gcs-service-account-credentials-volume
|
|
secret:
|
|
secretName: backup-gcs
|
|
items:
|
|
- key: GOOGLE_APPLICATION_CREDENTIALS
|
|
path: credentials.json
|
|
{{- end }}
|
|
{{- if and (index .Values "backups" "gcs" "envSecrets") (index .Values "backups" "gcs" "envSecrets" "GOOGLE_APPLICATION_CREDENTIALS") }}
|
|
- name: gcs-service-account-credentials-volume
|
|
secret:
|
|
secretName: {{ index .Values "backups" "gcs" "envSecrets" "GOOGLE_APPLICATION_CREDENTIALS" }}
|
|
items:
|
|
- key: GOOGLE_APPLICATION_CREDENTIALS
|
|
path: credentials.json
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- with .Values.nodeSelector }}
|
|
nodeSelector:
|
|
{{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with .Values.affinity }}
|
|
affinity:
|
|
{{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
{{- with .Values.tolerations }}
|
|
tolerations:
|
|
{{ toYaml . | nindent 8 }}
|
|
{{- end }}
|
|
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: weaviate-data
|
|
labels:
|
|
app.kubernetes.io/name: weaviate
|
|
app.kubernetes.io/managed-by: helm
|
|
spec:
|
|
accessModes: [ "ReadWriteOnce" ]
|
|
storageClassName: {{ .Values.storage.storageClassName }}
|
|
resources:
|
|
requests:
|
|
storage: {{ .Values.storage.size }}
|