Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions api/v1alpha1/workerdeployment_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ import (
)

func (r *WorkerDeployment) SetupWebhookWithManager(mgr ctrl.Manager) error {
return ctrl.NewWebhookManagedBy(mgr).
For(r).
return ctrl.NewWebhookManagedBy(mgr, r).
Comment thread
carlydf marked this conversation as resolved.
WithCustomDefaulter(r).
WithCustomValidator(r).
Complete()
}

Expand Down
5 changes: 2 additions & 3 deletions api/v1alpha1/workerresourcetemplate_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,8 @@ func NewWorkerResourceTemplateValidator(mgr ctrl.Manager) *WorkerResourceTemplat
//
// +kubebuilder:webhook:path=/validate-temporal-io-v1alpha1-workerresourcetemplate,mutating=false,failurePolicy=fail,sideEffects=None,groups=temporal.io,resources=workerresourcetemplates,verbs=create;update;delete,versions=v1alpha1,name=vworkerresourcetemplate.kb.io,admissionReviewVersions=v1
func (v *WorkerResourceTemplateValidator) SetupWebhookWithManager(mgr ctrl.Manager) error {
return ctrl.NewWebhookManagedBy(mgr).
For(&WorkerResourceTemplate{}).
WithValidator(v).
return ctrl.NewWebhookManagedBy(mgr, &WorkerResourceTemplate{}).
WithCustomValidator(v).
Comment thread
carlydf marked this conversation as resolved.
Complete()
}

Expand Down
2 changes: 1 addition & 1 deletion docs/worker-resource-templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ spec:
- type: External
external:
metric:
name: temporal_backlog_count_by_version
name: temporal_approximate_backlog_count
selector:
matchLabels:
task_type: "Activity"
Expand Down
12 changes: 8 additions & 4 deletions examples/wrt-hpa-backlog.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
# helm upgrade prometheus-adapter prometheus-community/prometheus-adapter \
# -n monitoring -f internal/demo/k8s/prometheus-adapter-values.yaml
# 3. Verify the backlog metric is flowing:
# # Port-forward Prometheus and query: temporal_backlog_count_by_version
# # Port-forward Prometheus and query: temporal_approximate_backlog_count
#
# Apply:
# kubectl apply -f examples/wrt-hpa-backlog.yaml
Expand Down Expand Up @@ -61,14 +61,18 @@ spec:
value: "750m"

# Metric: backlog count — scale up when tasks are queued but not yet picked up.
# temporal_worker_deployment_name, temporal_worker_build_id, and temporal_namespace are
# appended automatically by the controller — do not set them here.
# temporal_approximate_backlog_count is a recording rule that aggregates
# temporal_cloud_v1_approximate_backlog_count down to the four labels the HPA needs.
# temporal_worker_deployment_name, temporal_worker_build_id, and temporal_namespace
# are injected automatically by the controller — do not set them here.
# temporal_task_queue must be set explicitly to scope the metric to your task queue.
- type: External
external:
metric:
name: temporal_backlog_count_by_version
name: temporal_approximate_backlog_count
selector:
matchLabels:
temporal_task_queue: "default_helloworld"
task_type: "Activity"
target:
# Scale up if more than 10 tasks are queued per current replica.
Expand Down
233 changes: 122 additions & 111 deletions go.mod

Large diffs are not rendered by default.

534 changes: 276 additions & 258 deletions go.sum

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion internal/controller/worker_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -741,7 +741,7 @@ func (r *WorkerDeploymentReconciler) recordWarningAndSetBlocked(
eventMessage string,
conditionMessage string,
) {
r.Recorder.Eventf(workerDeploy, corev1.EventTypeWarning, reason, eventMessage)
r.Recorder.Eventf(workerDeploy, corev1.EventTypeWarning, reason, "%s", eventMessage)
r.setCondition(workerDeploy, temporaliov1alpha1.ConditionProgressing, metav1.ConditionFalse, reason, conditionMessage)
r.setCondition(workerDeploy, temporaliov1alpha1.ConditionReady, metav1.ConditionFalse, reason, conditionMessage)
// Deprecated: set ConnectionHealthy=False for v1.3.x compat, but only for
Expand Down
52 changes: 30 additions & 22 deletions internal/demo/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,11 @@ This guide will help you set up and run the Temporal Worker Controller locally u

### Testing Progressive Deployments

> **`WORKER_VERSION` is required** for every `skaffold run --profile helloworld-worker` invocation. It drives the image tag (and therefore the Temporal build ID), so each deploy must use a fresh value (`v1`, `v2`, …). If unset, skaffold silently falls back to tagging the image `:latest` while helm renders `image.tag` as `<no value>`, which deploys a broken pod.

5. **Deploy the v1 worker**:
```bash
skaffold run --profile helloworld-worker
WORKER_VERSION=v1 skaffold run --profile helloworld-worker
```
This deploys a WorkerDeployment and Connection Custom Resource using the **Progressive strategy**. Note that when there is no current version (as in an initial versioned worker deployment), the progressive steps are skipped and v1 becomes the current version immediately. All new workflow executions will now start on v1.

Expand All @@ -97,7 +99,7 @@ This guide will help you set up and run the Temporal Worker Controller locally u
8. **Deploy a non-replay-safe workflow change**:
```bash
git apply internal/demo/helloworld/changes/no-version-gate.patch
skaffold run --profile helloworld-worker
WORKER_VERSION=v2 skaffold run --profile helloworld-worker
```
This applies a **non-replay-safe change** (switching an activity response type from string to a struct).

Expand Down Expand Up @@ -197,11 +199,11 @@ In addition to the main demo prerequisites, you need `kube-prometheus-stack` wit
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

helm install prometheus prometheus-community/kube-prometheus-stack \
helm upgrade --install prometheus prometheus-community/kube-prometheus-stack \
-n monitoring --create-namespace \
-f internal/demo/k8s/prometheus-stack-values.yaml

helm install prometheus-adapter prometheus-community/prometheus-adapter \
helm upgrade --install prometheus-adapter prometheus-community/prometheus-adapter \
-n monitoring \
-f internal/demo/k8s/prometheus-adapter-values.yaml

Expand Down Expand Up @@ -260,45 +262,51 @@ Stop the load generator (`Ctrl-C`) and watch the HPA scale back down as in-fligh

#### Phase 2: Add approximate backlog count

`approximate_backlog_count` measures tasks queued in Temporal but not yet started on a worker. Adding it as a second HPA metric means the HPA scales up on *arriving* work even before slots are full — important for bursty traffic.
[temporal_cloud_v1_approximate_backlog_count](https://docs.temporal.io/cloud/metrics/openmetrics/metrics-reference#temporal_cloud_v1_approximate_backlog_count) measures tasks queued in Temporal but not yet started on a worker. Adding it as a second HPA metric means the HPA scales up on *arriving* work even before slots are full — important for bursty traffic.
To ingest this metric into your cluster, you'll need to follow the instructions in the [Temporal OpenMetrics docs](https://docs.temporal.io/cloud/metrics/openmetrics) to set up a Temporal Cloud metrics API key. This is a separate credential from the namespace API key used for the worker connection.
You'll also need to [opt-in](https://docs.temporal.io/cloud/metrics/openmetrics/metrics-reference#opt-in-labels) to the `temporal_worker_deployment_name` and `temporal_worker_build_id` labels to enable per-version scaling.

This requires a **metrics API key** — a separate credential from the namespace API key used for the worker connection.

> **Note:** Temporal Cloud emits `temporal_approximate_backlog_count` with a combined
> `worker_version="<worker-deployment-name>_<build-id>"` label that easily exceeds Kubernetes max label
> length of 63 characters. The recording rule in `prometheus-stack-values.yaml` uses `label_replace`
> to extract `temporal_worker_deployment_name` and `temporal_worker_build_id` as separate k8s-compatible
> labels, producing `temporal_backlog_count_by_version`. The HPA then selects on those labels — the same
> pair used by Phase 1. Temporal Cloud is in the process of rolling out the new separate labels, so this
> workaround is required until then.
> **Note:** This demo ships a Prometheus recording rule that renames `temporal_cloud_v1_approximate_backlog_count` to `temporal_approximate_backlog_count` and reduces it to the labels the HPA cares about. In principle the HPA can consume the raw Cloud metric directly (set `namespaced: false` on the prometheus-adapter rule so it doesn't auto-inject a `namespace` label filter), but this demo uses the recording rule as a known-working path.

**Step 1 — Create the Temporal Cloud credentials secret.**
**Step 1 — Create the Temporal Cloud metrics credentials secret.**

Create a Temporal Cloud metrics API key (separate from the namespace API key) at Cloud UI → Settings → Observability → Generate API Key. Save it to `certs/metrics-api-key.txt`, then create the secret in the `monitoring` namespace:
Once you have created a Temporal Cloud metrics API key at **Cloud UI → Settings → Observability → Generate API Key**, save the API key to `certs/metrics-api-key.txt`, then create the secret in the `monitoring` namespace:
```bash
kubectl create secret generic temporal-cloud-api-key \
-n monitoring \
--from-file=api-key=certs/metrics-api-key.txt
--from-literal=api-key=<your-metrics-api-key>
```

**Step 2 — Upgrade Prometheus and prometheus-adapter.**
> **Rotating an expired key:** If the key expires, generate a new one in the Cloud UI, then replace the secret and restart the Prometheus pod to remount it:
> ```bash
> kubectl delete secret temporal-cloud-api-key -n monitoring
> kubectl create secret generic temporal-cloud-api-key \
> -n monitoring \
> --from-literal=api-key=<your-new-metrics-api-key>
> kubectl delete pod -n monitoring prometheus-prometheus-kube-prometheus-prometheus-0
> ```

**Step 2 — Install or upgrade Prometheus and prometheus-adapter with the Temporal Cloud scrape config.**

The scrape config and recording rule are already configured in `prometheus-stack-values.yaml`:
```bash
helm upgrade prometheus prometheus-community/kube-prometheus-stack \
helm upgrade --install prometheus prometheus-community/kube-prometheus-stack \
-n monitoring -f internal/demo/k8s/prometheus-stack-values.yaml

helm upgrade prometheus-adapter prometheus-community/prometheus-adapter \
helm upgrade --install prometheus-adapter prometheus-community/prometheus-adapter \
-n monitoring -f internal/demo/k8s/prometheus-adapter-values.yaml
```

**Step 3 — Verify the backlog metric is flowing.**

```bash
kubectl -n monitoring port-forward svc/prometheus-kube-prometheus-prometheus 9092:9090 &
curl -s 'http://localhost:9092/api/v1/query?query=temporal_backlog_count_by_version' \
curl -s 'http://localhost:9092/api/v1/query?query=temporal_approximate_backlog_count' \
| jq '.data.result'
```

You should see a result with `twd_name` and `build_id` labels. If the result is empty, wait 15–30s for the recording rule to evaluate.
You should see results with `temporal_worker_deployment_name` and `temporal_worker_build_id` labels. If the result is empty, wait 15–30s for the recording rule to evaluate.

**Step 4 — Apply the combined WRT.**
```bash
Expand All @@ -316,7 +324,7 @@ With load running, this demonstrates the core value proposition: v1 and v2 scale
make apply-hpa-load

# Terminal 2: deploy v2 while v1 is under load
skaffold run --profile helloworld-worker
WORKER_VERSION=v2 skaffold run --profile helloworld-worker

# Terminal 3: watch the two HPAs
kubectl get hpa -w
Expand Down
18 changes: 9 additions & 9 deletions internal/demo/go.mod
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
module github.com/temporalio/temporal-worker-controller/internal/demo

go 1.25.8
go 1.26.2

require (
github.com/prometheus/client_golang v1.23.0
go.opentelemetry.io/otel v1.43.0
go.opentelemetry.io/otel/exporters/prometheus v0.60.0
go.opentelemetry.io/otel/sdk/metric v1.43.0
go.temporal.io/api v1.60.2
go.temporal.io/sdk v1.38.0
go.temporal.io/api v1.62.11
go.temporal.io/sdk v1.43.0
go.temporal.io/sdk/contrib/envconfig v0.1.0
go.temporal.io/sdk/contrib/opentelemetry v0.6.0
)
Expand All @@ -27,7 +27,7 @@ require (
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/nexus-rpc/sdk-go v0.5.1 // indirect
github.com/nexus-rpc/sdk-go v0.6.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.66.1 // indirect
Expand All @@ -41,14 +41,14 @@ require (
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
go.opentelemetry.io/otel/trace v1.43.0 // indirect
go.yaml.in/yaml/v2 v2.4.3 // indirect
golang.org/x/net v0.48.0 // indirect
golang.org/x/net v0.49.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/text v0.32.0 // indirect
golang.org/x/text v0.33.0 // indirect
golang.org/x/time v0.13.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 // indirect
google.golang.org/grpc v1.79.3 // indirect
google.golang.org/protobuf v1.36.10 // indirect
google.golang.org/protobuf v1.36.11 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
32 changes: 16 additions & 16 deletions internal/demo/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nexus-rpc/sdk-go v0.5.1 h1:UFYYfoHlQc+Pn9gQpmn9QE7xluewAn2AO1OSkAh7YFU=
github.com/nexus-rpc/sdk-go v0.5.1/go.mod h1:FHdPfVQwRuJFZFTF0Y2GOAxCrbIBNrcPna9slkGKPYk=
github.com/nexus-rpc/sdk-go v0.6.0 h1:QRgnP2zTbxEbiyWG/aXH8uSC5LV/Mg1fqb19jb4DBlo=
github.com/nexus-rpc/sdk-go v0.6.0/go.mod h1:FHdPfVQwRuJFZFTF0Y2GOAxCrbIBNrcPna9slkGKPYk=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
Expand Down Expand Up @@ -78,10 +78,10 @@ go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfC
go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A=
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
go.temporal.io/api v1.60.2 h1:xqUqdPeOu8/HNWVPu51P6tVoBJ5kRh8nBI62xXi+IWg=
go.temporal.io/api v1.60.2/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM=
go.temporal.io/sdk v1.38.0 h1:4Bok5LEdED7YKpsSjIa3dDqram5VOq+ydBf4pyx0Wo4=
go.temporal.io/sdk v1.38.0/go.mod h1:a+R2Ej28ObvHoILbHaxMyind7M6D+W0L7edt5UJF4SE=
go.temporal.io/api v1.62.11 h1:MWDaooDvOJCIRb1atqeZX2ErDPNTsNc3/mMEVEvvaVU=
go.temporal.io/api v1.62.11/go.mod h1:iaxoP/9OXMJcQkETTECfwYq4cw/bj4nwov8b3ZLVnXM=
go.temporal.io/sdk v1.43.0 h1:jHX/T2ZyBVjAtpQ/69NoMS6a+J0CpJAe+naqSB1gkvY=
go.temporal.io/sdk v1.43.0/go.mod h1:w9XuJzV25JhnJqUzxJWJISpp5q/EyeCtRKHvhW3lIoQ=
go.temporal.io/sdk/contrib/envconfig v0.1.0 h1:s+G/Ujph+Xl2jzLiiIm2T1vuijDkUL4Kse49dgDVGBE=
go.temporal.io/sdk/contrib/envconfig v0.1.0/go.mod h1:FQEO3C56h9C7M6sDgSanB8HnBTmopw9qgVx4F1S6pJk=
go.temporal.io/sdk/contrib/opentelemetry v0.6.0 h1:rNBArDj5iTUkcMwKocUShoAW59o6HdS7Nq4CTp4ldj8=
Expand All @@ -101,8 +101,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
Expand All @@ -122,8 +122,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI=
golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand All @@ -137,14 +137,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls=
google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww=
google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516 h1:vmC/ws+pLzWjj/gzApyoZuSVrDtF1aod4u/+bbj8hgM=
google.golang.org/genproto/googleapis/api v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516 h1:sNrWoksmOyF5bvJUcnmbeAmQi8baNhqg5IWaI3llQqU=
google.golang.org/genproto/googleapis/rpc v0.0.0-20260120221211-b8f7ae30c516/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ=
google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE=
google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=
google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ spec:
gate:
workflowType: "RolloutGate"
sunset:
scaledownDelay: 30s
deleteDelay: 5m
scaledownDelay: 0s
Comment thread
carlydf marked this conversation as resolved.
deleteDelay: 30s
# Desired number of worker replicas
# Desired specification for worker pods
template:
Expand Down
Loading
Loading