Implantação de TypeScript 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 de TypeScript no Kubernetes: guia básico



O desenvolvimento web moderno cada vez mais exige não apenas escrever código de qualidade, mas também uma implantação adequada de aplicações. TypeScript, graças à tipagem estrita e ferramentas poderosas, tornou-se uma escolha popular para serviços backend em Node.js. No entanto, sem uma implantação correta, mesmo o código ideal permanecerá na máquina local. Kubernetes — o padrão de orquestração de contêineres — permite automatizar a implantação, escalonamento e gerenciamento de aplicações. Neste guia, vamos detalhar o processo passo a passo de implantação de uma aplicação TypeScript no Kubernetes.



1. Preparando a aplicação TypeScript para conteinerização

Antes de enviar o código para o cluster, é necessário garantir que a aplicação esteja pronta para funcionar em um contêiner. Vamos considerar um projeto típico com Express.js e TypeScript.



Estrutura do projeto

my-ts-app/├── src/│   ├── index.ts│   └── routes/├── dist/├── package.json├── tsconfig.json└── Dockerfile


Configuração do tsconfig.json

Certifique-se de que o compilador TypeScript compile o projeto na pasta dist:

{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true  },  "include": ["src/**/*"]}


Servidor simples (src/index.ts)

import express, { Request, Response } from 'express';

const app = express();const PORT = process.env.PORT || 3000;

app.get('/health', (_req: Request, res: Response) => { res.json({ status: 'ok', timestamp: new Date().toISOString() });});

app.listen(PORT, () => { console.log(`Server running on port ${PORT}`);});


Adicione scripts no package.json:

"scripts": {  "build": "tsc",  "start": "node dist/index.js",  "dev": "ts-node src/index.ts"}


2. Construindo a imagem Docker para TypeScript

A conteinerização é uma etapa fundamental antes da implantação no Kubernetes. Usaremos multi-stage build para reduzir o tamanho da imagem.



Dockerfile

# Stage 1: BuildFROM node:18-alpine AS builderWORKDIR /appCOPY package*.json ./RUN npm ciCOPY tsconfig.json ./COPY src/ ./src/RUN npm run build

# Stage 2: ProductionFROM node:18-alpine AS productionWORKDIR /appCOPY --from=builder /app/dist ./distCOPY --from=builder /app/package*.json ./RUN npm ci --only=productionEXPOSE 3000CMD ["node", "dist/index.js"]


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

docker build -t yourusername/my-ts-app:v1 .docker push yourusername/my-ts-app:v1


3. Escrevendo manifestos Kubernetes

Para implantar no Kubernetes, serão necessários pelo menos dois recursos: Deployment (gerenciamento de pods) e Service (acesso à aplicação).



deployment.yaml

apiVersion: apps/v1kind: Deploymentmetadata:  name: my-ts-app  labels:    app: my-ts-appspec:  replicas: 2  selector:    matchLabels:      app: my-ts-app  template:    metadata:      labels:        app: my-ts-app    spec:      containers:      - name: app        image: yourusername/my-ts-app:v1        ports:        - containerPort: 3000        env:        - name: PORT          value: "3000"        livenessProbe:          httpGet:            path: /health            port: 3000          initialDelaySeconds: 5          periodSeconds: 10        readinessProbe:          httpGet:            path: /health            port: 3000          initialDelaySeconds: 3          periodSeconds: 5


service.yaml

apiVersion: v1kind: Servicemetadata:  name: my-ts-app-servicespec:  selector:    app: my-ts-app  ports:  - protocol: T                

Blogs

Book Recommendations