Skip to content

Commit 1cac9a2

Browse files
fantapsodyclaude
andauthored
Add Istio ambient mode support to Helm chart (#1254)
This commit adds support for Istio ambient mode (sidecar-less data plane) to all Pulsar components in the Helm chart, following the design from sn-operator/docs/proposals/istio-ambient-mode-design.md. Changes: - Add dataplaneMode field to values.yaml istio section (defaults to empty for backward compatibility) - Update PulsarBroker template to include dataplaneMode in istio config - Update PulsarProxy template to include dataplaneMode in istio config - Add istio section with dataplaneMode to BookKeeperCluster template - Add istio section with dataplaneMode to ZooKeeperCluster template Benefits: - Backward compatible (empty value defaults to sidecar mode via API) - Enables ~70-80% resource savings with ambient mode - Supports migration mode with permissive mTLS - All components (Broker, Proxy, BookKeeper, ZooKeeper) support ambient mode Usage: Set istio.dataplaneMode: "ambient" to enable sidecar-less data plane Set istio.dataplaneMode: "sidecar" or leave empty for traditional sidecar mode 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- ### Contribution Checklist - Name the pull request in the form "[charts/<chart-name>] Title of the pull request". Skip *[charts/<chart-name>]* if the PR doesn't change a specific chart. E.g. `[docs] Fix typo in README`. - Fill out the template below to describe the changes contributed by the pull request. That will give reviewers the context they need to do the review. - Each pull request should address only one issue, not mix up code from multiple issues. - Each commit in the pull request has a meaningful commit message - Once all items of the checklist are addressed, remove the above text and this checklist, leaving only the filled out template below. **(The sections below can be removed for hotfixes of typos)** --> *(If this PR fixes a github issue, please add `Fixes #<xyz>`.)* Fixes #<xyz> *(or if this PR is one task of a github issue, please add `Master Issue: #<xyz>` to link to the master issue.)* Master Issue: #<xyz> ### Motivation *Explain here the context, and why you're making that change. What is the problem you're trying to solve.* ### Modifications *Describe the modifications you've done.* ### Verifying this change - [ ] Make sure that the change passes the CI checks. *(Please pick either of the following options)* This change is a trivial rework / code cleanup without any test coverage. *(or)* This change is already covered by existing tests, such as *(please describe tests)*. *(or)* This change added tests and can be verified as follows: *(example:)* - *Added integration tests for end-to-end deployment with large payloads (10MB)* - *Extended integration test for recovery after broker failure* ### Documentation Check the box below. Need to update docs? - [ ] `doc-required` (If you need help on updating docs, create a doc issue) - [x] `no-need-doc` (Please explain why) - [ ] `doc` (If this PR contains doc changes) Co-authored-by: Claude <[email protected]>
1 parent 2c7bb46 commit 1cac9a2

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

charts/sn-platform-slim/templates/bookkeeper/bookkeeper-cluster.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,17 @@ spec:
176176
{{- include "pulsar.bookkeeper.ledgers.storage.class" . | nindent 8 }}
177177
reclaimPolicy: {{ .Values.bookkeeper.volumes.reclaimPolicy | default "Delete" }}
178178
{{- end }}
179+
{{- if .Values.istio.enabled }}
180+
istio:
181+
enabled: true
182+
{{- if .Values.istio.dataplaneMode }}
183+
dataplaneMode: {{ .Values.istio.dataplaneMode }}
184+
{{- end }}
185+
{{- if .Values.istio.migration }}
186+
mtls:
187+
mode: permissive
188+
{{- end }}
189+
{{- end }}
179190
config:
180191
{{- with .Values.bookkeeper.rackAwareTopologyLabels }}
181192
rackAwareTopologyLabels:

charts/sn-platform-slim/templates/broker/broker-cluster.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ spec:
168168
{{- if and .Values.istio.enabled .Values.ingress.broker.enabled }}
169169
istio:
170170
enabled: true
171+
{{- if .Values.istio.dataplaneMode }}
172+
dataplaneMode: {{ .Values.istio.dataplaneMode }}
173+
{{- end }}
171174
{{- if .Values.istio.migration }}
172175
mtls:
173176
mode: permissive

charts/sn-platform-slim/templates/proxy/proxy-cluster.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,9 @@ spec:
114114
{{- if .Values.istio.enabled }}
115115
istio:
116116
enabled: true
117+
{{- if .Values.istio.dataplaneMode }}
118+
dataplaneMode: {{ .Values.istio.dataplaneMode }}
119+
{{- end }}
117120
{{- if eq .Values.ingress.proxy.type "IstioGateway" }}
118121
gateway:
119122
selector:

charts/sn-platform-slim/templates/zookeeper/zookeeper-cluster.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,17 @@ spec:
180180
{{- include "pulsar.zookeeper.dataLog.storage.class" . | nindent 6 }}
181181
reclaimPolicy: {{ .Values.zookeeper.volumes.reclaimPolicy | default "Delete" }}
182182
{{- end }}
183+
{{- if .Values.istio.enabled }}
184+
istio:
185+
enabled: true
186+
{{- if .Values.istio.dataplaneMode }}
187+
dataplaneMode: {{ .Values.istio.dataplaneMode }}
188+
{{- end }}
189+
{{- if .Values.istio.migration }}
190+
mtls:
191+
mode: permissive
192+
{{- end }}
193+
{{- end }}
183194
config:
184195
serverCnxnFactory: {{ .Values.zookeeper.serverCnxnFactory }}
185196
# copy from configmap

charts/sn-platform-slim/values.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2459,6 +2459,11 @@ istio:
24592459
# mergeMetrics should be enabled if you want to scrape pulsar metrics from an external prometheus not running on Istio
24602460
# prometheus and grafana will not be Istio injected if mergeMetrics is enabled
24612461
mergeMetrics: false
2462+
# Istio data plane mode: "sidecar" or "ambient"
2463+
# - sidecar: Traditional per-pod sidecars (default if empty)
2464+
# - ambient: Sidecar-less data plane using ztunnel for L4 mTLS (~70-80% resource savings)
2465+
# Leave empty for default behavior (sidecar mode)
2466+
dataplaneMode: ""
24622467
gateway:
24632468
# gateway selector if it's not `istio: ingressgateway`
24642469
selector: {}

0 commit comments

Comments
 (0)