Rust को Kubernetes पर डिप्लॉय करना: व्यावहारिक मूल गाइड

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

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

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

Rust को Kubernetes पर डिप्लॉय करना: व्यावहारिक मूल गाइड

\n\n

Rust सबसे तेज़ और सुरक्षित सिस्टम प्रोग्रामिंग भाषाओं में से एक है। Kubernetes (k8s) कंटेनर ऑर्केस्ट्रेशन के लिए डी-फैक्टो मानक है। इनका संयोजन अत्यधिक कुशल, हल्की और दोष-सहिष्णु सेवाएँ बनाने की अनुमति देता है। इस लेख में, हम Rust एप्लिकेशन को Kubernetes क्लस्टर में डिप्लॉय करने के पूरे चक्र को समझेंगे: Docker इमेज बनाने से लेकर स्केलिंग तक।

\n\n

Rust और Kubernetes एक आदर्श जोड़ी क्यों हैं

\n\n

Rust नेटिव बाइनरी फ़ाइल में कंपाइल होता है, इसे वर्चुअल मशीन (जैसे Java) या इंटरप्रेटर (जैसे Python) की आवश्यकता नहीं होती है। यह न्यूनतम इमेज आकार और कम मेमोरी खपत देता है। Kubernetes के संदर्भ में, इसका अर्थ है:

\n
    \n
  • पॉड्स का तेज़ स्टार्टअप (अक्सर 1 सेकंड से भी कम)।
  • \n
  • क्लस्टर संसाधनों की बचत।
  • \n
  • भारी रनटाइम की अनुपस्थिति के कारण कम कमज़ोरियाँ।
  • \n
\n\n

चरण 1: एक सरल Rust एप्लिकेशन बनाना

\n\n

उदाहरण के लिए, हम लोकप्रिय फ्रेमवर्क actix-web का उपयोग करके एक HTTP सर्वर लिखेंगे। एक नया प्रोजेक्ट बनाएँ:

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

Cargo.toml में निर्भरताएँ जोड़ें:

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

src/main.rs में एक सरल हैंडलर लिखें:

\n
use actix_web::{get, web, App, HttpServer, Responder};\nuse std::env;\n\n#[get("/")]\nasync fn index() -> impl Responder {\n    let message = env::var("MESSAGE").unwrap_or_else(|_| "Hello from Rust!".to_string());\n    format!("{{ \\"message\\": \\"{}\\" }}", message)\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n    let port = env::var("PORT").unwrap_or_else(|_| "8080".to_string());\n    let addr = format!("0.0.0.0:{}", port);\n    println!("Starting server at {}", addr);\n\n    HttpServer::new(|| {\n        App::new()\n            .service(index)\n    })\n    .bind(&addr)?\n    .run()\n    .await\n}
\n\n

एप्लिकेशन MESSAGE और PORT एनवायरनमेंट वेरिएबल्स को पढ़ता है - यह Kubernetes ConfigMap के माध्यम से कॉन्फ़िगरेशन के लिए उपयोगी होगा।

\n\n

चरण 2: Docker इमेज बनाना

\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

इमेज बनाएँ और रजिस्ट्री (जैसे, Docker Hub) में पुश करें:

\n
docker build -t yourusername/rust-k8s-demo:latest .\ndocker push yourusername/rust-k8s-demo:latest
\n\n

चरण 3: Kubernetes मेनिफेस्ट

\n\n

एक k8s फ़ोल्डर बनाएँ और उसमें मेनिफेस्ट रखें।

\n\n

3.1. कॉन्फ़िगरेशन के लिए ConfigMap

\n

फ़ाइल k8s/configmap.yaml बनाएँ:

\n
apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: rust-app-config\ndata:\n  MESSAGE: "Kubernetes पर Rust से नमस्ते!"\n  PORT: "8080"
\n\n

3.2. Deployment

\n

फ़ाइल k8s/deployment.yaml बनाएँ:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: rust-app\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: rust-app\n  template:\n    metadata:\n      labels:\n        app: rust-app\n    spec:\n      containers:\n      - name: rust-app\n        image: yourusername/rust-k8s-demo:latest\n        ports:\n        - containerPort: 8080\n        envFrom:\n        - configMapRef:\n            name: rust-app-config\n                

ब्लॉग

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