feat(aula-14): adicionar Istio Traffic Splitting com canary deployment
- Instala Istio (base + istiod + ingressgateway) - Configura Kiali e Jaeger para observabilidade - Deploy de app-backend v1 e v2 com traffic splitting 90/10 - Integra com Victoria Metrics da aula-12 - Inclui teste-stress.sh para validar distribuição de tráfego - Tráfego externo passa pelo Istio Gateway via NGINX Ingress
This commit is contained in:
6
aula-14/app-backend/v1/Dockerfile
Normal file
6
aula-14/app-backend/v1/Dockerfile
Normal file
@@ -0,0 +1,6 @@
|
||||
FROM node:24-alpine
|
||||
WORKDIR /app
|
||||
COPY app.js .
|
||||
EXPOSE 3000
|
||||
USER node
|
||||
CMD ["node", "app.js"]
|
||||
32
aula-14/app-backend/v1/app.js
Normal file
32
aula-14/app-backend/v1/app.js
Normal file
@@ -0,0 +1,32 @@
|
||||
const http = require("http");
|
||||
|
||||
const MAX_REQUESTS = parseInt(process.env.MAX_REQUESTS) || 5;
|
||||
let requestCount = 0;
|
||||
let frozen = false;
|
||||
|
||||
const server = http.createServer((req, res) => {
|
||||
if (frozen) {
|
||||
return;
|
||||
}
|
||||
|
||||
requestCount++;
|
||||
console.log(`[v1] request ${requestCount}/${MAX_REQUESTS}`);
|
||||
|
||||
if (requestCount >= MAX_REQUESTS) {
|
||||
frozen = true;
|
||||
console.log("[v1] Aplicação travou");
|
||||
}
|
||||
|
||||
if (req.url === "/health") {
|
||||
res.writeHead(200);
|
||||
res.end("ok");
|
||||
return;
|
||||
}
|
||||
|
||||
res.writeHead(200);
|
||||
res.end(`v1 - Request ${requestCount}\n`);
|
||||
});
|
||||
|
||||
server.listen(3000, () => {
|
||||
console.log(`[v1] Porta 3000 (trava após ${MAX_REQUESTS} requests)`);
|
||||
});
|
||||
Reference in New Issue
Block a user