Skip to content

Commit

Permalink
add kube event logging
Browse files Browse the repository at this point in the history
  • Loading branch information
robertlestak committed Jul 18, 2024
1 parent 4f3759c commit 1693a08
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
3 changes: 3 additions & 0 deletions devops/k8s/role.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ rules:
- apiGroups: [""]
resources: ["secrets"]
verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["events"]
verbs: ["create", "update", "patch"]

---
apiVersion: rbac.authorization.k8s.io/v1
Expand Down
11 changes: 11 additions & 0 deletions pkg/certmanagersync/certmanagersync.go
Original file line number Diff line number Diff line change
Expand Up @@ -304,14 +304,17 @@ func SyncSecretToStore(secret *corev1.Secret, store StoreType) error {
if err != nil {
l.WithError(err).Error("NewStore error")
metrics.SetFailure(secret.Namespace, secret.Name, string(store))
state.EventRecorder.Event(secret, corev1.EventTypeWarning, "SyncFailed", fmt.Sprintf("Secret sync failed to store %s", store))
return fmt.Errorf("error creating store %s: %v", store, err)
}
if err := rs.Update(secret); err != nil {
l.WithError(err).Error("sync error")
metrics.SetFailure(secret.Namespace, secret.Name, string(store))
state.EventRecorder.Event(secret, corev1.EventTypeWarning, "SyncFailed", fmt.Sprintf("Secret sync failed to store %s", store))
return fmt.Errorf("error syncing secret %s/%s to store %s: %v", secret.Namespace, secret.Name, store, err)
}
metrics.SetSuccess(secret.Namespace, secret.Name, string(store))
state.EventRecorder.Event(secret, corev1.EventTypeNormal, "Synced", fmt.Sprintf("Secret synced to %s", store))
return nil
}

Expand Down Expand Up @@ -361,6 +364,7 @@ func HandleSecret(s *corev1.Secret) error {
if err := incrementRetries(s.Namespace, s.Name); err != nil {
l.WithError(err).Errorf("incrementRetries error")
}
state.EventRecorder.Event(s, corev1.EventTypeWarning, "SyncFailed", "Secret sync failed")
return fmt.Errorf("errors syncing secret %s/%s: %v", s.Namespace, s.Name, errs)
} else {
// reset the failed-sync-attempts annotation
Expand All @@ -370,5 +374,12 @@ func HandleSecret(s *corev1.Secret) error {
}
// if the sync was a success, add the secret to the cache
state.Cache(s)
eventMsg := fmt.Sprintf("Secret synced to %d store%s", len(stores), func() string {
if len(stores) == 1 {
return ""
}
return "s"
}())
state.EventRecorder.Event(s, corev1.EventTypeNormal, "Synced", eventMsg)
return nil
}
16 changes: 14 additions & 2 deletions pkg/state/certmanagersync.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,18 @@ import (
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
typedcorev1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/homedir"
)

var (
OperatorName = "cert-manager-sync.lestak.sh"
KubeClient *kubernetes.Clientset
OperatorName = "cert-manager-sync.lestak.sh"
KubeClient *kubernetes.Clientset
EventRecorder record.EventRecorder
)

func addHashAnnotation(secretNamespace, secretName, hash string) error {
Expand All @@ -41,6 +45,7 @@ func addHashAnnotation(secretNamespace, secretName, hash string) error {
secret, err := KubeClient.CoreV1().Secrets(secretNamespace).Get(context.Background(), secretName, gopt)
if err != nil {
l.WithError(err).Errorf("Get error")
EventRecorder.Eventf(secret, corev1.EventTypeWarning, "GetError", "Error getting secret: %v", err)
return err
}
if secret.Annotations == nil {
Expand All @@ -53,6 +58,7 @@ func addHashAnnotation(secretNamespace, secretName, hash string) error {
_, err = KubeClient.CoreV1().Secrets(secretNamespace).Update(context.Background(), secret, uo)
if err != nil {
l.WithError(err).Errorf("Update secret error")
EventRecorder.Eventf(secret, corev1.EventTypeWarning, "UpdateError", "Error updating secret: %v", err)
return err
}
l.Debugf("incremented retries")
Expand Down Expand Up @@ -245,6 +251,12 @@ func CreateKubeClient() error {
l.Debugf("kubernetes.NewForConfig error=%v", err)
return err
}
// Create broadcaster
broadcaster := record.NewBroadcaster()
broadcaster.StartRecordingToSink(&typedcorev1.EventSinkImpl{Interface: KubeClient.CoreV1().Events("")})

// Create event recorder
EventRecorder = broadcaster.NewRecorder(scheme.Scheme, corev1.EventSource{Component: OperatorName})
return nil
}

Expand Down

0 comments on commit 1693a08

Please sign in to comment.