Implantação de Kotlin no Kubernetes: guia básico

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Implantação do Kotlin no Kubernetes: guia básico



O desenvolvimento moderno é impensável sem conteinerização e orquestração. O Kubernetes (K8s) tornou-se o padrão para gerenciar microsserviços, e o Kotlin é uma das linguagens mais populares para criar aplicações backend confiáveis. Neste guia, percorreremos o caminho desde uma simples aplicação Kotlin até sua implantação completa em um cluster Kubernetes. Você aprenderá como empacotar o código em uma imagem Docker, escrever manifestos e configurar o acesso ao serviço.



1. Preparação da aplicação Kotlin



Como exemplo, usaremos uma API REST simples em Ktor — um framework leve para Kotlin. Vamos criar o arquivo 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)}


Este código inicia um servidor na porta 8080 com dois endpoints: raiz e health check. Certifique-se de que as dependências do Ktor e Netty estejam incluídas no build.gradle.kts.



2. Construção da imagem Docker



Para implantar no Kubernetes, a aplicação deve ser empacotada em um contêiner. Vamos criar um Dockerfile na raiz do projeto:



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


A construção é feita em duas etapas: primeiro a compilação com Gradle, depois a cópia do arquivo JAR para uma imagem limpa. Construa a imagem com o comando:



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


Para publicar em um registry (por exemplo, Docker Hub), execute:



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


3. Manifestos Kubernetes



Agora vamos criar os arquivos YAML para implantação no cluster. Começamos com 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


Este manifesto cria duas réplicas da aplicação e adiciona verificações de liveness e readiness. Em seguida, service.yaml:



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


O serviço direciona o tráfego da porta 80 para a porta 8080 do contêiner. Se precisar de acesso externo, altere o tipo para NodePort ou LoadBalancer.



4. Configuração do Ingress e implantação



Para rotear requisições externas, usamos um Ingress controller. Crie o 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