/LINUXtips-giropops-senhas

Projeto Prático - Programa Intensivo em Containers e Kubernetes

Primary LanguageHCLGNU General Public License v3.0GPL-3.0

Projeto Prático Programa Intensivo em Containers e Kubernetes - Desenvolvimento e Otimização Segura de Aplicações Kubernetes

O objetivo deste projeto é criar e implementar uma aplicação em Kubernetes, utilizando as melhores práticas de segurança e otimização.

Este projeto utiliza como base a aplicação Giropops-Senhas.

Tecnologias utilizadas

Imagem Docker

Trivy

A aplicação foi construída utilizando como base as imagens Python da Chainguard, que já possuem as melhores práticas de segurança implementadas. Utilizando a técnica de multi-stage build para reduzir o tamanho final e principalmente aumentar a segurança.

Você pode buildar a imagem localmente utilizando os arquivos na pasta 'giropops-senhas' com o comando:

docker build -t <login-docker-hub>/linuxtips-giropops-senhas:{versao} .

E rodar testes de segurança utilizando o Trivy

curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v0.47.0
trivy image <login-docker-hub>/linuxtips-giropops-senhas:{versao}

Ou utilizar a imagem disponível no Docker Hub com a garantia de utilizar sempre a versão mais recente e livre de vulnerabilidades. Já que a imagem é buildada automaticamente sempre que houver qualquer alterção, utilizando o Digestabot para manter a imagem base sempre atualizada, o Trivy para verificar se a imagem possui alguma vulnerabilidade e o Cosign para assinar a imagem e garantir que ela não foi alterada.

Kubernetes - Técnicas Aplciadas

Como o objetivo deste projeto é aplicar as melhores práticas de segurança e otimização, foram utilizadas as seguintes técnicas:

Kubernetes - Arquitetura

A aplicação foi dividida nos seguintes componentes:

  • giropops-senhas - Responsável por gerar as senhas
  • redis - Responsável por armazenar as senhas
  • locust - Responsável por gerar testes de carga na aplicação
  • ingress-nginx - Responsável por gerar o ingress da aplicação
  • kube-prometheus - Responsável por gerar o dashboard de monitoramento
  • metrics-server - Responsável por gerar métricas de monitoramento
  • zora-dashboard - Responsável por gerar um dashboard de vulnerabilidades

Deploy

O deploy da aplicação pode ser feito utilizando de forma local, utilizando o Kind, ou em um cluster na Oracle Cloud.