server-statefulset.yaml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4. name: {{ .Release.Name }}-server
  5. namespace: {{ .Release.Namespace }}
  6. labels:
  7. {{ include "chart_labels" . | indent 4 }}
  8. spec:
  9. serviceName: {{ .Release.Name }}-server
  10. replicas: {{ .Values.server.replicas | default 1 }}
  11. selector:
  12. matchLabels:
  13. app: {{ .Release.Name }}-server
  14. template:
  15. metadata:
  16. labels:
  17. app: {{ .Release.Name }}-server
  18. annotations:
  19. prometheus.io/scrape: "true"
  20. prometheus.io/port: "{{ .Values.server.metricsPort }}"
  21. prometheus.io/path: "/metrics"
  22. spec:
  23. containers:
  24. - env:
  25. - name: GPUSTACK_SERVER_ID
  26. valueFrom:
  27. fieldRef:
  28. apiVersion: v1
  29. fieldPath: metadata.name
  30. - name: GPUSTACK_GATEWAY_PLUGIN_SERVER_URL
  31. value: "http://{{ printf "%s-higress-plugins.%s.svc.%s:8080" .Release.Name .Release.Namespace .Values.clusterDomain }}"
  32. - name: GPUSTACK_GATEWAY_INGRESS_CLASS
  33. value: "{{ .Values.gateway.ingressClassname }}"
  34. - name: GPUSTACK_GATEWAY_MIRROR_INGRESS_NAME
  35. value: "{{ .Release.Name }}"
  36. - name: GPUSTACK_GATEWAY_MODE
  37. value: incluster
  38. {{- if index .Values "higress-core" "enabled" }}
  39. - name: GPUSTACK_GATEWAY_NAMESPACE
  40. value: "{{ .Release.Namespace }}"
  41. {{- end }}
  42. - name: GPUSTACK_DEFAULT_CLUSTER_KUBERNETES
  43. value: 'true'
  44. - name: GPUSTACK_DISABLE_WORKER
  45. value: 'true'
  46. - name: GPUSTACK_SERVICE_DISCOVERY_NAME
  47. value: "{{ .Release.Name }}-server"
  48. - name: POD_NAMESPACE
  49. valueFrom:
  50. fieldRef:
  51. apiVersion: v1
  52. fieldPath: metadata.namespace
  53. envFrom:
  54. {{- if .Values.worker.enabled }}
  55. - secretRef:
  56. name: registration-token
  57. optional: false
  58. {{- end }}
  59. - secretRef:
  60. name: {{ .Release.Name }}-jwt-key
  61. optional: false
  62. - configMapRef:
  63. name: server-config
  64. optional: true
  65. ports:
  66. - containerPort: {{ .Values.server.apiPort }}
  67. name: http
  68. protocol: TCP
  69. - containerPort: {{ .Values.server.metricsPort }}
  70. name: metrics
  71. protocol: TCP
  72. image: {{ include "gpustack.image" . }}:{{ include "gpustack.imageTag" . }}
  73. imagePullPolicy: {{ .Values.image.pullPolicy }}
  74. name: {{ .Release.Name }}-server
  75. resources: {}
  76. securityContext:
  77. allowPrivilegeEscalation: false
  78. privileged: false
  79. readOnlyRootFilesystem: false
  80. runAsNonRoot: false
  81. terminationMessagePath: /dev/termination-log
  82. terminationMessagePolicy: File
  83. volumeMounts:
  84. - mountPath: /var/lib/gpustack
  85. name: gpustack-data-dir
  86. dnsPolicy: ClusterFirst
  87. restartPolicy: Always
  88. schedulerName: default-scheduler
  89. securityContext: {}
  90. serviceAccountName: {{ .Release.Name }}-server
  91. terminationGracePeriodSeconds: 30
  92. {{- if .Values.server.dataVolume.hostPath }}
  93. volumes:
  94. - name: gpustack-data-dir
  95. hostPath:
  96. path: {{ .Values.server.dataVolume.hostPath }}
  97. type: DirectoryOrCreate
  98. {{- end }}
  99. {{- if not .Values.server.dataVolume.hostPath }}
  100. volumeClaimTemplates:
  101. - metadata:
  102. name: gpustack-data-dir
  103. spec:
  104. accessModes: [ "ReadWriteOnce" ]
  105. resources:
  106. requests:
  107. storage: {{ .Values.server.dataVolume.size | default "10Gi" }}
  108. {{- end }}