Implantação de JavaScript 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

Introdução: Por que implantar JavaScript no Kubernetes?

\n\n

O desenvolvimento web moderno é impensável sem conteinerização. Se você programa em JavaScript (Node.js) e quer que sua aplicação funcione de forma estável, escale automaticamente e seja tolerante a falhas — o Kubernetes (K8s) se tornará seu melhor amigo.

\n\n

Kubernetes é uma plataforma de orquestração de contêineres. Ela gerencia a implantação, o escalonamento e a operação de suas aplicações. Neste guia, abordaremos a implantação básica de uma aplicação Node.js simples no Kubernetes. Você aprenderá como empacotar o código em uma imagem Docker, criar um Pod, Service e Deployment.

\n\n

O artigo é voltado para iniciantes. Pressupõe-se que você já tenha Docker e Minikube instalados (ou acesso a um cluster K8s).

\n\n

Passo 1: Preparação da aplicação Node.js e da imagem Docker

\n\n

Para começar, vamos criar uma aplicação web simples com Express. Ela responderá a requisições HTTP.

\n\n

1.1. Código da aplicação (app.js)

\n\n

Crie o arquivo app.js:

\n\n
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n  res.send('Olá do Kubernetes!');\n});\n\napp.listen(PORT, () => {\n  console.log(`Servidor rodando na porta ${PORT}`);\n});\n
\n\n

1.2. Arquivo package.json

\n\n

Crie o package.json:

\n\n
{\n  "name": "k8s-node-app",\n  "version": "1.0.0",\n  "main": "app.js",\n  "scripts": {\n    "start": "node app.js"\n  },\n  "dependencies": {\n    "express": "^4.18.2"\n  }\n}\n
\n\n

1.3. Dockerfile

\n\n

Agora, crie o Dockerfile para construir a imagem:

\n\n
FROM node:18-alpine\n\nWORKDIR /usr/src/app\n\nCOPY package*.json ./\nRUN npm install\n\nCOPY . .\n\nEXPOSE 3000\n\nCMD ["node", "app.js"]\n
\n\n

1.4. Construção e envio da imagem

\n\n

Execute os comandos:

\n\n
docker build -t my-node-app:v1 .\n
\n\n

Se você estiver usando Minikube, construa a imagem dentro do ambiente dele:

\n\n
minikube image build -t my-node-app:v1 .\n
\n\n

Ou envie a imagem para o Docker Hub/qualquer registry e especifique-a no manifesto.

\n\n

Passo 2: Objetos principais do Kubernetes (Pod, Deployment, Service)

\n\n

O Kubernetes trabalha com objetos. Para a implantação, precisaremos de três principais:

\n\n
    \n
  • Pod — a menor unidade, um ou mais contêineres.
  • \n
  • Deployment — gerencia os Pods, garante escalonamento e atualizações.
  • \n
  • Service — ponto de acesso estável aos Pods (geralmente via ClusterIP ou NodePort).
  • \n
\n\n

2.1. Criação do Deployment

\n\n

Crie o arquivo deployment.yaml:

\n\n
apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: node-app-deployment\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: node-app\n  template:\n    metadata:\n      labels:\n        app: node-app\n    spec:\n      containers:\n      - name: node-app\n        image: my-node-app:v1\n        ports:\n        - containerPort: 3000\n        env:\n        - name: PORT\n          value: "3000"\n
\n\n

Explicação:

\n
    \n
  • replicas: 3 — executaremos 3 cópias da aplicação para tolerância a falhas.
  • \n
  • selector e labels — vinculam o Deployment aos Pods.
  • \n
  • image — o nome da sua imagem Docker.
  • \n
\n\n

2.2. Criação do Service

\n\n

Crie o arquivo service.yaml para acessar a aplicação:

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  name: node-app-service\nspec:\n  selector:\n    app: node-app\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 3000\n  type: NodePort\n
\n\n

O que está acontecendo aqui:

\n
    \n
  • O Service redireciona o tráfego da porta

Blogs

Book Recommendations