💨 将 Javascript 应用部署到 Kubernetes 的最快方法🌬️✨

2025-05-28

💨 将 Javascript 应用部署到 Kubernetes 的最快方法🌬️✨

TL;DR

在本教程中,您将学习如何在 Kubernetes(一个容器编排平台☸️)上部署您的第一个 javascript 应用程序。

我们将使用Minikube ✨在 Kubernetes 本地部署一个简单的express服务器,该服务器返回一个示例 JSON 对象。

先决条件📜:

  • Docker:用于容器化应用程序。🐋
  • Minikube:用于在本地运行 Kubernetes。☸️

获取部署


Odigos - 开源分布式追踪

无需编写任何代码,即可同时监控所有应用!
使用唯一能够在所有应用中生成分布式跟踪的平台,简化 OpenTelemetry 的复杂性。

我们真的才刚刚开始。

你能帮我们加个星吗?拜托!😽

猫


让我们开始设置吧🚀

我们将首先使用以下命令初始化我们的项目:

npm init -y
Enter fullscreen mode Exit fullscreen mode

这将使用 📝 文件初始化一个NodeJS项目,package.json该文件跟踪我们安装的依赖项。

安装 Express.js 框架

npm install express
Enter fullscreen mode Exit fullscreen mode

现在,package.json依赖项对象内部应该看起来像这样。✅

  "dependencies": {
    "express": "^4.18.2"
  }
Enter fullscreen mode Exit fullscreen mode

现在,在项目的根目录创建一个index.js文件并添加以下代码行。🚀

// 👇🏻 Initialize express.
const express = require("express");
const app = express();

const port = 3000;

// 👇🏻 Return a sample JSON object with a message property on the root path.
app.get("/", (req, res) => {
  res.json({
    message: "Hello from Odigos!",
  });
});

// 👇🏻 Listen on port 3000.
app.listen(port, () => {
  console.log(`Server is listening on port ${port}`);
});
Enter fullscreen mode Exit fullscreen mode

我们需要在 中添加一个脚本package.json来运行应用程序。将其添加到 的脚本对象中package.json

  "scripts": {
    "dev": "node index.js"
  },
Enter fullscreen mode Exit fullscreen mode

现在,为了检查我们的应用程序是否正常运行,请使用运行服务器npm run dev并通过 CLI 或浏览器发出获取请求localhost:3000。✨

如果您使用的是 CLI,请确保已安装cURL。✅

curl http://localhost:3000
Enter fullscreen mode Exit fullscreen mode

你应该会看到类似这样的内容。👇🏻

cURL 响应

Ctrl + C现在,你可以简单地使用🚫停止正在运行的 Express 服务器

我们的示例应用程序已经准备好了!🎉现在,让我们将其容器化并推送到 Kubernetes。🐳☸️


将应用程序容器化

我们将使用Docker来容器化我们的应用程序。
在项目的根目录中,创建一个名为 的新文件Dockerfile

💡 确保名称完全相同。否则,您需要显式传递-f标志来指定Dockerfile路径。

# Uses node as the base image
FROM node:21-alpine 
# Sets up our working directory as /app inside the container.
WORKDIR /app
# Copyies package json files.
COPY package.json package-lock.json ./
# Installs the dependencies from the package.json
RUN npm install --production
# Copies current directory files into the docker environment
COPY . .
# Expose port 3000 as our server uses it.
EXPOSE 3000
# Finally runs the server.
CMD ["node", "index.js"]
Enter fullscreen mode Exit fullscreen mode

现在,我们需要构建⚒️这个容器才能实际使用它并将其推送到 Kubernetes。

运行此命令来构建Dockerfile

🚨 如果您在 Windows 上运行它,请确保 Docker Desktop 正在运行。

// 👇🏻 We are tagging our image name to express-server
docker build -t express-server .
Enter fullscreen mode Exit fullscreen mode

现在,是时候运行容器了。🏃🏻‍♂️💨

docker run -dp 127.0.0.1:3000:3000 express-server
Enter fullscreen mode Exit fullscreen mode

💡 我们在后台运行我们的容器,容器端口 3000 映射到我们的计算机端口 3000。

再次运行以下命令,您应该看到与之前相同的结果。✅

curl http://localhost:3000
Enter fullscreen mode Exit fullscreen mode

注意:这次应用程序不像以前那样在我们的计算机上运行。相反,它在容器内运行。🤯


在 Kubernetes 中部署

如前所述,我们将使用 Minikube 在本地计算机中创建编排环境,并使用kubectl命令与 Kubernetes 进行交互。😄

启动 Minikube:🚀

minikube start
Enter fullscreen mode Exit fullscreen mode

由于我们将使用本地容器而不是从 docker hub 中提取它们,因此请运行以下命令。✨

eval $(minikube docker-env)
docker build -t express-server .
Enter fullscreen mode Exit fullscreen mode

eval $(minikube docker-env):它用于将您的终端指向docker-climinikube 内的 Docker 引擎。

🚨 注意,我们许多人使用 Fish 作为我们的 shell,因此对于 fish,相应的命令将是eval (minikube docker-env)

现在,在项目根目录中创建一个嵌套文件夹k8/deployment,并在部署文件夹内创建一个名为 的新文件,deployment.yaml其内容如下。

在此文件中,我们将管理容器的部署。👇🏻

# 👇🏻 /k8/deployment/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: express-deployment
spec:
  selector:
    matchLabels:
      app: express-svr
  template:
    metadata:
      labels:
        app: express-svr
    spec:
      containers:
        - name: express-svr
          image: express-server
          imagePullPolicy: Never # Make sure to set it to Never, or else it will pull from the docker hub and fail.
          resources:
            limits:
              memory: "128Mi"
              cpu: "500m"
          ports:
            - containerPort: 3000
Enter fullscreen mode Exit fullscreen mode

最后,运行此命令以应用我们刚刚创建的部署配置deployment.yaml。✨

kubectl apply -f .\k8\deployment\deployment.yaml
Enter fullscreen mode Exit fullscreen mode

现在,如果我们查看正在运行的 Pod,我们可以看到 Pod 已成功创建。🎉

运行 Kubernetes Pod

要查看我们创建的 pod 的日志,运行后kubectl logs <pod_name>我们应该会看到以下内容。

正在运行的 kubernetes pod 的日志

这样,我们的express-server就成功部署在本地 Kubernetes 上了。😎


这就是本文的内容,我们成功地将我们的应用程序容器化并将其部署到 Kubernetes。

本文的源代码可以在这里找到
https://github.com/keyval-dev/blog/tree/main/js-on-k8s

非常感谢你的阅读!🎉🫡

文章来源:https://dev.to/odigos/the-fastest-way-to-deploy-your-javascript-app-to-kubernetes-2j33
PREV
如何解压由 All-in-one-Wp-Migration Wordpress 插件创建的 .wpress 存档文件
NEXT
🔥 2 个技巧 🔥 在 30 分钟内使用 React 构建一个 Meetup.com 克隆版 🪄✨