将 TypeScript 部署到 Kubernetes:初学者基础指南

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

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

开始课程

将 TypeScript 部署到 Kubernetes:初学者基础指南



现代 Web 开发离不开容器化和编排。如果您使用 TypeScript 编写代码,并希望您的应用程序稳定运行、自动扩展且具备高可用性——Kubernetes (K8s) 将成为您最好的朋友。在本指南中,我们将逐步讲解如何将 TypeScript 应用程序打包到 Docker 中,并将其部署到 Kubernetes 集群。本材料面向初学者:没有魔法,只有清晰的示例和解释。



1. 准备 TypeScript 应用程序



在考虑 Kubernetes 之前,需要确保您的应用程序已准备好运行在容器中。我们将使用 Express 和 TypeScript 创建一个简单的 HTTP 服务器。



1.1. 初始化项目

创建项目文件夹并执行初始化:

mkdir my-ts-app && cd my-ts-appnpm init -ynpm install expressnpm install -D typescript @types/node @types/express ts-node nodemon


1.2. TypeScript 配置

创建 tsconfig.json 文件:

{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist"]}


1.3. 应用程序代码

创建 src 文件夹和 index.ts 文件:

import express, { Request, Response } from 'express';

const app = express();const PORT = process.env.PORT || 3000;

app.get('/', (req: Request, res: Response) => { res.json({ message: 'Hello from TypeScript on Kubernetes!' });});

app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});


1.4. 构建与运行

在 package.json 中添加脚本:

"scripts": {  "build": "tsc",  "start": "node dist/index.js",  "dev": "ts-node src/index.ts"}

检查本地运行:执行 npm run dev 并打开 http://localhost:3000。



2. 使用 Docker 进行容器化



Kubernetes 使用容器运行。我们需要为 TypeScript 应用程序创建 Docker 镜像。



2.1. Dockerfile

在项目根目录创建 Dockerfile 文件:

FROM node:18-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY . .RUN npm run build

FROM node:18-alpine AS productionWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/package*.json ./RUN npm ci --only=productionEXPOSE 3000CMD ["node", "dist/index.js"]

我们使用多阶段构建:首先编译 TypeScript,然后创建轻量级的最终镜像。



2.2. 构建镜像

docker build -t my-ts-app:latest .

本地验证:

docker run -p 3000:3000 my-ts-app:latest


2.3. .dockerignore

为避免复制多余文件,创建 .dockerignore 文件:

node_modulesdist.git*.md


3. 部署到 Kubernetes



现在我们已经有了 Docker 镜像,可以进入 Kubernetes 阶段。对于本地测试,推荐使用 Minikube 或 Kind。



3.1. 启动 Minikube

minikube start --driver=dockerminikube status


3.2. 将镜像加载到 Minikube

为了让 Kubernetes 能找到我们的镜像,将其加载到 Minikube 环境中:

minikube image load my-ts-app:latest


3.3. 创建 Deployment

创建 deployment.yaml 文件:

apiVersion: apps/v1kind: Deploymentmetadata:  name: my-ts-app-deploymentspec:  replicas: 2  selector:    matchLabels:      app: my-ts                

博客

书籍推荐