Rust को Kubernetes पर डिप्लॉय करना: बुनियादी गाइड
आधुनिक क्लाउड डेवलपमेंट में एप्लिकेशन से उच्च प्रदर्शन, सुरक्षा और संसाधनों का कुशल उपयोग अपेक्षित है। Rust, अपनी स्वामित्व प्रणाली और शून्य-लागत एब्स्ट्रैक्शन के साथ, कंटेनर ऑर्केस्ट्रेटर में चलने वाले माइक्रोसर्विसेज बनाने के लिए आदर्श है। Kubernetes, बदले में, कंटेनरीकृत एप्लिकेशन के प्रबंधन के लिए शक्तिशाली टूल प्रदान करता है। इस गाइड में, हम चरण दर चरण समझेंगे कि Rust एप्लिकेशन को Kubernetes में डिप्लॉय करने के लिए कैसे तैयार किया जाए, Docker इमेज कैसे बनाई जाए और इसे क्लस्टर में कैसे डिप्लॉय किया जाए।
1. Rust एप्लिकेशन तैयार करना
Kubernetes में एप्लिकेशन डिप्लॉय करने से पहले, इसे कंटेनरीकृत करना आवश्यक है। प्रदर्शन के लिए, हम actix-web फ्रेमवर्क पर आधारित एक सरल HTTP एप्लिकेशन बनाएंगे, जो अनुरोधों का जवाब देगा और सिस्टम के बारे में बुनियादी जानकारी लौटाएगा।
एक नया प्रोजेक्ट बनाएं:
cargo new rust-k8s-appcd rust-k8s-appCargo.toml में डिपेंडेंसी जोड़ें:
[dependencies]actix-web = "4"serde = { version = "1.0", features = ["derive"] }tokio = { version = "1", features = ["full"] }src/main.rs में एक सरल एप्लिकेशन लिखें:
use actix_web::{get, web, App, HttpResponse, HttpServer, Responder};use serde::Serialize;
#[derive(Serialize)]struct HealthResponse { status: String, version: String,}
#[get("/health")]async fn health_check() -> impl Responder { HttpResponse::Ok().json(HealthResponse { status: "ok".to_string(), version: env!("CARGO_PKG_VERSION").to_string(), })}
#[get("/")]async fn index() -> impl Responder { HttpResponse::Ok().body("Rust on Kubernetes! 🚀")}
#[actix_web::main]async fn main() -> std::io::Result<()> { let host = std::env::var("HOST").unwrap_or_else(|_| "0.0.0.0".to_string()); let port: u16 = std::env::var("PORT") .unwrap_or_else(|_| "8080".to_string()) .parse() .expect("PORT must be a number");
println!("Starting server at {}:{}", host, port);
HttpServer::new(|| { App::new() .service(health_check) .service(index) }) .bind((host.as_str(), port))? .run() .await}जांचें कि एप्लिकेशन कंपाइल होता है और स्थानीय रूप से चलता है:
cargo build --releasecargo run --releaseचलाने के बाद, ब्राउज़र खोलें और http://localhost:8080/health पर जाएं — आपको JSON प्रतिक्रिया दिखनी चाहिए।
2. Rust एप्लिकेशन के लिए Docker इमेज बनाना
इमेज के आकार को कम करने और बिल्ड को तेज करने के लिए, हम मल्टी-स्टेज बिल्ड का उपयोग करेंगे। पहला चरण एप्लिकेशन का कंपाइलेशन है, दूसरा scratch या alpine पर आधारित न्यूनतम इमेज बनाना है।
प्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएं:
# चरण 1: बिल्डFROM rust:1.75-slim-buster AS builder
WORKDIR /appCOPY Cargo.toml Cargo.lock ./RUN mkdir src && echo "fn main() {}" > src/main.rsRUN cargo build --release 2>/dev/null || true
COPY src/ ./src/RUN cargo build --release
# चरण 2: न्यूनतम इमेजFROM debian:buster-slim
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*COPY --from=builder /app/target/release/rust-k8s-app /usr/local/bin/rust-k8s-app
EXPOSE 8080CMD ["rust-k8s-app"]इमेज बनाएं:
docker build -t rust-k8s-app:latest .जांचें कि इमेज काम करती है:
docker run -p 8080:8080 rust-k8s-app:latestफिर इमेज को Docker Hub या किसी अन्य कंटेनर रजिस्ट्री में भेजें, username को अपने उपयोगकर्ता नाम से बदलें:
docker tag rust-k8s-app:latest username/rust-k8s-app:latestdocker push user