Rust, Kubernetes Open-Api

Jeonghak Cho·2024년 12월 13일

Rust

목록 보기
6/13

Rust 설치

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo apt install pkg-config
sudo apt-get install libudev-dev
sudo apt install build-essential

프로젝트 생성

vagrant@master:~$ cargo new khagor
Creating binary (application) khagor package
note: see more Cargo.toml keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
vagrant@master:~$ cd khagor

프로젝트 빌드

vi Cargo.toml

[package]
name = "khagor"
version = "0.1.0"
edition = "2021"

[dependencies]
kube = { version = "0.87.2", features = ["client","runtime", "derive", "rustls-tls"] }
k8s-openapi = { version = "0.20.0", features = ["latest"] }
tokio = { version = "1.0", features = ["full"] }  # Use the latest version
[dev-dependencies]
k8s-openapi = { version = "0.20.0", features = ["latest"] }
async-std = "1.0"  # Use the latest version

vi src/main.rs

use kube::{Client, Api};
use kube::api::ListParams;
use k8s_openapi::api::core::v1::Pod;
use std::error::Error;

#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
    // Load the kubeconfig file.
    let config = kube::Config::from_kubeconfig(&kube::config::KubeConfigOptions::default()).await?;
    let client = Client::try_from(config)?;

    // Work with Kubernetes API.
    let pods: Api<Pod> = Api::default_namespaced(client);
    let lp = ListParams::default();

    for p in pods.list(&lp).await? {
        println!("Found Pod: {}", p.metadata.name.unwrap_or_default());
    }

    Ok(())
}

프로젝트 실행

프로젝트 실행

vagrant@master:~/khagor$ cargo run
   Compiling khagor v0.1.0 (/home/vagrant/khagor)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.67s
     Running `target/debug/khagor`
Found Pod: mariadb-0
Found Pod: mariadb-1
Found Pod: mariadb-2
Found Pod: maxscale1-5b47c98f48-5kj8g
Found Pod: nginx-deployment-86dcfdf4c6-2gdm5
Found Pod: nginx-deployment-86dcfdf4c6-wh974

POD 목록 조회 후 비교

vagrant@master:~/khagor$ k get po
NAME                                READY   STATUS    RESTARTS        AGE
mariadb-0                           1/1     Running   5 (3h18m ago)   5d5h
mariadb-1                           1/1     Running   5 (3h17m ago)   5d8h
mariadb-2                           1/1     Running   4 (3h16m ago)   5d8h
maxscale1-5b47c98f48-5kj8g          1/1     Running   5 (3h19m ago)   6d1h
nginx-deployment-86dcfdf4c6-2gdm5   1/1     Running   0               29m
nginx-deployment-86dcfdf4c6-wh974   1/1     Running   0               29m

0개의 댓글