Déploiement de Kotlin sur Kubernetes : guide 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 Kotlin sur Kubernetes : guide de base



Le développement moderne est impensable sans conteneurisation et orchestration. Kubernetes (K8s) est devenu la norme pour la gestion des microservices, et Kotlin l'un des langages les plus populaires pour créer des applications backend fiables. Dans ce guide, nous allons parcourir le chemin d'une simple application Kotlin jusqu'à son déploiement complet dans un cluster Kubernetes. Vous apprendrez comment empaqueter le code dans une image Docker, rédiger des manifestes et configurer l'accès au service.



1. Préparation de l'application Kotlin



Pour l'exemple, prenons une simple API REST avec Ktor — un framework léger pour Kotlin. Créons le fichier Main.kt :



import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.http.*import io.ktor.server.response.*

fun main() { embeddedServer(Netty, port = 8080) { routing { get("/") { call.respondText("Hello from Kotlin on K8s!", ContentType.Text.Plain) } get("/health") { call.respondText("OK", ContentType.Text.Plain) } } }.start(wait = true)}


Ce code démarre un serveur sur le port 8080 avec deux endpoints : la racine et le health check. Assurez-vous que les dépendances Ktor et Netty sont incluses dans build.gradle.kts.



2. Construction de l'image Docker



Pour le déploiement dans Kubernetes, l'application doit être empaquetée dans un conteneur. Créons un Dockerfile à la racine du projet :



FROM gradle:8.5-jdk21 AS buildWORKDIR /appCOPY build.gradle.kts settings.gradle.kts ./COPY src ./srcRUN gradle build --no-daemon

FROM openjdk:21-jdk-slimWORKDIR /appCOPY --from=build /app/build/libs/*.jar app.jarEXPOSE 8080ENTRYPOINT ["java", "-jar", "app.jar"]


La construction s'effectue en deux étapes : d'abord la compilation avec Gradle, puis la copie du fichier JAR dans une image propre. Construisez l'image avec la commande :



docker build -t my-kotlin-app:1.0 .


Pour publier dans un registre (par exemple, Docker Hub), exécutez :



docker tag my-kotlin-app:1.0 yourusername/my-kotlin-app:1.0docker push yourusername/my-kotlin-app:1.0


3. Manifestes Kubernetes



Créons maintenant les fichiers YAML pour le déploiement dans le cluster. Commençons par deployment.yaml :



apiVersion: apps/v1kind: Deploymentmetadata:  name: kotlin-appspec:  replicas: 2  selector:    matchLabels:      app: kotlin-app  template:    metadata:      labels:        app: kotlin-app    spec:      containers:      - name: kotlin-app        image: yourusername/my-kotlin-app:1.0        ports:        - containerPort: 8080        livenessProbe:          httpGet:            path: /health            port: 8080          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /health            port: 8080          initialDelaySeconds: 3          periodSeconds: 5


Ce manifeste crée deux réplicas de l'application, ajoute des sondes de vivacité et de disponibilité. Ensuite, service.yaml :



apiVersion: v1kind: Servicemetadata:  name: kotlin-app-svcspec:  selector:    app: kotlin-app  ports:  - port: 80    targetPort: 8080  type: ClusterIP


Le service dirige le trafic du port 80 vers le port 8080 du conteneur. Si un accès externe est nécessaire, modifiez le type en NodePort ou LoadBalancer.



4. Configuration d'Ingress et déploiement



Pour le routage des requêtes depuis l'extérieur, utilisez un contrôleur Ingress. Créez ingress.yaml :



apiVersion: networking.k8s.io/v1kind: Ingressmetadata:  name: kotlin-app-ingress  annotations:    nginx.ingress.kubernetes.io/rewrite-target: /spec:  rules:  - host: kotlin.example.com    http:                

Blogs

Book Recommendations