kube_runtime::events

Struct Recorder

Source
pub struct Recorder { /* private fields */ }
Expand description

A publisher abstraction to emit Kubernetes’ events.

All events emitted by an Recorder are attached to the ObjectReference specified when building the recorder using Recorder::new.

use kube::runtime::events::{Reporter, Recorder, Event, EventType};
use k8s_openapi::api::core::v1::ObjectReference;

let reporter = Reporter {
    controller: "my-awesome-controller".into(),
    instance: std::env::var("CONTROLLER_POD_NAME").ok(),
};

// references can be made manually using `ObjectMeta` and `ApiResource`/`Resource` info
let reference = ObjectReference {
    // [...]
    ..Default::default()
};
// or for k8s-openapi / kube-derive types, use Resource::object_ref:
// let reference = myobject.object_ref();

let recorder = Recorder::new(client, reporter, reference);
recorder.publish(Event {
    action: "Scheduling".into(),
    reason: "Pulling".into(),
    note: Some("Pulling image `nginx`".into()),
    type_: EventType::Normal,
    secondary: None,
}).await?;

Events attached to an object will be shown in the Events section of the output of of kubectl describe for that object.

§RBAC

Note that usage of the event recorder minimally requires the following RBAC rules:

- apiGroups: ["events.k8s.io"]
  resources: ["events"]
  verbs: ["create"]

Implementations§

Source§

impl Recorder

Source

pub fn new( client: Client, reporter: Reporter, reference: ObjectReference, ) -> Self

Create a new recorder that can publish events for one specific object

This is intended to be created at the start of your controller’s reconcile fn.

Cluster scoped objects will publish events in the “default” namespace.

Source

pub async fn publish(&self, ev: Event) -> Result<(), Error>

Publish a new Kubernetes’ event.

§Access control

The event object is created in the same namespace of the ObjectReference you specified in Recorder::new. Make sure that your controller has create permissions in the required namespaces for the event resource in the API group events.k8s.io.

§Errors

Returns an Error if the event is rejected by Kubernetes.

Trait Implementations§

Source§

impl Clone for Recorder

Source§

fn clone(&self) -> Recorder

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more