Déploiement de Swift sur Kubernetes : guide pratique de base

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Déploiement de Swift sur Kubernetes : guide pratique de base



Swift n'est pas seulement un langage pour applications mobiles. Grâce à des frameworks comme Vapor et Kitura, Swift est activement utilisé pour créer des solutions serveur. Cependant, pour exécuter une telle application en production, une orchestration fiable est nécessaire. Kubernetes (K8s) est l'outil idéal pour gérer les services conteneurisés. Dans ce guide, nous allons parcourir le cycle complet de déploiement d'une application Swift dans un cluster Kubernetes : de la conteneurisation à la création de manifestes de travail.



1. Préparation de l'application Swift et conteneurisation



Avant de parler de Kubernetes, vous devez empaqueter votre application Swift dans une image Docker. Prenons l'exemple basé sur le framework Vapor (mais l'approche est universelle pour tout serveur Swift).



Créez une application Vapor minimale :



// Sources/App/routes.swiftimport Vapor

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


Écrivons maintenant le Dockerfile. Important : utilisez l'image officielle Swift pour la compilation, et pour le conteneur final, une image légère (par exemple, ubuntu:jammy). Cela réduira la taille et améliorera la sécurité.



# ---- 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"]


Construisez l'image et envoyez-la dans un registre (par exemple, Docker Hub) :



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


2. Bases de Kubernetes : Pod et Deployment



Kubernetes gère les conteneurs via des objets. Le plus simple est le Pod, mais pour la production, il est préférable d'utiliser un Deployment, qui assure la réplication et les mises à jour.



Créons un fichier 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


Appliquez le manifeste :



kubectl apply -f deployment.yaml


Vérifiez le statut :



kubectl get pods -l app=swift-demo


3. Service pour accéder à l'application



Les Pods sont dynamiques (leurs IP changent lors des redémarrages). Pour que les clients puissent accéder stablement à l'application, un Service est nécessaire. Créons service.yaml :



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


Pour les tests dans un cluster local (par exemple, Minikube), vous pouvez utiliser NodePort ou le transfert de ports :



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


L'application est maintenant accessible à l'adresse http://localhost:8080.



4. Mise à l'échelle et mise à jour (Rolling Update)



L'un des principaux avantages de Kubernetes est la facilité de m

Blogs

Book Recommendations