10 个版本 (破坏性更新)
0.8.0 | 2024 年 5 月 14 日 |
---|---|
0.7.0 | 2023 年 5 月 19 日 |
0.6.0 | 2022 年 10 月 31 日 |
0.5.0 | 2022 年 8 月 8 日 |
0.1.2 | 2020 年 5 月 6 日 |
#1871 在 网络编程
每月 4,061 次下载
37KB
k8s-cri
使用 tonic
从 Kubernetes CRI Protobuf 规范自动生成 Rust 类型、客户端和服务器。
lib.rs
:
从 Kubernetes CRI Protobuf 定义 自动生成类型、客户端和服务器。
示例
通过 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);
}
连接到 Unix 域套接字
use std::convert::TryFrom;
use tokio::main;
use k8s_cri::v1alpha2::runtime_service_client::RuntimeServiceClient;
use tokio::net::UnixStream;
use tonic::transport::{Channel, Endpoint, Uri};
use tower::service_fn;
#[tokio::main]
async fn main() {
let path = "/run/containerd/containerd.sock";
let channel = Endpoint::try_from("http://[::]")
.unwrap()
.connect_with_connector(service_fn(move |_: Uri| UnixStream::connect(path)))
.await
.expect("Could not create client.");
let mut client = RuntimeServiceClient::new(channel);
}
API 版本 v1,原始 Protocol Buffers 文件。API 版本 v1alpha2,原始 Protocol Buffers 文件。
依赖
~4–8MB
~128K SLoC