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网络编程

Download history 589/week @ 2024-04-26 650/week @ 2024-05-03 773/week @ 2024-05-10 813/week @ 2024-05-17 723/week @ 2024-05-24 747/week @ 2024-05-31 1139/week @ 2024-06-07 1031/week @ 2024-06-14 776/week @ 2024-06-21 748/week @ 2024-06-28 803/week @ 2024-07-05 1199/week @ 2024-07-12 764/week @ 2024-07-19 951/week @ 2024-07-26 1068/week @ 2024-08-02 1053/week @ 2024-08-09

每月 4,061 次下载

Apache-2.0

37KB

k8s-cri

使用 tonic 从 Kubernetes CRI Protobuf 规范自动生成 Rust 类型、客户端和服务器。

API 文档


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