11 releases (breaking)
0.9.0 | Oct 4, 2024 |
---|---|
0.8.0 | May 14, 2024 |
0.7.0 | May 19, 2023 |
0.6.0 | Oct 31, 2022 |
0.2.0 | Jul 3, 2020 |
#1722 in Network programming
4,619 downloads per month
37KB
k8s-cri
Automatically generated Rust types, clients, and servers from Kubernetes CRI Protobuf spec using tonic
.
lib.rs
:
Automatically generated types, clients, and servers from Kubernetes CRI Protobuf definitions.
Examples
Connecting over TCP:
use k8s_cri::v1alpha2::runtime_service_client::RuntimeServiceClient;
use k8s_cri::v1alpha2::ListContainersRequest;
use tokio::main;
#[tokio::main]
async fn main() {
let mut client = RuntimeServiceClient::connect("http://[::1]:50051")
.await
.expect("Could not create client.");
let request = tonic::Request::new(ListContainersRequest { filter: None });
let response = client
.list_containers(request)
.await
.expect("Request failed.");
println!("{:?}", response);
}
Connecting to a Unix domain socket:
use std::convert::TryFrom;
use tokio::main;
use k8s_cri::v1alpha2::runtime_service_client::RuntimeServiceClient;
use tokio::net::UnixStream;
use hyper_util::rt::TokioIo;
use tonic::transport::{Channel, Endpoint, Uri};
use tower::service_fn;
#[tokio::main]
async fn main() {
let channel = Endpoint::try_from("http://[::]")
.unwrap()
.connect_with_connector(service_fn(|_: Uri| async {
let path = "/run/containerd/containerd.sock";
Ok::<_, std::io::Error>(TokioIo::new(UnixStream::connect(path).await?))
}))
.await
.expect("Could not create client.");
let mut client = RuntimeServiceClient::new(channel);
}
API version v1, original Protocol Buffers file. API version v1alpha2, original Protocol Buffers file.
Dependencies
~5–12MB
~144K SLoC