diff --git a/charts/exivity/templates/proximity/api.deployment.yaml b/charts/exivity/templates/proximity/api.deployment.yaml index fba3f887..91cf3ea6 100644 --- a/charts/exivity/templates/proximity/api.deployment.yaml +++ b/charts/exivity/templates/proximity/api.deployment.yaml @@ -59,6 +59,9 @@ spec: - name: log-use persistentVolumeClaim: claimName: {{ include "exivity.fullname" $ -}}-use-log + - name: log-vulcan + persistentVolumeClaim: + claimName: {{ include "exivity.fullname" $ -}}-vulcan-log - name: config persistentVolumeClaim: claimName: {{ include "exivity.fullname" $ -}}-etl-config @@ -112,6 +115,8 @@ spec: mountPath: /exivity/home/log/transcript - name: log-use mountPath: /exivity/home/log/use + - name: log-vulcan + mountPath: /exivity/home/log/vulcan - name: import mountPath: /exivity/home/import - name: report diff --git a/charts/exivity/templates/vulcan/deployment.yaml b/charts/exivity/templates/vulcan/deployment.yaml new file mode 100644 index 00000000..e33a1bfc --- /dev/null +++ b/charts/exivity/templates/vulcan/deployment.yaml @@ -0,0 +1,68 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "exivity.fullname" $ -}}-vulcan + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 4 }} +spec: + replicas: {{ .Values.service.vulcan.replicas }} + selector: + matchLabels: + app.kubernetes.io/component: vulcan + {{- include "exivity.matchLabels" $ | indent 6 }} + template: + metadata: + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 8 }} + annotations: + checksum/{{- include "exivity.fullname" $ -}}-config-shared: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} + spec: + volumes: + - name: config-file + configMap: + name: {{ include "exivity.fullname" $ -}}-config-shared + - name: config + persistentVolumeClaim: + claimName: {{ include "exivity.fullname" $ -}}-vulcan-config + - name: log + persistentVolumeClaim: + claimName: {{ include "exivity.fullname" $ -}}-vulcan-log + containers: + - name: vulcan + image: {{ include "exivity.image" (set $ "name" "vulcan") }} + imagePullPolicy: {{ .Values.service.vulcan.pullPolicy | default .Values.service.pullPolicy | default "IfNotPresent" }} + resources: + {{- toYaml .Values.service.vulcan.resources | nindent 12 }} + env: + - name: EXIVITY_BACKEND_LOG_LEVEL + value: "{{ .Values.logLevel.backend }}" + - name: ENABLE_PROMETHEUS + value: "{{ .Values.prometheus.metricServer.enabled }}" + securityContext: + runAsUser: 1000 + runAsGroup: 1000 + volumeMounts: + - name: config + mountPath: /exivity/home/system/config + - name: config-file + mountPath: /exivity/home/system + - name: log + mountPath: /exivity/home/log/vulcan + {{- include "exivity.probes" $ | indent 10}} + {{- with .Values.service.pullSecrets }} + imagePullSecrets: + {{- range $name := .}} + - name: {{ $name }} + {{- end }} + {{- end }} + {{- if .Values.service.vulcan.nodeName }} + nodeName: {{ .Values.service.vulcan.nodeName }} + {{- end }} + {{- with .Values.service.vulcan.nodeSelector }} + nodeSelector: + {{ range $key, $val := . }} + {{ $key }}: {{ $val }} + {{- end }} + {{- end }} diff --git a/charts/exivity/templates/vulcan/persistentvolumeclaim.yaml b/charts/exivity/templates/vulcan/persistentvolumeclaim.yaml new file mode 100644 index 00000000..e3b6f275 --- /dev/null +++ b/charts/exivity/templates/vulcan/persistentvolumeclaim.yaml @@ -0,0 +1,34 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "exivity.fullname" $ -}}-vulcan-config + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 4 }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +{{- if .Values.storage.storageClass }} + storageClassName: {{ .Values.storage.storageClass }} +{{ end }} + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "exivity.fullname" $ -}}-vulcan-log + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 4 }} +spec: + accessModes: + - {{ .Values.storage.sharedVolumeAccessMode }} + resources: + requests: + storage: 1Gi +{{- if .Values.storage.storageClass }} + storageClassName: {{ .Values.storage.storageClass }} +{{ end }} diff --git a/charts/exivity/templates/vulcan/service-monitor.yaml b/charts/exivity/templates/vulcan/service-monitor.yaml new file mode 100644 index 00000000..1db27702 --- /dev/null +++ b/charts/exivity/templates/vulcan/service-monitor.yaml @@ -0,0 +1,37 @@ +{{- if .Values.prometheus.metricServer.enabled -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "exivity.fullname" $ -}}-component-vulcan + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 4 }} +spec: + type: ClusterIP + selector: + app.kubernetes.io/component: vulcan + {{- include "exivity.matchLabels" $ | indent 4 }} + ports: + - name: metrics + port: 8000 + targetPort: 8000 + protocol: TCP +{{ if .Values.prometheus.metricServer.serviceMonitor.enabled }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "exivity.fullname" $ -}}-vulcan + labels: + app.kubernetes.io/component: vulcan + {{- include "exivity.labels" $ | indent 4 }} +spec: + endpoints: + - interval: 5s + path: /metrics + port: metrics + scheme: http + selector: + matchLabels: + app.kubernetes.io/component: vulcan +{{- end }}{{- end }} diff --git a/charts/exivity/values.schema.json b/charts/exivity/values.schema.json index 62e94cc5..2a053591 100644 --- a/charts/exivity/values.schema.json +++ b/charts/exivity/values.schema.json @@ -443,7 +443,8 @@ "pigeon", "proximityCli", "transcript", - "use" + "use", + "vulcan" ], "properties": { "registry": { @@ -2131,6 +2132,126 @@ ] } }, + "vulcan": { + "type": "object", + "default": {}, + "title": "The vulcan Schema", + "required": [ + "registry", + "repository", + "tag", + "pullPolicy", + "replicas", + "nodeName", + "nodeSelector", + "resources" + ], + "properties": { + "registry": { + "type": "string", + "default": "", + "title": "The registry Schema", + "examples": [""] + }, + "repository": { + "type": "string", + "default": "", + "title": "The repository Schema", + "examples": ["exivity/vulcan"] + }, + "tag": { + "type": "string", + "default": "", + "title": "The tag Schema", + "examples": [""] + }, + "pullPolicy": { + "type": "string", + "default": "", + "title": "The pullPolicy Schema", + "examples": [""] + }, + "replicas": { + "type": "integer", + "default": 0, + "title": "The replicas Schema", + "examples": [1] + }, + "nodeName": { + "type": "string", + "default": "", + "title": "The nodeName Schema", + "examples": [""] + }, + "nodeSelector": { + "type": "object", + "default": {}, + "title": "The nodeSelector Schema", + "required": [], + "properties": {}, + "examples": [{}] + }, + "resources": { + "type": "object", + "default": {}, + "title": "The resources Schema", + "required": ["requests"], + "properties": { + "requests": { + "type": "object", + "default": {}, + "title": "The requests Schema", + "required": ["cpu", "memory"], + "properties": { + "cpu": { + "type": "string", + "default": "", + "title": "The cpu Schema", + "examples": ["25m"] + }, + "memory": { + "type": "string", + "default": "", + "title": "The memory Schema", + "examples": ["50Mi"] + } + }, + "examples": [ + { + "cpu": "25m", + "memory": "50Mi" + } + ] + } + }, + "examples": [ + { + "requests": { + "cpu": "25m", + "memory": "50Mi" + } + } + ] + } + }, + "examples": [ + { + "registry": "", + "repository": "exivity/vulcan", + "tag": "", + "pullPolicy": "", + "replicas": 1, + "nodeName": "", + "nodeSelector": {}, + "resources": { + "requests": { + "cpu": "25m", + "memory": "50Mi" + } + } + } + ] + }, "examples": [ { "registry": "docker.io", @@ -2342,6 +2463,21 @@ } }, "caCertificates": null + }, + "vulcan": { + "registry": "", + "repository": "exivity/vulcan", + "tag": "", + "pullPolicy": "", + "replicas": 1, + "nodeName": "", + "nodeSelector": {}, + "resources": { + "requests": { + "cpu": "25m", + "memory": "50Mi" + } + } } } ] @@ -2804,6 +2940,21 @@ } }, "caCertificates": null + }, + "vulcan": { + "registry": "", + "repository": "exivity/vulcan", + "tag": "", + "pullPolicy": "", + "replicas": 1, + "nodeName": "", + "nodeSelector": {}, + "resources": { + "requests": { + "cpu": "25m", + "memory": "50Mi" + } + } } }, "logLevel": { diff --git a/charts/exivity/values.yaml b/charts/exivity/values.yaml index 508bad70..3ef3d721 100644 --- a/charts/exivity/values.yaml +++ b/charts/exivity/values.yaml @@ -329,6 +329,20 @@ service: # [Your Intermediate CA certificate here] # -----END CERTIFICATE----- + # Configuration for the 'vulcan' service, part of the back-end components. + vulcan: + registry: "" + repository: exivity/vulcan + tag: "" + pullPolicy: Always + replicas: 1 + nodeName: "" + nodeSelector: {} + resources: + requests: + cpu: "25m" + memory: "50Mi" + # Default log level for backend services. Accepts 'debug', 'info'. # Use 'debug' for development environments and 'info' or higher for production to reduce log verbosity. logLevel: