Skip to content

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

PROJETO DEVOPS LABORATÓRIO

fluxograma

Docker Kubernetes Observability

Sumário


Laboratório DevOps — Jenkins + Docker + Kubernetes + Prometheus (Jolokia)

Este repositório documenta a montagem de um laboratório em 3 etapas:

  1. Docker: Jenkins (imagem oficial) + Jolokia Agent (métricas JVM/Jenkins) com segurança
  2. Kubernetes (kind): implantação via Deployment + Service
  3. Monitoramento: Prometheus + Node Exporter + Jolokia Exporter (com Auth Proxy para Jolokia)

Ambiente:VM Ubuntu 22.04 server (VirtualBox) + Docker + kind + kubectl

Estrutura do repositório

projeto-jenkins/
├─ docker/
│  ├─ Dockerfile
│  ├─ docker-entrypoint.sh
│  └─ jolokia-access.xml
└─ k8s/
   ├─ jenkins.yaml
   ├─ jenkins-mon.yaml
   ├─ prometheus.yaml
   ├─ node-exporter.yaml
   └─ grafana.yaml

Etapa 1 — Docker (Jenkins Oficial + Jolokia)

1) Pré-requisitos

  • Docker instalado e funcionando

2) Arquivos da etapa

Crie/garanta estes arquivos em docker/:

docker/jolokia-access.xml

Policy mínima (somente leitura):

<?xml version="1.0" encoding="utf-8"?>
<restrict>
  <commands>
    <command>read</command>
    <command>list</command>
    <command>version</command>
  </commands>
</restrict>
  • Criação do arquivo no diretório docker/docker-entrypoint.sh
  • Criação do arquivo no diretório docker/Dockerfile

3) Build da imagem

cd docker
docker build -t esig/jenkins-jolokia:2.528.3 .

4) Subir o container (porta 8778 restrita ao localhost)

docker run -d --name jenkins \
  -p 8080:8080 \
  -p 127.0.0.1:8778:8778 \
  -e JOLOKIA_USER=admin \
  -e JOLOKIA_PASSWORD='<SUA_SENHA>' \
  esig/jenkins-jolokia:2.528.3

5) Validar Jenkins

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

6) Validar Jolokia (com autenticação)

  • Sem auth → deve retornar 401:
curl -i http://127.0.0.1:8778/jolokia/version
  • Com auth → deve retornar 200:
curl -u admin:'<SUA_SENHA>' http://127.0.0.1:8778/jolokia/version

Etapa 2 — Kubernetes (Deployment + Service)

  • Cluster Local com Kind

1) Criar cluster

kind create cluster --name esig

2) Carregar a imagem Docker no kind

kind load docker-image esig/jenkins-jolokia:2.528.3 --name esig

3) Aplicar manifestos do Jenkins no cluster

kubectl apply -f k8s/jenkins.yaml
kubectl -n cicd get pods -w
kubectl -n cicd get svc

4) Acessar Jenkins no cluster (port-forward)

  • Se a porta local 8080 estiver ocupada, use 18080.
kubectl -n cicd port-forward svc/jenkins 18080:8080

Acesse:

Etapa 3 — Monitoramento (Prometheus + Jolokia + Node Exporter)

Nesta etapa:

Node Exporter coleta métricas do nó (CPU, memória, disco, rede)

Jolokia Exporter coleta métricas do Jenkins/JVM via Jolokia

Auth Proxy (Nginx sidecar) injeta Authorization no Jolokia (evita falhas e mantém Jolokia protegido)

Prometheus faz scrape de:

node-exporter:9100/metrics

jenkins-metrics:9422/metrics

1) Implementar Prometheus + Node Exporter

kubectl apply -f k8s/prometheus.yaml
kubectl -n monitoring get pods -w

2) Implantar o monitoramento do Jenkins (jenkins-mon + jenkins-metrics)

kubectl apply -f k8s/jenkins-mon.yaml
kubectl -n cicd get pods -w
kubectl -n cicd get svc jenkins-metrics

3) Validar métricas do Jenkins (exporter)

  • Port-forward do service de métricas:
kubectl -n cicd port-forward svc/jenkins-metrics 19422:9422
  • Testar:
curl -s http://127.0.0.1:19422/metrics | head -n 30

4) Validar Prometheus e targets UP

Port-forward do Prometheus:

kubectl -n monitoring port-forward svc/prometheus 19090:9090

Acessar:

Você deve ver como UP:

  • jenkins-jolokia (scrape em jenkins-metrics:9422/metrics)
  • node-exporter (scrape em node-exporter:9100/metrics)
image

5) Grafana

image

Boas Práticas de Segurança Aplicada

Porta 8778 protegida: no Docker foi mapeada apenas para 127.0.0.1

Basic Auth habilitado no Jolokia

PolicyRestrictor com comandos mínimos (read, list, version)

No Kubernetes, Prometheus não acessa 8778 diretamente:

usa jenkins-metrics:9422 (exporter)

Jolokia fica interno no Pod

Auth Proxy Nginx: injeta Authorization e evita expor credenciais em URL

About

No description, website, or topics provided.

Resources

Stars

11 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages