Implantação de TypeScript no Kubernetes: guia básico para iniciantes

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 para iniciantes

\n\n

O desenvolvimento web moderno é impensável sem conteinerização e orquestração. Se você programa em TypeScript e quer que sua aplicação funcione de forma estável, escale automaticamente e seja tolerante a falhas — o Kubernetes (K8s) será seu melhor amigo. Neste guia, vamos analisar passo a passo como empacotar uma aplicação TypeScript em Docker e implantá-la em um cluster Kubernetes. O material é voltado para iniciantes: sem mágica, apenas exemplos claros e explicações.

\n\n

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

\n\n

Antes de pensar em Kubernetes, é preciso garantir que sua aplicação esteja pronta para funcionar em um contêiner. Vamos criar um servidor HTTP simples com Express e TypeScript.

\n\n

1.1. Inicialização do projeto

\n

Crie uma pasta para o projeto e execute a inicialização:

\n
mkdir my-ts-app && cd my-ts-app\nnpm init -y\nnpm install express\nnpm install -D typescript @types/node @types/express ts-node nodemon
\n\n

1.2. Configuração do TypeScript

\n

Crie o arquivo tsconfig.json:

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

1.3. Código da aplicação

\n

Crie a pasta src e o arquivo index.ts:

\n
import express, { Request, Response } from 'express';\n\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req: Request, res: Response) => {\n  res.json({ message: 'Hello from TypeScript on Kubernetes!' });\n});\n\napp.listen(PORT, () => {\n  console.log(`Server running on port ${PORT}`);\n});
\n\n

1.4. Compilação e execução

\n

Adicione os scripts no package.json:

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

Verifique a execução local: npm run dev e abra http://localhost:3000.

\n\n

2. Conteinerização com Docker

\n\n

O Kubernetes trabalha com contêineres. Precisamos criar uma imagem Docker da nossa aplicação TypeScript.

\n\n

2.1. Dockerfile

\n

Crie o arquivo Dockerfile na raiz do projeto:

\n
FROM node:18-alpine AS builder\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY . .\nRUN npm run build\n\nFROM node:18-alpine AS production\nWORKDIR /app\nCOPY --from=builder /app/dist ./dist\nCOPY --from=builder /app/package*.json ./\nRUN npm ci --only=production\nEXPOSE 3000\nCMD ["node", "dist/index.js"]
\n

Usamos uma compilação multi-estágio: primeiro compilamos o TypeScript, depois criamos uma imagem final leve.

\n\n

2.2. Compilação da imagem

\n
docker build -t my-ts-app:latest .
\n

Verifique localmente:

\n
docker run -p 3000:3000 my-ts-app:latest
\n\n

2.3. .dockerignore

\n

Para não copiar arquivos desnecessários, crie o .dockerignore:

\n
node_modules\ndist\n.git\n*.md
\n\n

3. Implantação no Kubernetes

\n\n

Agora que temos a imagem Docker, podemos passar para o Kubernetes. Para testes locais, recomendo Minikube ou Kind.

\n\n

3.1. Iniciando o Minikube

\n
minikube start --driver=docker\nminikube status
\n\n

3.2. Carregando a imagem no Minikube

\n

Para que o Kubernetes encontre nossa imagem, carregue-a no ambiente do Minikube:

\n
minikube image load my-ts-app:latest
\n\n

3.3. Criando o Deployment

\n

Crie o arquivo deployment.yaml:

\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: my-ts-app-deployment\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: my-ts                

Blogs

Book Recommendations