From 86e08963035c8e31f7c0c5ae656898a5f9c22168 Mon Sep 17 00:00:00 2001 From: Austin Kurpuis Date: Wed, 11 Sep 2024 12:31:19 -0700 Subject: [PATCH] Fixes and improvements --- README.md | 63 ++++++++++++++++--------- chart/templates/demo-worker.yaml | 6 +-- chart/templates/deployment.yaml | 6 +-- chart/templates/hpa.yaml | 18 +++---- chart/templates/mtls-certificates.yaml | 2 +- img/diagram.png | Bin 0 -> 13124 bytes sample-config.yaml | 45 +++++++----------- 7 files changed, 74 insertions(+), 66 deletions(-) create mode 100644 img/diagram.png diff --git a/README.md b/README.md index 84957d8..44fac34 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,14 @@ Bring Temporal Cloud Metrics into your Kubernetes cluster to inform autoscaling ![Metrics Dashboard Demo](./img/metrics-dashboard.jpg) +## How it works + +This project is essentially just a proxy server. Kubernetes makes an HTTP call which is handled by this service which in turn pulls metrics from Temporal Cloud, converts them to the format that Kubernetes expects, and returns them to k8s. + +Kubernetes will poll our service for metrics which become available to HPA's living in the same Kubernetes namespace. + +![Architecture Diagram](./img/diagram.png) + ## Setup ### Prerequisites @@ -41,7 +49,7 @@ sum by(temporal_namespace) ( temporal_cloud_v0_poll_success_sync_count{}[1m] ) ) -- +/ sum by(temporal_namespace) ( rate( temporal_cloud_v0_poll_success_count{}[1m] @@ -51,27 +59,40 @@ sum by(temporal_namespace) ( __After__ -We've made two important changes here: (1) we've swapped the places of the two underlying metrics to invert the resulting number so it will now be positive and increase as the Sync Match Rate falls, (2) use clamp_min to set a lower bound of zero, and (3) we default the resulting value to zero in the event no data points are available within the specified time window. +We've made two important changes here: (1) we've swapped the places of the two underlying metrics to invert the resulting number so it will now be positive and increase as the Sync Match Rate falls, and (2) we default the resulting value to `1` in the event no data points are available within the specified time window. + +The result is a decimal that starts at `1` when there is a perfect Sync Match Rate and rises as the Sync Match Rate is declines. ``` -sum( - clamp_min( - ( - sum by(temporal_namespace) ( - rate( - temporal_cloud_v0_poll_success_count{}[1m] - ) - ) - - - sum by(temporal_namespace) ( - rate( - temporal_cloud_v0_poll_success_sync_count{}[1m] - ) - ) - ), - 0 +( + sum by(temporal_namespace) ( + rate( + temporal_cloud_v0_poll_success_count{ + temporal_namespace="bitovi.x72yu" + }[1m] + ) ) -) or vector(0) + / + sum by(temporal_namespace) ( + rate( + temporal_cloud_v0_poll_success_sync_count{ + temporal_namespace="bitovi.x72yu" + }[1m] + ) + ) +) +unless +( + sum by(temporal_namespace) ( + rate( + temporal_cloud_v0_poll_success_sync_count{ + temporal_namespace="bitovi.x72yu" + }[1m] + ) + ) == 0 +) +or label_replace(vector(1), "temporal_namespace", "bitovi.x72yu", "", "") + ``` ### Step 3: HPA @@ -175,8 +196,8 @@ You can adjust the how quickly the cluster scales up and down our workers. temporal_namespace: xyz.123 target: type: Value - # Scale up when the target metric exceeds 50 milli values (0.05) - value: 50m + # Scale up when the target metric exceeds 1500 milli values (1.5) + value: 1500m behavior: scaleUp: # The highest value in the last 10 seconds will be used to determine the need to scale up diff --git a/chart/templates/demo-worker.yaml b/chart/templates/demo-worker.yaml index 3025ef3..f2fb1b5 100644 --- a/chart/templates/demo-worker.yaml +++ b/chart/templates/demo-worker.yaml @@ -22,7 +22,7 @@ spec: imagePullPolicy: Always ports: [] volumeMounts: - - name: mtls-certs + - name: tcm-mtls-certs mountPath: "/app/certs" readOnly: true env: @@ -37,7 +37,7 @@ spec: - name: TEMPORAL_QUEUE value: autoscaler_demo volumes: - - name: mtls-certs + - name: tcm-mtls-certs secret: - secretName: mtls-certs + secretName: tcm-mtls-certs {{- end }} \ No newline at end of file diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index 81369ed..2230302 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -36,7 +36,7 @@ spec: - mountPath: /var/run/serving-cert name: serving-cert readOnly: false - - name: mtls-certs + - name: tcm-mtls-certs mountPath: "/app/certs" readOnly: true - name: config @@ -59,9 +59,9 @@ spec: emptyDir: {} - name: serving-cert emptyDir: {} - - name: mtls-certs + - name: tcm-mtls-certs secret: - secretName: mtls-certs + secretName: tcm-mtls-certs - name: config configMap: name: adapter-configuration diff --git a/chart/templates/hpa.yaml b/chart/templates/hpa.yaml index 17ec10b..4468b7a 100644 --- a/chart/templates/hpa.yaml +++ b/chart/templates/hpa.yaml @@ -8,8 +8,8 @@ spec: apiVersion: apps/v1 kind: Deployment name: {{ .Values.worker.deployment }} - minReplicas: 1 - maxReplicas: 20 + minReplicas: 2 + maxReplicas: 50 metrics: - type: External external: @@ -20,19 +20,19 @@ spec: temporal_namespace: "{{ .Values.temporal.namespace }}" target: type: Value - value: 50m + value: 1500m behavior: scaleUp: - stabilizationWindowSeconds: 10 + stabilizationWindowSeconds: 5 selectPolicy: Max policies: - type: Pods - value: 5 - periodSeconds: 10 + value: 10 + periodSeconds: 5 scaleDown: - stabilizationWindowSeconds: 60 + stabilizationWindowSeconds: 5 selectPolicy: Max policies: - type: Pods - value: 3 - periodSeconds: 30 \ No newline at end of file + value: 10 + periodSeconds: 5 \ No newline at end of file diff --git a/chart/templates/mtls-certificates.yaml b/chart/templates/mtls-certificates.yaml index 166c412..3bf33a3 100644 --- a/chart/templates/mtls-certificates.yaml +++ b/chart/templates/mtls-certificates.yaml @@ -5,5 +5,5 @@ data: kind: Secret metadata: creationTimestamp: null - name: mtls-certs + name: tcm-mtls-certs namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/img/diagram.png b/img/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..e0aee42b3102d0c785afe212a099f9f8e96f2a4e GIT binary patch literal 13124 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 literal 0 HcmV?d00001 diff --git a/sample-config.yaml b/sample-config.yaml index 5dca1eb..e8ee462 100644 --- a/sample-config.yaml +++ b/sample-config.yaml @@ -8,35 +8,22 @@ temporal_cloud: metrics: temporal_cloud_sync_match_rate: query: > - sum( - clamp_min( - ( - sum by(temporal_namespace) ( - rate( - temporal_cloud_v0_poll_success_count{}[1m] - ) - ) - - - sum by(temporal_namespace) ( - rate( - temporal_cloud_v0_poll_success_sync_count{}[1m] - ) - ) - ), - 0 + ( + sum by(temporal_namespace) ( + rate( + temporal_cloud_v0_poll_success_count{ + temporal_namespace="123.xyz", + task_queue="hello_world" + }[1m] + ) ) - ) or vector(0) - temporal_cloud_service_latency: - query: > - sum( - clamp_min( - sum by(temporal_namespace) ( - rate(temporal_cloud_v0_service_latency_count{}[1m]) + / + sum by(temporal_namespace) ( + rate( + temporal_cloud_v0_poll_success_sync_count{ + temporal_namespace="123.xyz", + task_queue="hello_world" + }[1m] ) - - - sum by(temporal_namespace) ( - rate(temporal_cloud_v0_service_latency_sum{}[1m]) - ), - 0 ) - ) or vector(0) + ) or vector(1) \ No newline at end of file