Skip to content

Commit 8775274

Browse files
(helm/v1-alpha): Use namePrefix from config/default/kustomization.yaml as prefix for RBAC rules and project name only if this value cannot be found.
1 parent d7321e5 commit 8775274

File tree

1 file changed

+33
-9
lines changed
  • pkg/plugins/optional/helm/v1alpha/scaffolds

1 file changed

+33
-9
lines changed

pkg/plugins/optional/helm/v1alpha/scaffolds/init.go

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,30 @@ func (s *initScaffolder) Scaffold() error {
124124
return nil
125125
}
126126

127+
// getNamePrefix will return the value from kustomize config so that we can append
128+
// in the RBAC rules manifests. If we be unable to find this value we will use
129+
// the projectName instead.
130+
func (s *initScaffolder) getNamePrefix() string {
131+
filePath := "config/default/kustomization.yaml"
132+
content, err := os.ReadFile(filePath)
133+
if err != nil {
134+
log.Fatalf("failed to read config/default/kustomization.yaml: %s", err)
135+
os.Exit(1)
136+
}
137+
138+
var defaultConfig struct {
139+
NamePrefix string `yaml:"namePrefix"`
140+
}
141+
142+
if err := yaml.Unmarshal(content, &defaultConfig); err != nil {
143+
log.Warnf("failed to parse kustomization.yaml to get namePrefix: %w", err)
144+
log.Warnf("using the project name as a prefix of RBAC and manifests")
145+
return s.config.GetProjectName()
146+
}
147+
148+
return strings.TrimSpace(defaultConfig.NamePrefix)
149+
}
150+
127151
// getDeployImagesEnvVars will return the values to append the envvars for projects
128152
// which has the APIs scaffolded with DeployImage plugin
129153
func (s *initScaffolder) getDeployImagesEnvVars() map[string]string {
@@ -243,7 +267,7 @@ func (s *initScaffolder) copyConfigFiles() error {
243267

244268
for _, srcFile := range files {
245269
destFile := filepath.Join(dir.DestDir, filepath.Base(srcFile))
246-
err := copyFileWithHelmLogic(srcFile, destFile, dir.SubDir, s.config.GetProjectName())
270+
err = copyFileWithHelmLogic(srcFile, destFile, dir.SubDir, s.getNamePrefix())
247271
if err != nil {
248272
return err
249273
}
@@ -255,7 +279,7 @@ func (s *initScaffolder) copyConfigFiles() error {
255279

256280
// copyFileWithHelmLogic reads the source file, modifies the content for Helm, applies patches
257281
// to spec.conversion if applicable, and writes it to the destination
258-
func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error {
282+
func copyFileWithHelmLogic(srcFile, destFile, subDir, namePrefix string) error {
259283
if _, err := os.Stat(srcFile); os.IsNotExist(err) {
260284
log.Printf("Source file does not exist: %s", srcFile)
261285
return err
@@ -282,14 +306,14 @@ func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error
282306
"name: {{ .Values.controllerManager.serviceAccountName }}", -1)
283307
contentStr = strings.Replace(contentStr,
284308
"name: metrics-reader",
285-
fmt.Sprintf("name: %s-metrics-reader", projectName), 1)
309+
fmt.Sprintf("name: %smetrics-reader", namePrefix), 1)
286310

287311
contentStr = strings.Replace(contentStr,
288312
"name: metrics-auth-role",
289-
fmt.Sprintf("name: %s-metrics-auth-role", projectName), -1)
313+
fmt.Sprintf("name: %smetrics-auth-role", namePrefix), -1)
290314
contentStr = strings.Replace(contentStr,
291315
"name: metrics-auth-rolebinding",
292-
fmt.Sprintf("name: %s-metrics-auth-rolebinding", projectName), 1)
316+
fmt.Sprintf("name: %smetrics-auth-rolebinding", namePrefix), 1)
293317

294318
if strings.Contains(contentStr, ".Values.controllerManager.serviceAccountName") &&
295319
strings.Contains(contentStr, "kind: ServiceAccount") &&
@@ -306,16 +330,16 @@ func copyFileWithHelmLogic(srcFile, destFile, subDir, projectName string) error
306330
}
307331
contentStr = strings.Replace(contentStr,
308332
"name: leader-election-role",
309-
fmt.Sprintf("name: %s-leader-election-role", projectName), -1)
333+
fmt.Sprintf("name: %sleader-election-role", namePrefix), -1)
310334
contentStr = strings.Replace(contentStr,
311335
"name: leader-election-rolebinding",
312-
fmt.Sprintf("name: %s-leader-election-rolebinding", projectName), 1)
336+
fmt.Sprintf("name: %sleader-election-rolebinding", namePrefix), 1)
313337
contentStr = strings.Replace(contentStr,
314338
"name: manager-role",
315-
fmt.Sprintf("name: %s-manager-role", projectName), -1)
339+
fmt.Sprintf("name: %smanager-role", namePrefix), -1)
316340
contentStr = strings.Replace(contentStr,
317341
"name: manager-rolebinding",
318-
fmt.Sprintf("name: %s-manager-rolebinding", projectName), 1)
342+
fmt.Sprintf("name: %smanager-rolebinding", namePrefix), 1)
319343

320344
// The generated files do not include the namespace
321345
if strings.Contains(contentStr, "leader-election-rolebinding") ||

0 commit comments

Comments
 (0)