@@ -156,7 +156,7 @@ func Run(cmd *cobra.Command, args []string) (returnErr error) {
156156
157157 // To help users notice issues with the agent, we show the error messages in
158158 // the agent pod's events.
159- eventf , err := newEventf (log , config . InstallNS )
159+ eventf , err := newEventf (log )
160160 if err != nil {
161161 return fmt .Errorf ("failed to create event recorder: %v" , err )
162162 }
@@ -260,7 +260,19 @@ func Run(cmd *cobra.Command, args []string) (returnErr error) {
260260// POD_NAME to contain the pod name. Note that the RBAC rule allowing sending
261261// events is attached to the pod's service account, not the impersonated service
262262// account (venafi-connection).
263- func newEventf (log logr.Logger , installNS string ) (Eventf , error ) {
263+ func newEventf (log logr.Logger ) (Eventf , error ) {
264+ podName := os .Getenv ("POD_NAME" )
265+ podNode := os .Getenv ("POD_NODE" )
266+ podUID := os .Getenv ("POD_UID" )
267+ podNamespace := os .Getenv ("POD_NAMESPACE" )
268+ if podName == "" || podNode == "" || podUID == "" || podNamespace == "" {
269+ log .Info (
270+ "Pod event recorder disabled" ,
271+ "reason" , "The agent does not appear to be running in a Kubernetes cluster." ,
272+ "detail" , "When running in a Kubernetes cluster the following environment variables must be set: POD_NAME, POD_NODE, POD_UID, POD_NAMESPACE" ,
273+ )
274+ return func (eventType , reason , msg string , args ... interface {}) {}, nil
275+ }
264276 restcfg , err := kubeconfig .LoadRESTConfig ("" )
265277 if err != nil {
266278 return nil , fmt .Errorf ("failed to load kubeconfig: %v" , err )
@@ -269,22 +281,17 @@ func newEventf(log logr.Logger, installNS string) (Eventf, error) {
269281 _ = corev1 .AddToScheme (scheme )
270282
271283 var eventf Eventf
272- if os .Getenv ("POD_NAME" ) == "" {
273- eventf = func (eventType , reason , msg string , args ... interface {}) {}
274- log .Error (nil , "Error messages will not show in the pod's events because the POD_NAME environment variable is empty" )
275- } else {
276- podName := os .Getenv ("POD_NAME" )
277284
278- eventClient , err := kubernetes .NewForConfig (restcfg )
279- if err != nil {
280- return eventf , fmt .Errorf ("failed to create event client: %v" , err )
281- }
282- broadcaster := record .NewBroadcaster ()
283- broadcaster .StartRecordingToSink (& clientgocorev1.EventSinkImpl {Interface : eventClient .CoreV1 ().Events (installNS )})
284- eventRec := broadcaster .NewRecorder (scheme , corev1.EventSource {Component : "venafi-kubernetes-agent" , Host : os . Getenv ( "POD_NODE" ) })
285- eventf = func (eventType , reason , msg string , args ... interface {}) {
286- eventRec .Eventf (& corev1.Pod {ObjectMeta : v1.ObjectMeta {Name : podName , Namespace : installNS , UID : types .UID (os . Getenv ( "POD_UID" ) )}}, eventType , reason , msg , args ... )
287- }
285+ eventClient , err := kubernetes .NewForConfig (restcfg )
286+ if err != nil {
287+ return eventf , fmt .Errorf ("failed to create event client: %v" , err )
288+ }
289+ broadcaster := record .NewBroadcaster ()
290+ broadcaster .StartRecordingToSink (& clientgocorev1.EventSinkImpl {Interface : eventClient .CoreV1 ().Events (podNamespace )})
291+ eventRec := broadcaster .NewRecorder (scheme , corev1.EventSource {Component : "venafi-kubernetes-agent" , Host : podNode })
292+ eventf = func (eventType , reason , msg string , args ... interface {}) {
293+ eventRec .Eventf (& corev1.Pod {ObjectMeta : v1.ObjectMeta {Name : podName , Namespace : podNamespace , UID : types .UID (podUID )}}, eventType , reason , msg , args ... )
294+
288295 }
289296
290297 return eventf , nil
0 commit comments