@@ -27,7 +27,7 @@ const (
2727 annotationAgentName = "lightrun.com/lightrunjavaagent"
2828)
2929
30- func (r * LightrunJavaAgentReconciler ) createAgentConfig (lightrunJavaAgent * agentv1beta.LightrunJavaAgent ) (corev1.ConfigMap , error ) {
30+ func (r * LightrunJavaAgentReconciler ) createAgentConfig (lightrunJavaAgent * agentv1beta.LightrunJavaAgent , secret * corev1. Secret ) (corev1.ConfigMap , error ) {
3131 populateTags (lightrunJavaAgent .Spec .AgentTags , lightrunJavaAgent .Spec .AgentName , & metadata )
3232 jsonString , err := json .Marshal (metadata )
3333 if err != nil {
@@ -52,16 +52,14 @@ func (r *LightrunJavaAgentReconciler) createAgentConfig(lightrunJavaAgent *agent
5252}
5353
5454func (r * LightrunJavaAgentReconciler ) patchDeployment (lightrunJavaAgent * agentv1beta.LightrunJavaAgent , secret * corev1.Secret , origDeployment * appsv1.Deployment , deploymentApplyConfig * appsv1ac.DeploymentApplyConfiguration , cmDataHash uint64 ) error {
55-
5655 // init spec.template.spec
5756 deploymentApplyConfig .WithSpec (
5857 appsv1ac .DeploymentSpec ().WithTemplate (
5958 corev1ac .PodTemplateSpec ().WithSpec (
6059 corev1ac .PodSpec (),
6160 ).WithAnnotations (map [string ]string {
6261 annotationConfigMapHash : fmt .Sprint (cmDataHash ),
63- },
64- ),
62+ }),
6563 ),
6664 ).WithAnnotations (map [string ]string {
6765 annotationAgentName : lightrunJavaAgent .Name ,
@@ -72,6 +70,10 @@ func (r *LightrunJavaAgentReconciler) patchDeployment(lightrunJavaAgent *agentv1
7270 if err != nil {
7371 return err
7472 }
73+ deploymentApplyConfig .Spec .Template .Spec .WithSecurityContext (
74+ corev1ac .PodSecurityContext ().
75+ WithFSGroup (1000 ),
76+ )
7577 return nil
7678}
7779
@@ -99,54 +101,53 @@ func (r *LightrunJavaAgentReconciler) addVolume(deploymentApplyConfig *appsv1ac.
99101}
100102
101103func (r * LightrunJavaAgentReconciler ) addInitContainer (deploymentApplyConfig * appsv1ac.DeploymentApplyConfiguration , lightrunJavaAgent * agentv1beta.LightrunJavaAgent , secret * corev1.Secret ) {
102-
103104 deploymentApplyConfig .Spec .Template .Spec .WithInitContainers (
104105 corev1ac .Container ().
105106 WithName (initContainerName ).
106107 WithImage (lightrunJavaAgent .Spec .InitContainer .Image ).
107108 WithVolumeMounts (
108109 corev1ac .VolumeMount ().WithName (lightrunJavaAgent .Spec .InitContainer .SharedVolumeName ).WithMountPath ("/tmp/" ),
109110 corev1ac .VolumeMount ().WithName (cmVolumeName ).WithMountPath ("/tmp/cm/" ),
110- ).WithEnv (
111- corev1ac .EnvVar ().WithName ("LIGHTRUN_KEY" ).WithValueFrom (
112- corev1ac .EnvVarSource ().WithSecretKeyRef (
113- corev1ac .SecretKeySelector ().WithName (secret .Name ).WithKey ("lightrun_key" ),
114- ),
115- ),
116- corev1ac .EnvVar ().WithName ("PINNED_CERT" ).WithValueFrom (
117- corev1ac .EnvVarSource ().WithSecretKeyRef (
118- corev1ac .SecretKeySelector ().WithName (secret .Name ).WithKey ("pinned_cert_hash" ),
119- ),
120- ),
121- corev1ac .EnvVar ().WithName ("LIGHTRUN_SERVER" ).WithValue (lightrunJavaAgent .Spec .ServerHostname ),
122- ).
111+ corev1ac .VolumeMount ().WithName ("lightrun-secret" ).WithMountPath ("/etc/lightrun/secret" ).WithReadOnly (true ),
112+ ).
113+ WithEnv (
114+ corev1ac .EnvVar ().WithName ("LIGHTRUN_SERVER" ).WithValue (lightrunJavaAgent .Spec .ServerHostname ),
115+ ).
116+ WithSecurityContext (
117+ corev1ac .SecurityContext ().
118+ WithReadOnlyRootFilesystem (true ).
119+ WithAllowPrivilegeEscalation (false ).
120+ WithRunAsNonRoot (true ).
121+ WithRunAsUser (1000 ),
122+ ).
123123 WithResources (
124124 corev1ac .ResourceRequirements ().
125125 WithLimits (
126126 corev1.ResourceList {
127127 corev1 .ResourceCPU : * resource .NewMilliQuantity (int64 (50 ), resource .BinarySI ),
128128 corev1 .ResourceMemory : * resource .NewScaledQuantity (int64 (64 ), resource .Scale (6 )), // 500 * 10^6 = 500M
129129 },
130- ).WithRequests (
131- corev1.ResourceList {
132- corev1 .ResourceCPU : * resource .NewMilliQuantity (int64 (50 ), resource .BinarySI ),
133- corev1 .ResourceMemory : * resource .NewScaledQuantity (int64 (64 ), resource .Scale (6 )),
134- },
135- ),
136- ).
137- WithSecurityContext (
138- corev1ac .SecurityContext ().
139- WithCapabilities (
140- corev1ac .Capabilities ().WithDrop (corev1 .Capability ("ALL" )),
141130 ).
142- WithAllowPrivilegeEscalation ( false ).
143- WithRunAsNonRoot ( true ).
144- WithSeccompProfile (
145- corev1ac . SeccompProfile ().
146- WithType ( corev1 . SeccompProfileTypeRuntimeDefault ) ,
131+ WithRequests (
132+ corev1. ResourceList {
133+ corev1 . ResourceCPU : * resource . NewMilliQuantity ( int64 ( 50 ), resource . BinarySI ),
134+ corev1 . ResourceMemory : * resource . NewScaledQuantity ( int64 ( 64 ), resource . Scale ( 6 )),
135+ } ,
147136 ),
148137 ),
149138 )
139+
140+ // Add volume for secret with proper permissions
141+ deploymentApplyConfig .Spec .Template .Spec .WithVolumes (
142+ corev1ac .Volume ().WithName ("lightrun-secret" ).
143+ WithSecret (corev1ac .SecretVolumeSource ().
144+ WithSecretName (secret .Name ).
145+ WithItems (
146+ corev1ac .KeyToPath ().WithKey ("lightrun_key" ).WithPath ("lightrun_key" ),
147+ corev1ac .KeyToPath ().WithKey ("pinned_cert_hash" ).WithPath ("pinned_cert_hash" ),
148+ ).
149+ WithDefaultMode (0440 )),
150+ )
150151}
151152
152153func (r * LightrunJavaAgentReconciler ) patchAppContainers (lightrunJavaAgent * agentv1beta.LightrunJavaAgent , origDeployment * appsv1.Deployment , deploymentApplyConfig * appsv1ac.DeploymentApplyConfiguration ) error {
@@ -230,19 +231,16 @@ func (r *LightrunJavaAgentReconciler) patchStatefulSet(lightrunJavaAgent *agentv
230231 corev1ac .PodSpec (),
231232 ).WithAnnotations (map [string ]string {
232233 annotationConfigMapHash : fmt .Sprint (cmDataHash ),
233- },
234- ),
234+ }),
235235 ),
236236 ).WithAnnotations (map [string ]string {
237237 annotationAgentName : lightrunJavaAgent .Name ,
238238 })
239239
240240 // Add volumes to the StatefulSet
241241 r .addVolumeToStatefulSet (statefulSetApplyConfig , lightrunJavaAgent )
242-
243242 // Add init container to the StatefulSet
244243 r .addInitContainerToStatefulSet (statefulSetApplyConfig , lightrunJavaAgent , secret )
245-
246244 // Patch app containers in the StatefulSet
247245 err = r .patchStatefulSetAppContainers (lightrunJavaAgent , origStatefulSet , statefulSetApplyConfig )
248246 if err != nil {
@@ -271,6 +269,15 @@ func (r *LightrunJavaAgentReconciler) addVolumeToStatefulSet(statefulSetApplyCon
271269 corev1ac .KeyToPath ().WithKey ("metadata" ).WithPath ("agent.metadata.json" ),
272270 ),
273271 ),
272+ ).WithVolumes (
273+ corev1ac .Volume ().WithName ("lightrun-secret" ).
274+ WithSecret (corev1ac .SecretVolumeSource ().
275+ WithSecretName (secret .Name ).
276+ WithItems (
277+ corev1ac .KeyToPath ().WithKey ("lightrun_key" ).WithPath ("lightrun_key" ),
278+ corev1ac .KeyToPath ().WithKey ("pinned_cert_hash" ).WithPath ("pinned_cert_hash" ),
279+ ).
280+ WithDefaultMode (0440 )),
274281 )
275282}
276283
@@ -282,19 +289,17 @@ func (r *LightrunJavaAgentReconciler) addInitContainerToStatefulSet(statefulSetA
282289 WithVolumeMounts (
283290 corev1ac .VolumeMount ().WithName (lightrunJavaAgent .Spec .InitContainer .SharedVolumeName ).WithMountPath ("/tmp/" ),
284291 corev1ac .VolumeMount ().WithName (cmVolumeName ).WithMountPath ("/tmp/cm/" ),
292+ corev1ac .VolumeMount ().WithName ("lightrun-secret" ).WithMountPath ("/etc/lightrun/secret" ).WithReadOnly (true ),
285293 ).WithEnv (
286- corev1ac .EnvVar ().WithName ("LIGHTRUN_KEY" ).WithValueFrom (
287- corev1ac .EnvVarSource ().WithSecretKeyRef (
288- corev1ac .SecretKeySelector ().WithName (secret .Name ).WithKey ("lightrun_key" ),
289- ),
290- ),
291- corev1ac .EnvVar ().WithName ("PINNED_CERT" ).WithValueFrom (
292- corev1ac .EnvVarSource ().WithSecretKeyRef (
293- corev1ac .SecretKeySelector ().WithName (secret .Name ).WithKey ("pinned_cert_hash" ),
294- ),
295- ),
296294 corev1ac .EnvVar ().WithName ("LIGHTRUN_SERVER" ).WithValue (lightrunJavaAgent .Spec .ServerHostname ),
297295 ).
296+ WithSecurityContext (
297+ corev1ac .SecurityContext ().
298+ WithReadOnlyRootFilesystem (true ).
299+ WithAllowPrivilegeEscalation (false ).
300+ WithRunAsNonRoot (true ).
301+ WithRunAsUser (1000 ),
302+ ).
298303 WithResources (
299304 corev1ac .ResourceRequirements ().
300305 WithLimits (
@@ -308,18 +313,6 @@ func (r *LightrunJavaAgentReconciler) addInitContainerToStatefulSet(statefulSetA
308313 corev1 .ResourceMemory : * resource .NewScaledQuantity (int64 (64 ), resource .Scale (6 )),
309314 },
310315 ),
311- ).
312- WithSecurityContext (
313- corev1ac .SecurityContext ().
314- WithCapabilities (
315- corev1ac .Capabilities ().WithDrop (corev1 .Capability ("ALL" )),
316- ).
317- WithAllowPrivilegeEscalation (false ).
318- WithRunAsNonRoot (true ).
319- WithSeccompProfile (
320- corev1ac .SeccompProfile ().
321- WithType (corev1 .SeccompProfileTypeRuntimeDefault ),
322- ),
323316 ),
324317 )
325318}
@@ -335,7 +328,7 @@ func (r *LightrunJavaAgentReconciler) patchStatefulSetAppContainers(lightrunJava
335328 WithName (container .Name ).
336329 WithImage (container .Image ).
337330 WithVolumeMounts (
338- corev1ac .VolumeMount ().WithMountPath (lightrunJavaAgent .Spec .InitContainer .SharedVolumeMountPath ). WithName (lightrunJavaAgent .Spec .InitContainer .SharedVolumeName ),
331+ corev1ac .VolumeMount ().WithName (lightrunJavaAgent .Spec .InitContainer .SharedVolumeName ). WithMountPath (lightrunJavaAgent .Spec .InitContainer .SharedVolumeMountPath ),
339332 ),
340333 )
341334 }
0 commit comments