Kubernetes पर Rust का डिप्लॉयमेंट: शुरुआती लोगों के लिए बुनियादी गाइड
\n\nआधुनिक डेवलपमेंट में अक्सर तेज़ और सुरक्षित कोड लिखने के साथ-साथ इसे क्लाउड इंफ्रास्ट्रक्चर में सही ढंग से डिप्लॉय करने की क्षमता की आवश्यकता होती है। Rust, जो अपनी परफॉरमेंस और मेमोरी सुरक्षा के लिए जाना जाता है, माइक्रोसर्विसेज के लिए एक बेहतरीन विकल्प है। और Kubernetes - कंटेनरों का मानक ऑर्केस्ट्रेटर - इन सर्विसेज को बड़े पैमाने पर प्रबंधित करने में मदद करता है।
\n\nइस लेख में, हम Rust में एक सरल वेब सर्वर लिखने से लेकर इसे Kubernetes क्लस्टर में डिप्लॉय करने तक का पूरा सफर तय करेंगे। आप सीखेंगे कि एप्लिकेशन को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे बनाएं और इसे क्लाउड में कैसे चलाएं।
\n\n1. कंटेनरीकरण के लिए Rust एप्लिकेशन तैयार करना
\n\nशुरू करने के लिए, लोकप्रिय फ्रेमवर्क actix-web का उपयोग करके Rust में एक सरल वेब एप्लिकेशन बनाते हैं। यह एक सरल JSON संदेश लौटाएगा - माइक्रोसर्विस के लिए एक आदर्श उदाहरण।
एक नया प्रोजेक्ट बनाएं:
\ncargo new rust-k8s-demo\ncd rust-k8s-demo\n\nCargo.toml में डिपेंडेंसी जोड़ें:
[dependencies]\nactix-web = "4"\nserde = { version = "1.0", features = ["derive"] }\ntokio = { version = "1", features = ["full"] }\n\nअब src/main.rs में एप्लिकेशन कोड लिखें:
use actix_web::{web, App, HttpServer, Responder, HttpResponse};\nuse serde::Serialize;\n\n#[derive(Serialize)]\nstruct HealthResponse {\n status: String,\n message: String,\n}\n\nasync fn health_check() -> impl Responder {\n HttpResponse::Ok().json(HealthResponse {\n status: "ok".to_string(),\n message: "Rust service is running on Kubernetes!".to_string(),\n })\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n println!("Starting server on 0.0.0.0:8080");\n HttpServer::new(|| {\n App::new()\n .route("/health", web::get().to(health_check))\n })\n .bind("0.0.0.0:8080")?\n .run()\n .await\n}\n\nध्यान दें: हम 0.0.0.0:8080 से बाइंड कर रहे हैं, क्योंकि कंटेनर के अंदर एप्लिकेशन को सभी इंटरफेस पर सुनना चाहिए। स्थानीय रूप से जांचें:
cargo run\n\nhttp://localhost:8080/health खोलें - आपको JSON प्रतिक्रिया दिखनी चाहिए।
2. Rust एप्लिकेशन के साथ Docker इमेज बनाना
\n\nKubernetes के लिए हमें एक कंटेनर चाहिए। Rust नेटिव बाइनरी में कंपाइल होता है, इसलिए हम न्यूनतम इमेज प्राप्त करने के लिए मल्टी-स्टेज बिल्ड का उपयोग कर सकते हैं।
\n\nप्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएं:
# बिल्ड स्टेज\nFROM rust:1.75-slim-bookworm AS builder\n\nWORKDIR /app\nCOPY Cargo.toml Cargo.lock ./\nRUN mkdir src && echo "fn main() {}" > src/main.rs\nRUN cargo build --release 2>/dev/null || true\n\nCOPY src/ src/\nRUN cargo build --release\n\n# फाइनल इमेज\nFROM debian:bookworm-slim\nRUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*\nCOPY --from=builder /app/target/release/rust-k8s-demo /usr/local/bin/rust-k8s-demo\n\nEXPOSE 8080\nCMD ["rust-k8s-demo"]\n\nयह Dockerfile पहले डिपेंडेंसी बनाता है, फिर हमारे कोड को कंपाइल करता है और बाइनरी को Debian-आधारित न्यूनतम इमेज में कॉपी करता है। इससे जगह बचती है और सुरक्षा बढ़ती है।
\n\nइमेज बनाएं:
\ndocker build -t rust-k8s-demo:latest .\n\nकंटेनर को स्थानीय रूप से जांचें:
\ndocker run -p 8080:8080 rust-k8s-demo:latest\n\nअगर सब कुछ काम करता है - इमेज को रजिस्ट्री (जैसे, Docker Hub) में पुश करें:
\ndocker tag rust-k8s-demo:latest yourusername/rust-k8s-demo:v1\ndocker push yourusername/rust-k8s-demo:v1\n\n3. Kubernetes मेनिफेस्ट कॉन्फ़िगर करना
\n\nअब जब इमेज तैयार है, तो हमें Kubernetes के लिए मेनिफेस्ट बनाने की आवश्यकता है। हम Deployment (रेप्लिका प्रबंधन के लिए) और Service (एक्सेस के लिए) बनाएंगे।