Container haben die Art und Weise, wie wir Anwendungen bereitstellen, skalieren und verwalten, revolutioniert, indem sie Code und Abhängigkeiten in einer standardisierten Einheit verpacken, die konsistent in jeder Umgebung ausgeführt werden kann. In Cloud-Umgebungen bieten Container:
- Portabilität über Entwicklung, Test und Produktion.
- Skalierbarkeit, um sich schnell an Verkehr und Nachfrage anzupassen.
- Effizienz mit reduziertem Overhead im Vergleich zu traditionellen virtuellen Maschinen.
In diesem Tutorial werden wir eine vollständige Einrichtung einer cloudbasierten containerisierten Anwendung durchgehen, die Folgendes abdeckt:
- Grundlagen von Containern und warum sie ideal für die Cloud sind.
- Einrichten einer dockerisierten Anwendung.
- Bereitstellung des Containers bei einem Cloud-Anbieter (unter Verwendung von Google Cloud Platform als Beispiel).
- Skalierung und Verwaltung Ihres Containers in der Cloud.
Container-Grundlagen: Wie Container in Cloud-Workflows integriert sind
Container kapseln alle Bibliotheken und Abhängigkeiten ein, die benötigt werden, um eine Anwendung auszuführen. Im Gegensatz zu traditionellen virtuellen Maschinen, bei denen jede ein Betriebssystem hat, teilen Container das Host-Betriebssystem, was sie leichtgewichtig und effizient macht.
Warum Container für die Cloud?
- Schnelle Startzeiten bedeuten schnellere Skalierung, um variablen Verkehr zu bewältigen.
- Konsistenz in verschiedenen Umgebungen stellt sicher, dass der Code vom Entwickler-Laptop bis zur Produktion gleich funktioniert.
- Ressourceneffizienz ermöglicht eine dichte Bereitstellung auf derselben Infrastruktur.
Kernkomponenten der Cloud-Containerisierung
- Container Engine: Verwaltet und führt Container aus (z.B. Docker, containerd).
- Orchestrierung: Gewährleistet App-Zuverlässigkeit, Skalierung und Lastenausgleich (z.B. Kubernetes, ECS).
- Registry: Speichert Container-Images für den Zugriff in verschiedenen Umgebungen (z.B. Docker Hub, GCR).
Einrichten einer dockerisierten Anwendung
Wir beginnen damit, eine einfache Node.js-Anwendung zu containerisieren.
Schritt 1: Erstellen der Anwendung
1. Initialisieren Sie in einem Projektordner ein Node.js-Projekt:
mkdir cloud-container-app && cd cloud-container-app
npm init -y
2. Erstellen Sie eine grundlegende Serverdatei, app.js
:
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Hello, Cloud Container!');
});
app.listen(3000, () => {
console.log('App running on port 3000');
});
3. Fügen Sie Express dem Projekt hinzu:
npm install express
Schritt 2: Erstellen eines Dockerfiles
Dieses Dockerfile legt fest, wie die App in einem Docker-Container verpackt wird.
# Use the Node.js image as a base
FROM node:14
# Set working directory
WORKDIR /app
# Copy files and install dependencies
COPY . .
RUN npm install
# Expose the app’s port
EXPOSE 3000
# Start the application
CMD ["node", "app.js"]
Schritt 3: Bauen und Testen des Docker-Images lokal
1. Bauen Sie das Docker-Image:
docker build -t cloud-container-app .
2. Führen Sie den Container lokal aus:
docker run -p 3000:3000 cloud-container-app
3. Besuchen Sie `http://localhost:3000` in Ihrem Browser. Sie sollten „Hallo, Cloud Container!“ angezeigt bekommen.
Bereitstellung des Containers auf Google Cloud Platform (GCP)
In diesem Abschnitt werden wir das Container-Image in das Google Container Registry (GCR) hochladen und es auf Google Kubernetes Engine (GKE) bereitstellen.
Schritt 1: Ein GCP-Projekt einrichten
1. Erstellen Sie ein GCP-Projekt. Gehen Sie zur [Google Cloud Console] (https://console.cloud.google.com) und erstellen Sie ein neues Projekt.
2. Aktivieren Sie die APIs für Kubernetes Engine und Container Registry für Ihr Projekt.
Schritt 2: Bild in das Google Container Registry hochladen
1. Taggen Sie das Docker-Image für Google Cloud:
docker tag cloud-container-app gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
2. Laden Sie das Bild in GCR hoch:
docker push gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
Schritt 3: Erstellen eines Kubernetes-Clusters
1. Initialisieren Sie einen GKE-Cluster:
gcloud container clusters create cloud-container-cluster --num-nodes=2
2. Konfigurieren Sie kubectl
, um sich mit Ihrem neuen Cluster zu verbinden:
gcloud container clusters get-credentials cloud-container-cluster
Schritt 4: Bereitstellung der containerisierten App in GKE
1. Erstellen Sie eine k8s-deployment.yaml
-Datei, um die Bereitstellung und den Dienst zu definieren:
apiVersion apps/v1
kind Deployment
metadata
name cloud-container-app
spec
replicas2
selector
matchLabels
app cloud-container-app
template
metadata
labels
app cloud-container-app
spec
containers
name cloud-container-app
image gcr.io/<YOUR_PROJECT_ID>/cloud-container-app
ports
containerPort3000
---
apiVersion v1
kind Service
metadata
name cloud-container-service
spec
type LoadBalancer
selector
app cloud-container-app
ports
protocol TCP
port80
targetPort3000
2. Stellen Sie die Anwendung in GKE bereit:
kubectl apply -f k8s-deployment.yaml
3. Holen Sie die externe IP, um auf die App zuzugreifen:
kubectl get services
Skalierung und Verwaltung von Containern in GKE
Schritt 1: Skalieren der Bereitstellung
Um die Anzahl der Replikate anzupassen (z. B. um höheren Verkehr zu bewältigen), verwenden Sie den folgenden Befehl:
kubectl scale deployment cloud-container-app --replicas=5
GKE wird die App automatisch skalieren, indem es Replikate hinzufügt und die Last verteilt.
Schritt 2: Protokolle überwachen und verwalten
1. Verwenden Sie den folgenden Befehl, um Protokolle für ein bestimmtes Pod in Kubernetes anzuzeigen:
kubectl logs <POD_NAME>
2. Aktivieren Sie das GKE-Dashboard, um den Status der Pods und die Ressourcennutzung zu überwachen und Bereitstellungen visuell zu verwalten.
Fazit: Nutzung von Containern für skalierbare Cloud-Bereitstellungen
Dieses Tutorial behandelte:
- Die Containerisierung einer Node.js-App mit Docker.
- Bereitstellung auf Google Kubernetes Engine (GKE) für skalierbares, verwaltetes Hosting.
- Effektives Verwalten und Skalieren von Containern in der Cloud.
Mit Containern in der Cloud gewinnen Ihre Anwendungen an Skalierbarkeit, Portabilität und Effizienz – und stellen sicher, dass sie bereit sind, die Nachfrage zu bewältigen, sich schnell anzupassen und in verschiedenen Umgebungen konsistent zu bleiben.
Source:
https://dzone.com/articles/a-step-by-step-guide-to-deploying-containers-in-the-cloud