kcr_chisel_operator_io 3.20260118.203259

Kubernetes Custom Resource Bindings
Documentation
// WARNING: generated by kopium - manual changes will be overwritten
// kopium command: kopium --docs --derive=Default --derive=PartialEq --smart-derive-elision --filename crd-catalog/FyraLabs/chisel-operator/chisel-operator.io/v1/exitnodes.yaml
// kopium version: 0.22.5

#[allow(unused_imports)]
mod prelude {
    pub use kube::CustomResource;
    pub use serde::{Serialize, Deserialize};
}
use self::prelude::*;

/// ExitNode is a custom resource that represents a Chisel exit node. It will be used as the reverse proxy for all services in the cluster.
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "chisel-operator.io", version = "v1", kind = "ExitNode", plural = "exitnodes")]
#[kube(namespaced)]
#[kube(status = "ExitNodeStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct ExitNodeSpec {
    /// Optional authentication secret name to connect to the control plane
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub auth: Option<String>,
    /// Optional value for the chisel client image used to connect to the chisel server If not provided, jpillora/chisel:latest is used
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub chisel_image: Option<String>,
    /// Optional boolean value for whether to make the exit node the default route for the cluster If true, the exit node will be the default route for the cluster default value is false
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub default_route: Option<bool>,
    /// Optional real external hostname or IP of the exit node.
    /// 
    /// This field is used to explicitly specify the public-facing endpoint for the exit node. If set to an IP address, it will be used as the `ip` field in the Service's `status.loadBalancer.ingress`, which is what external-dns and other automation will use to create DNS records or inform users of the external endpoint. If set to a DNS name, it will be used as the `hostname` field in the same struct.
    /// 
    /// This is useful when the exit node is only reachable via a specific external IP or hostname, even if the internal service is routed to a private address. If not provided, the value of the `host` field will be used instead.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub external_host: Option<String>,
    /// Optional but highly recommended fingerprint to perform host-key validation against the server's public key
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub fingerprint: Option<String>,
    /// Hostname or IP address of the chisel server
    pub host: String,
    /// Control plane port of the chisel server
    pub port: u16,
}

#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct ExitNodeStatus {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    pub ip: String,
    pub name: String,
    pub provider: String,
}