- Pipeline CI/CD cloudBuild + GKE.
- Aplicar Certificados SSL/TLS (Let's Ebcrypt) para https.
- Aplicar Istio para Service Mesh.
- Aplicar Prometheus e Grafana.
- Infra com Terraform usando modulos.
- Execute o terraform ou crie um cluster GKE Repositório de IAC
- Instale a CNI ingress-nginx
- Instale a CLI do Istio
- Aplique os arquivos de configuração
- Secrets
- ConfigMaps
- Ingress Controller
- PersistentVolumeClaim
- Instale o cert-manager seguindo a documentação cert-manager.
- Crie o kind ClusterIssuer seguindo: Documentação
- Adicione as configurações de Annotations e spec.tls, ainda seguin a documentação do passo anterior
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: devopslabs
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: nginx
tls:
- hosts:
- meudominio.com.br
secretName: letsencrypt-prod
- Pronto - HTTPS configurado.
-
LINK - Aplique a configuração específica para o Kubernetes, neste projeto GKE.
-
LINK - Instale os componentes base do Istio via Helm
-
LINK - Instale o kiali dashboard
-
LINK - Instale o componente Grafana
-
LINK - Instale o componente Prometheus
-
LINK - Para Tracing instale o Jaeger
-
Após instalar os componentes injete a label no namespace da aplicação.
- Novos pods terão sidecar de proxy do istio, pods existentes precisarão ser recriados.
kubectl label namespace <NomeNamespace> istio-injection=enabled
#Kubectl Grafana
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/grafana.yaml
#Kubectl Prometheus
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/prometheus.yaml
#Kubectl Jaeger-Tracing
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/addons/jaeger.yaml
- Secrets
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
data:
POSTGRES_USER: valor
POSTGRES_PASSWORD: valor
POSTGRES_DB: valor
---
apiVersion: v1
kind: Secret
metadata:
name: catalogo-secret
type: Opaque
data:
DB_HOST: valor
DB_USER: valor
DB_PASSWORD: valor
DB_DATABASE: valor
#Como colocar em base64 para o secret
echo -d 'valor' | base64
- Criar e popular tabela no banco de dados.
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
imagem_id VARCHAR(50),
category VARCHAR(100) NOT NULL,
stars INTEGER CHECK (stars BETWEEN 0 AND 5),
stock INTEGER NOT NULL DEFAULT 0,
num_reviews INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
INSERT INTO products (name, price, imagem_id, category, stars, stock, num_reviews) VALUES
('Computador Gamer XYZ', 2999.99, '1.png', 'computadores', 5, 10, 50),
('Notebook Ultra Fino ABC', 3999.99, 'note.jpg', 'notebooks', 4, 5, 30),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Teclado Mecânico Gamer RGB', 299.99, 'mouse.jpg', 'perifericos', 4, 20, 15),
('Mouse Gamer XYZ - 16000 DPI', 159.99, 'mouse.jpg', 'perifericos', 5, 25, 40),
('Placa de Vídeo GTX 3060', 1999.99, 'placa-mae.jpeg', 'hardware', 5, 8, 60);
- Crie a chave privada:
openssl genrsa -out meudominio.com.br.pem 2048
- Crie a request :
openssl req -new -key meudominio.com.br.key -out meudominio.com.br.csr.pem
- Crie o certificado auto-gerenciado.
openssl x509 -req -days 365 -in meudominio.com.br.csr.pem -signkey meudominio.com.br.pem -out meudonio.com.br.cer.pem