v2.3.0
Restate Operator v2.3.0
✨ New Features
-
GCP Workload Identity via Config Connector — The operator now automatically creates
IAMPolicyMemberresources to bind Kubernetes service accounts to GCP service accounts via Workload Identity. This is triggered when a RestateCluster hasiam.gke.io/gcp-service-accountinserviceAccountAnnotations. The GCP project ID is extracted from the service account email, so no additional configuration is needed beyond the annotation. A canary job validates that credentials are available before the StatefulSet proceeds. This mirrors the existing AWS Pod Identity Association pattern and requires Config Connector to be installed on the GKE cluster. -
Configurable cluster DNS suffix — The operator now supports configuring the Kubernetes cluster DNS suffix via the
--cluster-dnsCLI flag,CLUSTER_DNSenvironment variable, or HelmclusterDnsvalue. Previouslycluster.localwas hardcoded in all internal service URLs. This is needed for multi-cluster setups, federated environments, and clusters with custom DNS naming. -
Configurable drain delay — Added
drainDelaySecondsto the RestateDeployment CRD'sspec.restatesection. This controls how long the operator waits after a deployment is drained before removing the old version. Default remains 300 seconds (5 minutes). (#96)
🐛 Bug Fixes
-
Improved admin API error messages — When a deployment registration is rejected by the admin API (e.g. breaking changes without
--force), the error message now includes the response from Restate and is logged and emitted as a Kubernetes event, making failures much easier to diagnose. (#100) -
Fixed canary job completion detection — Fixed a bug where a completed canary job was treated as still pending, causing the operator to loop indefinitely with a
NotReadystatus condition. (#102)
⚙️ Configuration Changes
- New Helm value
clusterDnsfor configuring the cluster DNS suffix (default:cluster.local) - Conditional RBAC for
IAMPolicyMemberCRDs when GCP Workload Identity is enabled
⚠️ Upgrading Notes
CRD Update Required: Helm does not automatically upgrade CRDs. After upgrading the operator, you must manually apply the updated CRDs:
kubectl apply --server-side -f https://github.com/restatedev/restate-operator/releases/download/v2.3.0/restateclusters.yaml
kubectl apply --server-side -f https://github.com/restatedev/restate-operator/releases/download/v2.3.0/restatedeployments.yaml
kubectl apply --server-side -f https://github.com/restatedev/restate-operator/releases/download/v2.3.0/restatecloudenvironments.yamlThen upgrade the operator via Helm:
helm upgrade restate-operator restatedev/restate-operator --version 2.3.0Full release notes: release-notes/v2.3.0.md