Implantação de Swift no Kubernetes: guia básico na prática

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 de Swift no Kubernetes: guia básico na prática



Swift não é apenas uma linguagem para aplicações móveis. Graças a frameworks como Vapor e Kitura, o Swift é ativamente usado para criar soluções de servidor. No entanto, para executar tal aplicação em produção, é necessária uma orquestração confiável. O Kubernetes (K8s) é a ferramenta ideal para gerenciar serviços containerizados. Neste guia, abordaremos o ciclo completo de implantação de uma aplicação Swift em um cluster Kubernetes: desde a containerização até a criação de manifestos funcionais.



1. Preparação da aplicação Swift e containerização



Antes de falar sobre Kubernetes, é necessário empacotar sua aplicação Swift em uma imagem Docker. Vamos considerar um exemplo baseado no framework Vapor (mas a abordagem é universal para qualquer servidor Swift).



Crie uma aplicação Vapor mínima:



// Sources/App/routes.swiftimport Vapor

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


Agora vamos escrever o Dockerfile. Importante: use a imagem oficial do Swift para a compilação e, para o contêiner final, uma imagem leve (por exemplo, ubuntu:jammy). Isso reduzirá o tamanho e aumentará a segurança.



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


Construa a imagem e envie para um registro (por exemplo, Docker Hub):



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


2. Fundamentos do Kubernetes: Pod e Deployment



O Kubernetes gerencia contêineres por meio de objetos. O mais simples é o Pod, mas para produção é melhor usar um Deployment, que garante replicação e atualizações.



Crie o arquivo 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


Aplique o manifesto:



kubectl apply -f deployment.yaml


Verifique o status:



kubectl get pods -l app=swift-demo


3. Serviço (Service) para acesso à aplicação



Os Pods são dinâmicos (seus IPs mudam ao reiniciar). Para que os clientes possam acessar a aplicação de forma estável, é necessário um Service. Crie o service.yaml:



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


Para testar em um cluster local (por exemplo, Minikube), você pode usar NodePort ou encaminhamento de porta:



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


Agora a aplicação está acessível em http://localhost:8080.



4. Escalonamento e atualização (Rolling Update)



Uma das principais vantagens do Kubernetes é a fácil m

Blogs

Book Recommendations