diff --git a/README.md b/README.md index ba3b3e3..258a376 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,10 @@ Climate change science has witnessed an explosion in the amount and types of dat ```bash $ helm repo add ncsa https://opensource.ncsa.illinois.edu/charts/ $ helm repo add bitnami https://raw.githubusercontent.com/bitnami/charts/pre-2022/bitnami +$ helm repo add kedacore https://kedacore.github.io/charts +$ helm repo update $ helm dependency build +$ helm install keda kedacore/keda $ helm install pecan ncsa/pecan ``` diff --git a/templates/models/deployment.yaml b/templates/models/deployment.yaml index 49c1c45..6243445 100644 --- a/templates/models/deployment.yaml +++ b/templates/models/deployment.yaml @@ -10,7 +10,7 @@ kind: Deployment metadata: name: {{ $fullname }}-model-{{ $key }} labels: - {{ $labels | indent 4 }} +{{ $labels | indent 4 }} spec: replicas: {{ .replicaCount }} selector: diff --git a/templates/models/keda-scaledObject.yaml b/templates/models/keda-scaledObject.yaml new file mode 100644 index 0000000..246c2a6 --- /dev/null +++ b/templates/models/keda-scaledObject.yaml @@ -0,0 +1,31 @@ +{{- if .Values.models }} +{{- $fullname := include "pecan.fullname" . }} +{{- range $key, $val := .Values.models }} +{{- if .enabled }} +--- +apiVersion: keda.sh/v1alpha1 +kind: ScaledObject +metadata: + name: "{{ $fullname }}-model-{{ $key }}-scaledobject" + namespace: default +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ $fullname }}-model-{{ $key }} + envSourceContainerName: {{ $.Chart.Name }}-model-{{ $key }} + minReplicaCount: {{ .minReplicaCount }} + maxReplicaCount: {{ .maxReplicaCount }} + triggers: + - type: rabbitmq + metadata: + protocol: http + queueName: "{{ .queuename }}" + mode: MessageRate + value: "10" + vhostName: / + authenticationRef: + name: {{ $.Values.keda.rabbitmq.name }}-triger-auth +{{- end }} +{{- end }} +{{- end }} diff --git a/templates/models/keda-secret.yaml b/templates/models/keda-secret.yaml new file mode 100644 index 0000000..39162be --- /dev/null +++ b/templates/models/keda-secret.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.keda.rabbitmq.name }}-secret +data: + host: {{ .Values.keda.rabbitmq.host }} # base64 encoded value of connection string diff --git a/templates/models/keda-trigger-auth.yaml b/templates/models/keda-trigger-auth.yaml new file mode 100644 index 0000000..98eae7d --- /dev/null +++ b/templates/models/keda-trigger-auth.yaml @@ -0,0 +1,10 @@ +apiVersion: keda.sh/v1alpha1 +kind: TriggerAuthentication +metadata: + name: {{ .Values.keda.rabbitmq.name }}-triger-auth + namespace: default +spec: + secretTargetRef: + - parameter: host + name: {{ .Values.keda.rabbitmq.name }}-secret + key: host diff --git a/values.yaml b/values.yaml index 1ca2494..d39ec7e 100644 --- a/values.yaml +++ b/values.yaml @@ -56,22 +56,37 @@ models: enabled: true image: model-biocro-0.95 replicaCount: 1 + minReplicaCount: 1 + maxReplicaCount: 5 + queuename: BIOCRO_0.95 ed2-2-2-0: enabled: true image: model-ed2-2.2.0 replicaCount: 1 + minReplicaCount: 1 + maxReplicaCount: 5 + queuename: ED2_2.2.0 maespa-git: enabled: true image: model-maespa-git replicaCount: 1 + minReplicaCount: 1 + maxReplicaCount: 5 + queuename: MAESPA_git sipnet-git: enabled: true image: model-sipnet-git replicaCount: 1 + minReplicaCount: 1 + maxReplicaCount: 5 + queuename: SIPNET_git sipnet-136: enabled: true image: model-sipnet-r136 replicaCount: 1 + minReplicaCount: 1 + maxReplicaCount: 5 + queuename: SIPNET_r136 ## ------------------------------------------------------------------------------- ## BETYDB APPLICATION @@ -346,3 +361,15 @@ affinity: {} ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity hooks: affinity: {} + +## ------------------------------------------------------------------------------- +## KEDA RabbitMQ Configuration +## ------------------------------------------------------------------------------- + +keda: + rabbitmq: + name: "rabbitmq" + ## Base64 rabbitmq host path in the form of PROTOCOL://:RABBITMQ_PASSWORD@RABBITMQ_HOST/vhost + ## e.g. echo -n 'http://guest:guest@pecan-rabbitmq.default:15672//' | base64 + host: aHR0cDovL2d1ZXN0Omd1ZXN0QHBlY2FuLXJhYmJpdG1xLmRlZmF1bHQ6MTU2NzIvLw== +