in pkg/observability/k8s-events.go [82:125]
func InitK8sEventRecorder(enabled bool, nodeName string, sqsMode bool, nodeMetadata ec2metadata.NodeMetadata, extraAnnotationsStr string, clientSet *kubernetes.Clientset) (K8sEventRecorder, error) {
if !enabled {
return K8sEventRecorder{}, nil
}
annotations := make(map[string]string)
annotations["account-id"] = nodeMetadata.AccountId
if !sqsMode {
annotations["availability-zone"] = nodeMetadata.AvailabilityZone
annotations["instance-id"] = nodeMetadata.InstanceID
annotations["instance-life-cycle"] = nodeMetadata.InstanceLifeCycle
annotations["instance-type"] = nodeMetadata.InstanceType
annotations["local-hostname"] = nodeMetadata.LocalHostname
annotations["local-ipv4"] = nodeMetadata.LocalIP
annotations["public-hostname"] = nodeMetadata.PublicHostname
annotations["public-ipv4"] = nodeMetadata.PublicIP
annotations["region"] = nodeMetadata.Region
}
var err error
if extraAnnotationsStr != "" {
annotations, err = parseExtraAnnotations(annotations, extraAnnotationsStr)
if err != nil {
return K8sEventRecorder{}, err
}
}
broadcaster := record.NewBroadcaster()
broadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: clientSet.CoreV1().Events("")})
return K8sEventRecorder{
annotations: annotations,
clientSet: clientSet,
enabled: true,
sqsMode: sqsMode,
EventRecorder: broadcaster.NewRecorder(
scheme.Scheme,
corev1.EventSource{
Component: "aws-node-termination-handler",
Host: nodeName,
},
),
}, nil
}