Skip to content

Commit 9d6f48a

Browse files
fix: preserve original subject namespace in RoleBinding and ClusterRoleBinding with -preserve-ns
When -preserve-ns is set, keep the original namespace on binding subjects instead of replacing it with {{ .Release.Namespace }}. This ensures correct ServiceAccount references in umbrella chart deployments where the release namespace differs from the target namespace.
1 parent db18ef9 commit 9d6f48a

3 files changed

Lines changed: 9 additions & 2 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,6 @@ testbin/*
2929
dist/
3030

3131
vendor/
32+
33+
# Binary
34+
helmify

pkg/processor/rbac/clusterrolebinding.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ func (r clusterRoleBinding) Process(appMeta helmify.AppMetadata, obj *unstructur
5959
}
6060

6161
for i, s := range rb.Subjects {
62-
s.Namespace = "{{ .Release.Namespace }}"
62+
if !(appMeta.Config().PreserveNs && s.Namespace != "") {
63+
s.Namespace = "{{ .Release.Namespace }}"
64+
}
6365
s.Name = fmt.Sprintf("{{ include \"%s.serviceAccountName\" . }}", appMeta.ChartName())
6466
rb.Subjects[i] = s
6567
}

pkg/processor/rbac/rolebinding.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ func (r roleBinding) Process(appMeta helmify.AppMetadata, obj *unstructured.Unst
5757
}
5858

5959
for i, s := range rb.Subjects {
60-
s.Namespace = "{{ .Release.Namespace }}"
60+
if !(appMeta.Config().PreserveNs && s.Namespace != "") {
61+
s.Namespace = "{{ .Release.Namespace }}"
62+
}
6163
s.Name = fmt.Sprintf("{{ include \"%s.serviceAccountName\" . }}", appMeta.ChartName())
6264
rb.Subjects[i] = s
6365
}

0 commit comments

Comments
 (0)