@@ -20,6 +20,7 @@ import (
2020 "k8s.io/apimachinery/pkg/api/errors"
2121 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222 "k8s.io/apimachinery/pkg/util/intstr"
23+ "k8s.io/utils/ptr"
2324 "sigs.k8s.io/controller-runtime/pkg/client"
2425)
2526
@@ -85,7 +86,14 @@ func (fi *FlagdContainerInjector) InjectFlagd(
8586 flagdContainer .Resources .Limits = flagSourceConfig .Resources .Limits
8687 }
8788
88- addFlagdContainer (podSpec , flagdContainer )
89+ // Handle standalone Flagd deployment as well as sidecar injection.
90+ if len (podSpec .Containers ) == 0 {
91+ addFlagdContainer (podSpec , flagdContainer )
92+ } else {
93+ flagdContainer .RestartPolicy = ptr .To (corev1 .ContainerRestartPolicyAlways )
94+
95+ addFlagdSidecarContainer (podSpec , flagdContainer )
96+ }
8997
9098 return nil
9199}
@@ -472,6 +480,16 @@ func (fi *FlagdContainerInjector) createConfigMap(ctx context.Context, namespace
472480 return fi .Client .Create (ctx , cm )
473481}
474482
483+ func addFlagdSidecarContainer (spec * corev1.PodSpec , flagdContainer corev1.Container ) {
484+ for idx , container := range spec .InitContainers {
485+ if container .Name == flagdContainer .Name {
486+ spec .InitContainers [idx ] = flagdContainer
487+ return
488+ }
489+ }
490+ spec .InitContainers = append (spec .InitContainers , flagdContainer )
491+ }
492+
475493func addFlagdContainer (spec * corev1.PodSpec , flagdContainer corev1.Container ) {
476494 for idx , container := range spec .Containers {
477495 if container .Name == flagdContainer .Name {
0 commit comments