Skip to content

Commit

Permalink
controllers: allows patching init config containers
Browse files Browse the repository at this point in the history
it should be useful for ad-hoc patching
#619
  • Loading branch information
f41gh7 committed May 29, 2023
1 parent 65d8d0a commit 3da4af1
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
10 changes: 8 additions & 2 deletions controllers/factory/vmagent.go
Original file line number Diff line number Diff line change
Expand Up @@ -498,11 +498,17 @@ func makeSpecForVMAgent(cr *victoriametricsv1beta1.VMAgent, c *config.BaseOperat
}
}
}
cr.Spec.InitContainers = maybeAddInitConfigContainer(cr.Spec.InitContainers, c, vmAgentConfDir, vmagentGzippedFilename, vmAgentConOfOutDir, configEnvsubstFilename)
ic := buildInitConfigContainer(c.VMAgentDefault.ConfigReloadImage, c, vmAgentConfDir, vmagentGzippedFilename, vmAgentConOfOutDir, configEnvsubstFilename)
if len(cr.Spec.InitContainers) > 0 {
ic, err = k8stools.MergePatchContainers(ic, cr.Spec.InitContainers)
if err != nil {
return nil, fmt.Errorf("cannot apply patch for initContainers: %w", err)
}
}
return &corev1.PodSpec{
NodeSelector: cr.Spec.NodeSelector,
Volumes: volumes,
InitContainers: cr.Spec.InitContainers,
InitContainers: ic,
Containers: containers,
ServiceAccountName: cr.GetServiceAccountName(),
SecurityContext: cr.Spec.SecurityContext,
Expand Down
17 changes: 11 additions & 6 deletions controllers/factory/vmauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,6 @@ func makeSpecForVMAuth(cr *victoriametricsv1beta1.VMAuth, c *config.BaseOperator
}

configReloader := buildVMAuthConfigReloaderContainer(cr, c)
cr.Spec.InitContainers = maybeAddInitConfigContainer(cr.Spec.InitContainers, c, vmAuthConfigMountGz, vmAuthConfigNameGz, vmAuthConfigFolder, vmAuthConfigName)

vmauthContainer = buildProbe(vmauthContainer, cr)
operatorContainers := []corev1.Container{configReloader, vmauthContainer}
Expand All @@ -252,6 +251,13 @@ func makeSpecForVMAuth(cr *victoriametricsv1beta1.VMAuth, c *config.BaseOperator
return nil, err
}

ic := buildInitConfigContainer(c.VMAuthDefault.ConfigReloadImage, c, vmAuthConfigMountGz, vmAuthConfigNameGz, vmAuthConfigFolder, vmAuthConfigName)
if len(cr.Spec.InitContainers) > 0 {
ic, err = k8stools.MergePatchContainers(ic, cr.Spec.InitContainers)
if err != nil {
return nil, fmt.Errorf("cannot apply patch for initContainers: %w", err)
}
}
vmAuthSpec := &corev1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: cr.PodLabels(),
Expand All @@ -260,7 +266,7 @@ func makeSpecForVMAuth(cr *victoriametricsv1beta1.VMAuth, c *config.BaseOperator
Spec: corev1.PodSpec{
NodeSelector: cr.Spec.NodeSelector,
Volumes: volumes,
InitContainers: cr.Spec.InitContainers,
InitContainers: ic,
Containers: containers,
ServiceAccountName: cr.GetServiceAccountName(),
SecurityContext: cr.Spec.SecurityContext,
Expand Down Expand Up @@ -484,10 +490,10 @@ func buildVMAuthConfigReloaderContainer(cr *victoriametricsv1beta1.VMAuth, c *co
return configReloader
}

func maybeAddInitConfigContainer(src []corev1.Container, c *config.BaseOperatorConf, configDirName, configFileName, outConfigDir, outFileName string) []corev1.Container {
func buildInitConfigContainer(baseImage string, c *config.BaseOperatorConf, configDirName, configFileName, outConfigDir, outFileName string) []corev1.Container {
// TODO add support for custom reloader
if c.UseCustomConfigReloader {
return src
return nil
}
initReloader := corev1.Container{
Image: formatContainerImage(c.ContainerRegistry, c.VMAgentDefault.ConfigReloadImage),
Expand All @@ -510,6 +516,5 @@ func maybeAddInitConfigContainer(src []corev1.Container, c *config.BaseOperatorC
},
},
}
src = append(src, initReloader)
return src
return []corev1.Container{initReloader}
}

0 comments on commit 3da4af1

Please sign in to comment.