2023-05-08 19:57:58 +00:00
{{- if and (not .Values.agent) (not .Values.cloudAgent) (.Values.kubecostDeployment) (.Values.kubecostDeployment.queryServiceReplicas) }}
2023-05-30 11:33:49 +00:00
{{- if gt (.Values.kubecostDeployment.queryServiceReplicas | toString | atoi) 0 }}
2023-05-08 19:57:58 +00:00
apiVersion : apps/v1
2023-06-16 17:00:07 +00:00
kind : StatefulSet
2023-05-08 19:57:58 +00:00
metadata :
name : {{ template "query-service.fullname" . }}
2023-06-08 14:17:55 +00:00
namespace : {{ .Release.Namespace }}
2023-05-08 19:57:58 +00:00
labels :
{{ include "query-service.commonLabels" . | nindent 4 }}
spec :
replicas : {{ .Values.kubecostDeployment.queryServiceReplicas }}
2023-06-16 17:00:07 +00:00
serviceName : "query-service"
2023-05-08 19:57:58 +00:00
selector :
matchLabels :
app.kubernetes.io/name : query-service
app.kubernetes.io/instance : {{ .Release.Name }}
app : query-service
2023-06-16 17:00:07 +00:00
volumeClaimTemplates :
- metadata :
name : database-storage
spec :
accessModes : [ "ReadWriteOnce" ]
storageClassName : {{ .Values.kubecostDeployment.queryService.storageClass }}
resources :
requests :
storage : {{ .Values.kubecostDeployment.queryService.databaseVolumeSize }}
- metadata :
name : persistent-configs
spec :
accessModes : [ "ReadWriteOnce" ]
storageClassName : {{ .Values.kubecostDeployment.queryService.storageClass }}
resources :
requests :
storage : {{ .Values.kubecostDeployment.queryService.configVolumeSize }}
2023-05-08 19:57:58 +00:00
template :
metadata :
labels :
app.kubernetes.io/name : query-service
app.kubernetes.io/instance : {{ .Release.Name }}
app : query-service
spec :
restartPolicy : Always
2023-06-16 17:00:07 +00:00
2023-05-08 19:57:58 +00:00
serviceAccountName : {{ template "query-service.serviceAccountName" . }}
volumes :
{{- $etlBackupBucketSecret := "" }}
2023-06-16 17:00:07 +00:00
{{- if .Values.kubecostModel.queryServiceConfigSecret }}
{{- $etlBackupBucketSecret = .Values.kubecostModel.queryServiceConfigSecret }}
{{- else if .Values.kubecostModel.federatedStorageConfigSecret }}
{{- $etlBackupBucketSecret = .Values.kubecostModel.federatedStorageConfigSecret }}
{{- else if .Values.kubecostModel.etlBucketConfigSecret }}
2023-05-08 19:57:58 +00:00
{{- $etlBackupBucketSecret = .Values.kubecostModel.etlBucketConfigSecret }}
{{- else if and .Values.global.thanos.enabled (ne (typeOf .Values.kubecostModel.etlBucketConfigSecret) "string") }}
{{- $etlBackupBucketSecret = .Values.thanos.storeSecretName }}
{{- end }}
{{- if $etlBackupBucketSecret }}
- name : etl-bucket-config
secret :
defaultMode : 420
secretName : {{ $etlBackupBucketSecret }}
{{- end }}
initContainers :
- name : config-db-perms-fix
image : busybox
command : [ "sh" , "-c" , "/bin/chmod -R 777 /var/configs && /bin/chmod -R 777 /var/db" ]
volumeMounts :
- name : persistent-configs
mountPath : /var/configs
2023-06-16 17:00:07 +00:00
- name : database-storage
2023-05-08 19:57:58 +00:00
mountPath : /var/db
securityContext :
runAsUser : 0
containers :
- name : query-service
{{- if .Values.kubecostModel }}
{{- if .Values.kubecostModel.openSourceOnly }}
image : quay.io/kubecost1/kubecost-cost-model:{{ .Values.imageVersion }}
{{- else if .Values.kubecostModel.fullImageName }}
image : {{ .Values.kubecostModel.fullImageName }}
{{- else if .Values.imageVersion }}
image : {{ .Values.kubecostModel.image }}:{{ .Values.imageVersion }}
{{- else }}
image : {{ .Values.kubecostModel.image }}:prod-{{ $.Chart.AppVersion }}
{{ end }}
{{- else }}
image : gcr.io/kubecost1/cost-model:prod-{{ $.Chart.AppVersion }}
{{ end }}
readinessProbe :
httpGet :
path : /healthz
port : 9003
initialDelaySeconds : 30
periodSeconds : 10
failureThreshold : 200
imagePullPolicy : Always
args : [ "query-service" ]
ports :
- name : tcp-model
containerPort : 9003
protocol : TCP
2023-07-17 16:53:41 +00:00
resources :
{{ toYaml .Values.kubecostDeployment.queryService.resources | indent 12 }}
2023-05-08 19:57:58 +00:00
volumeMounts :
- name : persistent-configs
mountPath : /var/configs
- name : etl-bucket-config
mountPath : /var/configs/etl
2023-06-16 17:00:07 +00:00
- name : database-storage
2023-05-08 19:57:58 +00:00
mountPath : /var/db
env :
- name : CONFIG_PATH
value : /var/configs/
- name : DB_PATH
value : /var/db/
- name : ETL_FILE_STORE_ENABLED
value : "true"
{{- if $etlBackupBucketSecret }}
- name : ETL_BUCKET_CONFIG
2023-06-16 17:00:07 +00:00
{{- if not .Values.kubecostModel.federatedStorageConfigSecret}}
2023-05-08 19:57:58 +00:00
value : "/var/configs/etl/object-store.yaml"
2023-06-16 17:00:07 +00:00
{{- else }}
value : "/var/configs/etl/federated-store.yaml"
- name : CLUSTER_ID
value : "combined"
- name : FEDERATED_STORE_CONFIG
value : "/var/configs/etl/federated-store.yaml"
- name : FEDERATED_CLUSTER
value : "true"
- name : FEDERATED_PRIMARY_CLUSTER
value : "true"
- name : FEDERATED_REDIRECT_BACKUP
value : "true"
{{- end }}
2023-05-08 19:57:58 +00:00
{{- end }}
- name : ETL_TO_DISK_ENABLED
value : "true"
- name : ETL_PATH_PREFIX
value : "/var/db"
- name : CLOUD_PROVIDER_API_KEY
value : "AIzaSyDXQPG_MHUEy9neR7stolq6l0ujXmjJlvk" # The GCP Pricing API key.This GCP api key is expected to be here and is limited to accessing google's billing API.'
2023-07-17 16:53:41 +00:00
{{- if .Values.imagePullSecrets }}
imagePullSecrets :
{{ toYaml .Values.imagePullSecrets | indent 2 }}
{{- end }}
{{- if .Values.kubecostDeployment.queryService.priority }}
{{- if .Values.kubecostDeployment.queryService.priority.enabled }}
{{- if .Values.kubecostDeployment.queryService.priority.name }}
priorityClassName : {{ .Values.kubecostDeployment.queryService.priority.name }}
{{- else }}
priorityClassName : {{ template "cost-analyzer.fullname" . }}-qsr-priority
{{- end }}
{{- end }}
{{- end }}
{{- with .Values.kubecostDeployment.queryService.nodeSelector }}
nodeSelector :
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.kubecostDeployment.queryService.tolerations }}
tolerations :
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.kubecostDeployment.queryService.affinity }}
affinity :
{{- toYaml . | nindent 8 }}
{{- end }}
2023-05-08 19:57:58 +00:00
{{- end }}
{{- end }}