pub struct Client { /* private fields */ }
client
only.Expand description
Client for connecting with a Kubernetes cluster.
The easiest way to instantiate the client is either by
inferring the configuration from the environment using
Client::try_default
or with an existing Config
using Client::try_from
.
Implementations§
source§impl Client
impl Client
sourcepub fn new<S, B, T>(service: S, default_namespace: T) -> Clientwhere
S: Service<Request<Body>, Response = Response<B>> + Send + 'static,
<S as Service<Request<Body>>>::Future: Send + 'static,
<S as Service<Request<Body>>>::Error: Into<Box<dyn Error + Sync + Send + 'static, Global>>,
B: Body<Data = Bytes> + Send + 'static,
<B as Body>::Error: Into<Box<dyn Error + Sync + Send + 'static, Global>>,
T: Into<String>,
pub fn new<S, B, T>(service: S, default_namespace: T) -> Clientwhere S: Service<Request<Body>, Response = Response<B>> + Send + 'static, <S as Service<Request<Body>>>::Future: Send + 'static, <S as Service<Request<Body>>>::Error: Into<Box<dyn Error + Sync + Send + 'static, Global>>, B: Body<Data = Bytes> + Send + 'static, <B as Body>::Error: Into<Box<dyn Error + Sync + Send + 'static, Global>>, T: Into<String>,
Create a Client
using a custom Service
stack.
ConfigExt
provides extensions for
building a custom stack.
To create with the default stack with a Config
, use
Client::try_from
.
To create with the default stack with an inferred Config
, use
Client::try_default
.
Example
use kube::{client::ConfigExt, Client, Config};
use tower::ServiceBuilder;
let config = Config::infer().await?;
let service = ServiceBuilder::new()
.layer(config.base_uri_layer())
.option_layer(config.auth_layer()?)
.service(hyper::Client::new());
let client = Client::new(service, config.default_namespace);
sourcepub async fn try_default() -> impl Future<Output = Result<Client, Error>>
pub async fn try_default() -> impl Future<Output = Result<Client, Error>>
Create and initialize a Client
using the inferred configuration.
Will use Config::infer
which attempts to load the local kubeconfig first,
and then if that fails, trying the in-cluster environment variables.
Will fail if neither configuration could be loaded.
If you already have a Config
then use Client::try_from
instead.
sourcepub fn default_namespace(&self) -> &str
pub fn default_namespace(&self) -> &str
Get the default namespace for the client
The namespace is either configured on context
in the kubeconfig,
falls back to default
when running locally,
or uses the service account’s namespace when deployed in-cluster.
sourcepub async fn send(
&self,
request: Request<Body>
) -> impl Future<Output = Result<Response<Body>, Error>>
pub async fn send( &self, request: Request<Body> ) -> impl Future<Output = Result<Response<Body>, Error>>
Perform a raw HTTP request against the API and return the raw response back. This method can be used to get raw access to the API which may be used to, for example, create a proxy server or application-level gateway between localhost and the API server.
sourcepub async fn connect(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<WebSocketStream<Upgraded>, Error>>
pub async fn connect( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<WebSocketStream<Upgraded>, Error>>
Make WebSocket connection.
sourcepub async fn request<T>(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<T, Error>>where
T: DeserializeOwned,
pub async fn request<T>( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<T, Error>>where T: DeserializeOwned,
Perform a raw HTTP request against the API and deserialize the response as JSON to some known type.
sourcepub async fn request_text(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<String, Error>>
pub async fn request_text( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<String, Error>>
Perform a raw HTTP request against the API and get back the response as a string
sourcepub async fn request_text_stream(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<impl Stream<Item = Result<Bytes, Error>>, Error>>
pub async fn request_text_stream( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<impl Stream<Item = Result<Bytes, Error>>, Error>>
Perform a raw HTTP request against the API and get back the response as a stream of bytes
sourcepub async fn request_status<T>(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<Either<T, Status>, Error>>where
T: DeserializeOwned,
pub async fn request_status<T>( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<Either<T, Status>, Error>>where T: DeserializeOwned,
Perform a raw HTTP request against the API and get back either an object
deserialized as JSON or a Status
Object.
sourcepub async fn request_events<T>(
&self,
request: Request<Vec<u8, Global>>
) -> impl Future<Output = Result<impl TryStream, Error>>where
T: Clone + DeserializeOwned,
pub async fn request_events<T>( &self, request: Request<Vec<u8, Global>> ) -> impl Future<Output = Result<impl TryStream, Error>>where T: Clone + DeserializeOwned,
Perform a raw request and get back a stream of WatchEvent
objects
source§impl Client
impl Client
Low level discovery methods using k8s_openapi
types.
Consider using the discovery
module for
easier-to-use variants of this functionality.
The following methods might be deprecated to avoid confusion between similarly named types within discovery
.
sourcepub async fn apiserver_version(
&self
) -> impl Future<Output = Result<Info, Error>>
pub async fn apiserver_version( &self ) -> impl Future<Output = Result<Info, Error>>
Returns apiserver version.
sourcepub async fn list_api_groups(
&self
) -> impl Future<Output = Result<APIGroupList, Error>>
pub async fn list_api_groups( &self ) -> impl Future<Output = Result<APIGroupList, Error>>
Lists api groups that apiserver serves.
sourcepub async fn list_api_group_resources(
&self,
apiversion: &str
) -> impl Future<Output = Result<APIResourceList, Error>>
pub async fn list_api_group_resources( &self, apiversion: &str ) -> impl Future<Output = Result<APIResourceList, Error>>
Lists resources served in given API group.
Example usage:
let apigroups = client.list_api_groups().await?;
for g in apigroups.groups {
let ver = g
.preferred_version
.as_ref()
.or_else(|| g.versions.first())
.expect("preferred or versions exists");
let apis = client.list_api_group_resources(&ver.group_version).await?;
dbg!(apis);
}
sourcepub async fn list_core_api_versions(
&self
) -> impl Future<Output = Result<APIVersions, Error>>
pub async fn list_core_api_versions( &self ) -> impl Future<Output = Result<APIVersions, Error>>
Lists versions of core
a.k.a. ""
legacy API group.
sourcepub async fn list_core_api_resources(
&self,
version: &str
) -> impl Future<Output = Result<APIResourceList, Error>>
pub async fn list_core_api_resources( &self, version: &str ) -> impl Future<Output = Result<APIResourceList, Error>>
Lists resources served in particular core
group version.