Crates.io | istio-sdk |
lib.rs | istio-sdk |
version | 0.1.3 |
source | src |
created_at | 2023-07-21 04:30:20.855265 |
updated_at | 2023-07-24 02:23:06.552641 |
description | A collection of CRDs for api used in Istio. |
homepage | https://github.com/shenshouer/istio-sdk-rs |
repository | https://github.com/shenshouer/istio-sdk-rs |
max_upload_size | |
id | 922078 |
size | 887,068 |
A collection of CRDs used in Istio, generated by kopium
directly from istio CRDs
.
istio-sdk-rs
is built on top of kube-rs
as a set of CRDs, which means it can be easily used under kube_rs
like below:
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(())
}
And in cargo.toml
, you should specify the API version for both k8s
& istio
like:
[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
is currently developed and tested on istio/api since v1.10, the lower api version is out of this repository's concern.
For release package, see crate.io.