Skip to content

Commit

Permalink
fix: inject pod name as reference
Browse files Browse the repository at this point in the history
  • Loading branch information
blumamir committed Feb 7, 2025
1 parent 7ab0839 commit 4d07f64
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
2 changes: 1 addition & 1 deletion instrumentor/controllers/agentenabled/pods_webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ func injectOdigosToContainer(containerConfig *odigosv1.ContainerAgentConfig, pod
volumeMounted := false
for _, agentDirectory := range distroMetadata.AgentDirectories {
podswebhook.MountDirectory(podContainerSpec, agentDirectory.DirectoryName)
podswebhook.InjectK8sEnvVars(podContainerSpec, distroName, pw)
podswebhook.InjectOdigosK8sEnvVars(podContainerSpec, distroName, pw.Namespace)
volumeMounted = true
}

Expand Down
23 changes: 20 additions & 3 deletions instrumentor/controllers/agentenabled/podswebhook/env.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import (
corev1 "k8s.io/api/core/v1"
)

func InjectK8sEnvVars(container *corev1.Container, distroName string, pw k8sconsts.PodWorkload) {
func InjectOdigosK8sEnvVars(container *corev1.Container, distroName string, ns string) {

// check for existing env vars so we don't introduce them again
existingEnvNames := make(map[string]struct{})
Expand All @@ -15,8 +15,25 @@ func InjectK8sEnvVars(container *corev1.Container, distroName string, pw k8scons

injectEnvVarToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarContainerName, container.Name)
injectEnvVarToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarDistroName, distroName)
injectEnvVarToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarPodName, pw.Name)
injectEnvVarToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarNamespace, pw.Namespace)
injectEnvVarObjectFieldRefToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarPodName, "metadata.name")
injectEnvVarToPodContainer(&existingEnvNames, container, k8sconsts.OdigosEnvVarNamespace, ns)
}

func injectEnvVarObjectFieldRefToPodContainer(existingEnvNames *map[string]struct{}, container *corev1.Container, envVarName, envVarRef string) {
if _, exists := (*existingEnvNames)[envVarName]; exists {
return
}

container.Env = append(container.Env, corev1.EnvVar{
Name: envVarName,
ValueFrom: &corev1.EnvVarSource{
FieldRef: &corev1.ObjectFieldSelector{
FieldPath: envVarRef,
},
},
})

(*existingEnvNames)[envVarName] = struct{}{}
}

func injectEnvVarToPodContainer(existingEnvNames *map[string]struct{}, container *corev1.Container, envVarName, envVarValue string) {
Expand Down

0 comments on commit 4d07f64

Please sign in to comment.