JavaScript auf Kubernetes bereitstellen: Ein grundlegendes Anfängerhandbuch

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

Einleitung: Warum JavaScript auf Kubernetes bereitstellen?

\n\n

Moderne Webentwicklung ist ohne Containerisierung undenkbar. Wenn Sie in JavaScript (Node.js) schreiben und möchten, dass Ihre Anwendung stabil läuft, sich automatisch skaliert und ausfallsicher ist, wird Kubernetes (K8s) Ihr bester Freund.

\n\n

Kubernetes ist eine Plattform zur Container-Orchestrierung. Sie verwaltet die Bereitstellung, Skalierung und den Betrieb Ihrer Anwendungen. In diesem Leitfaden werden wir die grundlegende Bereitstellung einer einfachen Node.js-Anwendung auf Kubernetes durchgehen. Sie erfahren, wie Sie Code in ein Docker-Image packen und Pod, Service und Deployment erstellen.

\n\n

Der Artikel richtet sich an Anfänger. Es wird vorausgesetzt, dass Sie Docker und Minikube bereits installiert haben (oder Zugang zu einem K8s-Cluster haben).

\n\n

Schritt 1: Vorbereitung der Node.js-Anwendung und des Docker-Images

\n\n

Zunächst erstellen wir eine einfache Webanwendung mit Express. Sie wird auf HTTP-Anfragen antworten.

\n\n

1.1. Anwendungscode (app.js)

\n\n

Erstellen Sie eine Datei app.js:

\n\n
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n  res.send('Hallo aus Kubernetes!');\n});\n\napp.listen(PORT, () => {\n  console.log(`Server läuft auf Port ${PORT}`);\n});\n
\n\n

1.2. Datei package.json

\n\n

Erstellen Sie package.json:

\n\n
{\n  "name": "k8s-node-app",\n  "version": "1.0.0",\n  "main": "app.js",\n  "scripts": {\n    "start": "node app.js"\n  },\n  "dependencies": {\n    "express": "^4.18.2"\n  }\n}\n
\n\n

1.3. Dockerfile

\n\n

Jetzt erstellen wir ein Dockerfile zum Bauen des Images:

\n\n
FROM node:18-alpine\n\nWORKDIR /usr/src/app\n\nCOPY package*.json ./\nRUN npm install\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD ["node", "app.js"]\n
\n\n

1.4. Image bauen und hochladen

\n\n

Führen Sie die folgenden Befehle aus:

\n\n
docker build -t my-node-app:v1 .\n
\n\n

Wenn Sie Minikube verwenden, bauen Sie das Image in seiner Umgebung:

\n\n
minikube image build -t my-node-app:v1 .\n
\n\n

Oder laden Sie das Image in Docker Hub / eine beliebige Registry hoch und geben Sie es im Manifest an.

\n\n

Schritt 2: Grundlegende Kubernetes-Objekte (Pod, Deployment, Service)

\n\n

Kubernetes arbeitet mit Objekten. Für die Bereitstellung benötigen wir drei grundlegende:

\n\n
    \n
  • Pod — die kleinste Einheit, ein oder mehrere Container.
  • \n
  • Deployment — verwaltet Pods, ermöglicht Skalierung und Updates.
  • \n
  • Service — stabiler Zugangspunkt zu den Pods (normalerweise über ClusterIP oder NodePort).
  • \n
\n\n

2.1. Deployment erstellen

\n\n

Erstellen Sie eine Datei deployment.yaml:

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: node-app-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: node-app\n  template:\n    metadata:\n      labels:\n        app: node-app\n    spec:\n      containers:\n      - name: node-app\n        image: my-node-app:v1\n        ports:\n        - containerPort: 3000\n        env:\n        - name: PORT\n          value: "3000"\n
\n\n

Erklärung:

\n
    \n
  • replicas: 3 — wir starten 3 Kopien der Anwendung für Ausfallsicherheit.
  • \n
  • selector und labels — verbinden das Deployment mit den Pods.
  • \n
  • image — der Name Ihres Docker-Images.
  • \n
\n\n

2.2. Service erstellen

\n\n

Erstellen Sie eine Datei service.yaml für den Zugriff auf die Anwendung:

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: node-app-service\nspec:\n  selector:\n    app: node-app\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 3000\n  type: NodePort\n
\n\n

Was hier passiert:

\n
    \n
  • Der Service leitet den Datenverkehr von Port

Blogs

Buchempfehlungen