#crd #service #api #networking #kubernetes #sdk #istio

istio-sdk

Istio 中使用的 API 的 CRDs 集合

4 个版本

0.1.3 2023 年 7 月 24 日
0.1.2 2023 年 7 月 21 日
0.1.1 2023 年 7 月 21 日
0.1.0 2023 年 7 月 21 日

#3#crd

Apache-2.0

115KB
2K SLoC

istio-sdk-rs

Istio 中使用的 CRDs 集合,由 kopiumistio CRDs 直接生成。

快速入门

istio-sdk-rs 基于 kube-rs 构建,作为一组 CRDs,这意味着它可以在 kube_rs 下轻松使用,如下所示

use istio_sdk::networking::v1beta1::destination_rule::*;
use istio_sdk::networking::v1beta1::gateway::*;
use istio_sdk::networking::v1beta1::virtual_service::*;
use kube::{
    api::{Api, ListParams},
    ResourceExt,
};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let client = kube::Client::try_default().await?;

    tracing_subscriber::fmt::init();

    let list_opt = ListParams::default();

    let gws: Api<Gateway> = Api::namespaced(client.clone(), "my-ns");
    for gw in gws.list(&list_opt).await? {
        println!("Found Gateway: {}", gw.name_any());
    }

    let drs: Api<DestinationRule> = Api::namespaced(client.clone(), "my-ns");
    for dr in drs.list(&list_opt).await? {
        println!("Found Destination Rule: {}", dr.name_any());
    }

    let vss: Api<VirtualService> = Api::namespaced(client.clone(), "my-ns");
    for vs in vss.list(&list_opt).await? {
        let content = serde_yaml::to_string(&vs).unwrap();
        println!("Found Virtual Service with YAML content: {}", content);
    }

    Ok(())
}

cargo.toml 中,您应指定 k8sistio 的 API 版本,如下所示

[dependencies]
# ...
kube = { version = "0.84", features = ["runtime", "derive"] }
k8s-openapi = { version = "0.18", features = ["v1_18"] }
istio-sdk = { version = "0.1.0", features = ["v1_18"] }
# ...

其他

istio-sdk-rs 目前从 v1.10 开始开发和测试 istio/api,较低的 API 版本不在本存储库的考虑范围内。

有关发布包,请参阅 crate.io

依赖项

~52MB
~761K SLoC