2 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年9月12日
0.1.0 2018年6月13日

#18 in #tls-client

Apache-2.0

93KB
2.5K SLoC

Rust 的 Kubernetes API 客户端库

状态

实验性。

  • 实现了获取、设置、列表和监视功能,使用 tokio futures/streams。
  • 客户端默认遵守 ~/.kube/config(或 $KUBECONFIG),如 golang 客户端。支持 TLS。客户端证书是当前唯一支持的客户端认证方法。
  • API 对象目前是手动定义的,并且不完整。可以通过 traits 定义额外的第三方对象类型。
  • API 资源在 Rust 中还没有表示。
  • API 错误处理非常简单。

列出 kube-system 命名空间中所有 pod 的示例。结果以流的形式显示,每页限制为 20 个结果。

extern crate kubernetes;
extern crate tokio_core;

use std::default::Default;
use tokio_core::reactor::Core;

use kubernetes::api;
use kubernetes::client::{Client,ListOptions};
use kubernetes::api::core::v1::{Pod,PodList};

fn main() {
    let mut core = Core::new().unwrap();
    let client = Client::new(2, &core.handle()).unwrap();

    let pods = api::core::v1::GROUP_VERSION.with_resource("pods");
    let namespace = Some("kube-system");

    let opts = ListOptions{ limit: 20, ..Default::default() };
    let work = client.iter::<PodList,Pod>(&pods, namespace, opts)
        .for_each(|pod| {
           println!("pod is {}", pod.metadata.name.unwrap_or_default());
           Ok(())
        });

    core.run(work).unwrap()
}

依赖关系

~14–24MB
~391K SLoC