Posted on: February 15, 2023 04:53 PM
Posted by: Renato
Views: 666
Implantação com um clique: hospede Jenkins com segurança com Nginx e SSL com Letsencrypt usando o Docker Compose
Você deseja implantar uma instância segura do Jenkins com um proxy e suporte a SSL? Não procure mais! Neste tutorial, iremos guiá-lo através do processo de configuração do Jenkins com proxy Nginx e SSL usando Letsencrypt e Docker Compose. Seja você um desenvolvedor que deseja automatizar seu pipeline de CI/CD ou um administrador de sistema que deseja gerenciar sua infraestrutura, este tutorial o ajudará. Com apenas algumas etapas simples, você estará pronto para usar uma instância Jenkins totalmente funcional em pouco tempo. Então vamos começar!
Por que você precisa colocar Jenkins atrás de um proxy reverso Nginx
Existem várias razões pelas quais você pode querer colocar Jenkins atrás de um proxy reverso Nginx. Um dos principais motivos é melhorar a segurança da sua instância do Jenkins. Ao colocar o Jenkins atrás de um proxy Nginx, você pode adicionar uma camada extra de proteção ao seu servidor Jenkins. O Nginx pode ser configurado para bloquear certos tipos de tráfego, como solicitações maliciosas ou métodos HTTP vulneráveis, o que pode ajudar a evitar ataques à sua instância do Jenkins. Além disso, usar um proxy reverso Nginx permite configurar facilmente o SSL para sua instância Jenkins, o que é essencial para criptografar o tráfego entre o servidor Jenkins e os clientes. Isso pode ajudar a proteger dados confidenciais, como senhas e chaves de API, de serem interceptados por terceiros. Geral,
Pré-requisitos :
- Docker e Docker Compose instalados em sua máquina
- Um nome de domínio apontado para o endereço IP do servidor
Etapa 1: criar um diretório para o proxy Jenkins e Nginx
Vamos criar um diretório para nossos arquivos proxy Jenkins e Nginx:
mkdir jenkins-nginx
cd jenkins-nginx
Etapa 2: criar um arquivo do Docker Compose
Em seguida, vamos criar um arquivo Docker Compose para definir os containers Jenkins e Nginx:
nano docker-compose .yml
Cole o seguinte conteúdo no arquivo:
versão: '3.7'
serviços:
jenkins:
imagem: jenkins/jenkins:lts
container_name: jenkins
restart: sempre
volumes:
- jenkins_data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
ambiente :
- VIRTUAL_HOST=${VIRTUAL_HOST}
- LETSENCRYPT_HOST=${LETSENCRYPT_HOST}
- LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL}
- VIRTUAL_PORT=8080
redes:
- jenkins
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
restart: sempre
portas:
- "80:80"
- "443:443"
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- cert:/etc/nginx/certs
- /var/run/docker.sock:/tmp/docker.sock:ro
redes:
- jenkins
acme-companion:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: acme-companion
reiniciar: sempre
ambiente:
- NGINX_PROXY_CONTAINER=nginx-proxy
- NGINX_DOCKER_GEN_CONTAINER=nginx-proxy
- NGINX_DOCKER_GEN_NETWORK=jenkins_default
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- cert:/etc/nginx/certs
- /var/run/ docker.sock:/var/run/docker.sock
depende:
- redes nginx-proxy : - volumes jenkins : jenkins_data: conf: vhost: html: cert: redes: jenkins: driver: ponte
No arquivo Docker Compose acima, definimos três serviços:
- Jenkins : Este é o contêiner Jenkins que executará o servidor Jenkins.
- Proxy Nginx : Este é o contêiner do proxy Nginx que atuará como um proxy reverso para o Jenkins.
- Letsencrypt-nginx-proxy-companion : Este é um contêiner que ajuda a gerar e renovar certificados SSL para nosso domínio usando Letsencrypt.
Também definimos alguns volumes e redes que serão utilizados pelos containers.
Etapa 3: criar um arquivo .env
Em seguida, vamos criar um arquivo .env para armazenar nossas variáveis de ambiente:
nano . ambiente
Cole o seguinte conteúdo no arquivo, substituindo your-domain.com
pelo seu nome de domínio real:
VIRTUAL_HOST =seu-dominio.com
LETSENCRYPT_HOST =seu-dominio.com
LETSENCRYPT_EMAIL [email protected]
Etapa 4: iniciar os contêineres
Agora, podemos iniciar os contêineres Jenkins, proxy Nginx e Letsencrypt usando o seguinte comando:
docker-compose up -d
Isso puxará as imagens necessárias e iniciará os contêineres em segundo plano. Você pode verificar o status dos contêineres usando o seguinte comando:
docker-compose ps
Etapa 5: conclua a configuração do Jenkins
Depois que o contêiner Jenkins estiver funcionando, você poderá concluir a configuração abrindo seu nome de domínio em um navegador da web. Você verá o assistente de configuração do Jenkins, que o guiará pelo restante do processo de configuração.
Obtenha a senha do administrador do Jenkins:
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
Conclusão:
Neste tutorial, mostramos como implantar Jenkins facilmente com proxy Nginx e SSL pronto com Letsencrypt usando docker-compose. Essa configuração permite que você acesse Jenkins facilmente usando seu nome de domínio e garante que todo o tráfego seja criptografado usando SSL. Espero que você tenha achado este tutorial útil e que tenha conseguido configurar o Jenkins com sucesso em seu servidor.
Github: https://github.com/lucenarenato/one-click-jenkins-deployment
Fonte: https://itnext.io/one-click-deployment-securely-host-jenkins-with-nginx-and-ssl-with-letsencrypt-using-docker-1303b06c3369
Donate to Site
Renato
Developer