Swift auf Kubernetes bereitstellen: Ein praktischer Grundlagenleitfaden

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

Swift auf Kubernetes bereitstellen: Ein praktischer Grundlagenleitfaden



Swift ist nicht nur eine Sprache für mobile Anwendungen. Dank Frameworks wie Vapor und Kitura wird Swift aktiv für die Entwicklung von Serverlösungen eingesetzt. Um eine solche Anwendung jedoch in der Produktion auszuführen, ist eine zuverlässige Orchestrierung erforderlich. Kubernetes (K8s) ist das ideale Werkzeug zur Verwaltung containerisierter Dienste. In diesem Leitfaden gehen wir den gesamten Bereitstellungszyklus einer Swift-Anwendung in einem Kubernetes-Cluster durch: von der Containerisierung bis zur Erstellung funktionsfähiger Manifeste.



1. Vorbereitung der Swift-Anwendung und Containerisierung



Bevor wir über Kubernetes sprechen, müssen wir Ihre Swift-Anwendung in ein Docker-Image verpacken. Betrachten wir ein Beispiel basierend auf dem Vapor-Framework (der Ansatz ist jedoch für jeden Swift-Server universell).



Erstellen Sie eine minimale Vapor-Anwendung:



// Sources/App/routes.swiftimport Vapor

func routes(_ app: Application) throws { app.get { req async in "Hello, Kubernetes!" }}


Jetzt schreiben wir ein Dockerfile. Wichtig: Verwenden Sie das offizielle Swift-Image für den Build und für den finalen Container ein leichtes Image (z. B. ubuntu:jammy). Dies reduziert die Größe und erhöht die Sicherheit.



# ---- Build Stage ----FROM swift:5.9-jammy AS build

WORKDIR /appCOPY Package.swift Package.resolved ./COPY Sources ./SourcesRUN swift build -c release --static-swift-stdlib

# ---- Run Stage ----FROM ubuntu:jammy

RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*WORKDIR /appCOPY --from=build /app/.build/release/Run .

EXPOSE 8080CMD ["./Run"]


Erstellen Sie das Image und senden Sie es an eine Registry (z. B. Docker Hub):



docker build -t yourdockerhub/swift-k8s-demo:latest .docker push yourdockerhub/swift-k8s-demo:latest


2. Grundlagen von Kubernetes: Pod und Deployment



Kubernetes verwaltet Container über Objekte. Das einfachste ist ein Pod, aber für die Produktion ist es besser, ein Deployment zu verwenden, das Replikation und Updates gewährleistet.



Erstellen wir eine Datei deployment.yaml:



apiVersion: apps/v1kind: Deploymentmetadata:  name: swift-demo  labels:    app: swift-demospec:  replicas: 2  selector:    matchLabels:      app: swift-demo  template:    metadata:      labels:        app: swift-demo    spec:      containers:      - name: swift-app        image: yourdockerhub/swift-k8s-demo:latest        ports:        - containerPort: 8080        resources:          requests:            memory: "128Mi"            cpu: "250m"          limits:            memory: "256Mi"            cpu: "500m"        livenessProbe:          httpGet:            path: /            port: 8080          initialDelaySeconds: 5          periodSeconds: 10


Wenden Sie das Manifest an:



kubectl apply -f deployment.yaml


Überprüfen Sie den Status:



kubectl get pods -l app=swift-demo


3. Service für den Zugriff auf die Anwendung



Pods sind dynamisch (ihre IPs ändern sich bei Neustarts). Damit Clients stabil auf die Anwendung zugreifen können, wird ein Service benötigt. Erstellen wir service.yaml:



apiVersion: v1kind: Servicemetadata:  name: swift-servicespec:  selector:    app: swift-demo  ports:    - protocol: TCP      port: 80      targetPort: 8080  type: ClusterIP


Für Tests in einem lokalen Cluster (z. B. Minikube) können Sie NodePort oder Portweiterleitung verwenden:



kubectl port-forward service/swift-service 8080:80


Die Anwendung ist nun unter http://localhost:8080 erreichbar.



4. Skalierung und Aktualisierung (Rolling Update)



Einer der Hauptvorteile von Kubernetes ist die einfache S

Blogs

Buchempfehlungen