Expand description
Generic finalizer management for Kubernetes resources.
This module provides reusable functions for adding, removing, and handling finalizers on Kubernetes custom resources. It eliminates duplicate finalizer management code across reconcilers.
§Example
ⓘ
use bindy::reconcilers::finalizers::{ensure_finalizer, handle_deletion, FinalizerCleanup};
use bindy::crd::Bind9Cluster;
use kube::Client;
use anyhow::Result;
const FINALIZER: &str = "bind9cluster.dns.firestoned.io/finalizer";
#[async_trait::async_trait]
impl FinalizerCleanup for Bind9Cluster {
async fn cleanup(&self, client: &Client) -> Result<()> {
// Perform cleanup operations
Ok(())
}
}
async fn reconcile(client: Client, cluster: Bind9Cluster) -> Result<()> {
// Ensure finalizer is present
ensure_finalizer(&client, &cluster, FINALIZER).await?;
// Handle deletion if resource is being deleted
if cluster.metadata.deletion_timestamp.is_some() {
return handle_deletion(&client, &cluster, FINALIZER).await;
}
// Normal reconciliation logic...
Ok(())
}Traits§
- Finalizer
Cleanup - Trait for resources that require cleanup operations when being deleted.
Functions§
- ensure_
cluster_ finalizer - Add a finalizer to a cluster-scoped resource if not already present.
- ensure_
finalizer - Add a finalizer to a resource if not already present.
- handle_
cluster_ deletion - Handle cluster-scoped resource deletion with cleanup and finalizer removal.
- handle_
deletion - Handle resource deletion with cleanup and finalizer removal.
- remove_
cluster_ finalizer - Remove a finalizer from a cluster-scoped resource.
- remove_
finalizer - Remove a finalizer from a resource.