Kubernetes पर Rust का डिप्लॉयमेंट: शुरुआती लोगों के लिए बुनियादी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kubernetes पर Rust का डिप्लॉयमेंट: शुरुआती लोगों के लिए बुनियादी गाइड

\n\n

आधुनिक डेवलपमेंट में अक्सर तेज़ और सुरक्षित कोड लिखने के साथ-साथ इसे क्लाउड इंफ्रास्ट्रक्चर में सही ढंग से डिप्लॉय करने की क्षमता की आवश्यकता होती है। Rust, जो अपनी परफॉरमेंस और मेमोरी सुरक्षा के लिए जाना जाता है, माइक्रोसर्विसेज के लिए एक बेहतरीन विकल्प है। और Kubernetes - कंटेनरों का मानक ऑर्केस्ट्रेटर - इन सर्विसेज को बड़े पैमाने पर प्रबंधित करने में मदद करता है।

\n\n

इस लेख में, हम Rust में एक सरल वेब सर्वर लिखने से लेकर इसे Kubernetes क्लस्टर में डिप्लॉय करने तक का पूरा सफर तय करेंगे। आप सीखेंगे कि एप्लिकेशन को Docker इमेज में कैसे पैकेज करें, आवश्यक मेनिफेस्ट कैसे बनाएं और इसे क्लाउड में कैसे चलाएं।

\n\n

1. कंटेनरीकरण के लिए Rust एप्लिकेशन तैयार करना

\n\n

शुरू करने के लिए, लोकप्रिय फ्रेमवर्क actix-web का उपयोग करके Rust में एक सरल वेब एप्लिकेशन बनाते हैं। यह एक सरल JSON संदेश लौटाएगा - माइक्रोसर्विस के लिए एक आदर्श उदाहरण।

\n\n

एक नया प्रोजेक्ट बनाएं:

\n
cargo new rust-k8s-demo\ncd rust-k8s-demo
\n\n

Cargo.toml में डिपेंडेंसी जोड़ें:

\n
[dependencies]\nactix-web = "4"\nserde = { version = "1.0", features = ["derive"] }\ntokio = { version = "1", features = ["full"] }
\n\n

अब src/main.rs में एप्लिकेशन कोड लिखें:

\n
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 से बाइंड कर रहे हैं, क्योंकि कंटेनर के अंदर एप्लिकेशन को सभी इंटरफेस पर सुनना चाहिए। स्थानीय रूप से जांचें:

\n
cargo run
\n\n

http://localhost:8080/health खोलें - आपको JSON प्रतिक्रिया दिखनी चाहिए।

\n\n

2. Rust एप्लिकेशन के साथ Docker इमेज बनाना

\n\n

Kubernetes के लिए हमें एक कंटेनर चाहिए। Rust नेटिव बाइनरी में कंपाइल होता है, इसलिए हम न्यूनतम इमेज प्राप्त करने के लिए मल्टी-स्टेज बिल्ड का उपयोग कर सकते हैं।

\n\n

प्रोजेक्ट की रूट में Dockerfile फ़ाइल बनाएं:

\n
# बिल्ड स्टेज\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

इमेज बनाएं:

\n
docker build -t rust-k8s-demo:latest .
\n\n

कंटेनर को स्थानीय रूप से जांचें:

\n
docker run -p 8080:8080 rust-k8s-demo:latest
\n\n

अगर सब कुछ काम करता है - इमेज को रजिस्ट्री (जैसे, Docker Hub) में पुश करें:

\n
docker tag rust-k8s-demo:latest yourusername/rust-k8s-demo:v1\ndocker push yourusername/rust-k8s-demo:v1
\n\n

3. Kubernetes मेनिफेस्ट कॉन्फ़िगर करना

\n\n

अब जब इमेज तैयार है, तो हमें Kubernetes के लिए मेनिफेस्ट बनाने की आवश्यकता है। हम Deployment (रेप्लिका प्रबंधन के लिए) और Service (एक्सेस के लिए) बनाएंगे।

ब्लॉग

पुस्तक अनुशंसाएँ