Bereitstellung von TypeScript auf Kubernetes: Ein grundlegender Leitfaden für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Bereitstellung von TypeScript auf Kubernetes: Ein grundlegender Leitfaden für Anfänger

\n\n

Moderne Webentwicklung ist ohne Containerisierung und Orchestrierung nicht denkbar. Wenn Sie in TypeScript schreiben und möchten, dass Ihre Anwendung stabil läuft, sich automatisch skaliert und ausfallsicher ist, wird Kubernetes (K8s) Ihr bester Freund. In diesem Leitfaden gehen wir Schritt für Schritt durch, wie Sie eine TypeScript-Anwendung in Docker verpacken und in einem Kubernetes-Cluster bereitstellen. Das Material richtet sich an Anfänger: keine Magie, nur verständliche Beispiele und Erklärungen.

\n\n

1. Vorbereitung der TypeScript-Anwendung

\n\n

Bevor Sie an Kubernetes denken, müssen Sie sicherstellen, dass Ihre Anwendung bereit für den Betrieb in einem Container ist. Wir erstellen einen einfachen HTTP-Server mit Express und TypeScript.

\n\n

1.1. Projektinitialisierung

\n

Erstellen Sie einen Projektordner und führen Sie die Initialisierung durch:

\n
mkdir my-ts-app && cd my-ts-app\nnpm init -y\nnpm install express\nnpm install -D typescript @types/node @types/express ts-node nodemon
\n\n

1.2. TypeScript-Konfiguration

\n

Erstellen Sie die Datei tsconfig.json:

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

1.3. Anwendungscode

\n

Erstellen Sie den Ordner src und die Datei index.ts:

\n
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req: Request, res: Response) => {\n  res.json({ message: 'Hello from TypeScript on Kubernetes!' });\n});\n\napp.listen(PORT, () => {\n  console.log(`Server running on port ${PORT}`);\n});
\n\n

1.4. Build und Ausführung

\n

Fügen Sie Skripte in package.json hinzu:

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

Überprüfen Sie die lokale Ausführung: npm run dev und öffnen Sie http://localhost:3000.

\n\n

2. Containerisierung mit Docker

\n\n

Kubernetes arbeitet mit Containern. Wir müssen ein Docker-Image unserer TypeScript-Anwendung erstellen.

\n\n

2.1. Dockerfile

\n

Erstellen Sie die Datei Dockerfile im Projektstammverzeichnis:

\n
FROM node:18-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine AS production\nWORKDIR /app\nCOPY --from=builder /app/dist ./dist\nCOPY --from=builder /app/package*.json ./\nRUN npm ci --only=production\nEXPOSE 3000\nCMD ["node", "dist/index.js"]
\n

Wir verwenden einen Multi-Stage-Build: Zuerst wird TypeScript kompiliert, dann erstellen wir ein leichtes finales Image.

\n\n

2.2. Image-Build

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

Überprüfen Sie lokal:

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

2.3. .dockerignore

\n

Um unnötige Dateien nicht zu kopieren, erstellen Sie .dockerignore:

\n
node_modules\ndist\n.git\n*.md
\n\n

3. Bereitstellung in Kubernetes

\n\n

Da wir nun ein Docker-Image haben, können wir zu Kubernetes übergehen. Für lokale Tests empfehle ich Minikube oder Kind.

\n\n

3.1. Minikube starten

\n
minikube start --driver=docker\nminikube status
\n\n

3.2. Image in Minikube laden

\n

Damit Kubernetes unser Image finden kann, laden wir es in die Minikube-Umgebung:

\n
minikube image load my-ts-app:latest
\n\n

3.3. Deployment erstellen

\n

Erstellen Sie die Datei deployment.yaml:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-ts-app-deployment\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: my-ts                

Blogs

Buchempfehlungen