将 Rust 部署到 Kubernetes:开发者基础指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

部署 Rust 到 Kubernetes:基础指南



现代云开发要求应用程序具有高性能、安全性和高效的资源利用。Rust 凭借其所有权系统和零成本抽象,非常适合创建在容器编排器中运行的微服务。而 Kubernetes 则提供了用于管理容器化应用程序的强大工具集。在本指南中,我们将逐步讲解如何准备将 Rust 应用程序部署到 Kubernetes、创建 Docker 镜像并将其部署到集群中。



1. 准备 Rust 应用程序



在将应用程序部署到 Kubernetes 之前,需要先将其容器化。为了演示,我们将基于 actix-web 框架创建一个简单的 HTTP 应用程序,该程序将响应请求并返回基本的系统信息。



创建一个新项目:



cargo new rust-k8s-appcd rust-k8s-app


在 Cargo.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

博客

书籍推荐