Skip to content

Commit

Permalink
feat: adiciona metric server no eks e kustomize
Browse files Browse the repository at this point in the history
  • Loading branch information
StuxxNet authored and ramon.silveira-borges@telekom.com committed Dec 6, 2023
1 parent 18ac652 commit 309f575
Show file tree
Hide file tree
Showing 18 changed files with 160 additions and 15 deletions.
61 changes: 55 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ EKSCTL_CONFIG := configs/eksctl/config.yaml
KUBERNETES_LINT_CONFIG := configs/kubelinter/kubelinter-config.yaml
DOCKER_LINT_CONFIG := configs/hadolint/hadolint-config.yaml

METRICS_SERVER_RELEASE := metrics-server
METRICS_SERVER_NAMESPACE := kube-system
METRICS_SERVER_CHART_VALUES_EKS := configs/helm/metric-server/values-eks.yml

INGRESS_RELEASE := ingress-nginx
INGRESS_NAMESPACE := ingress-nginx
INGRESS_CHART_VALUES_EKS := configs/helm/ingress-nginx-controller/values-eks.yaml
Expand All @@ -23,8 +27,10 @@ KUBE_PROMETHEUS_STACK_CHART_LOCAL_VALUES := configs/helm/kube-prometheus-stack/v
KUBE_PROMETHEUS_STACK_CHART_EKS_VALUES := configs/helm/kube-prometheus-stack/values-eks.yml

GIROPOPS_SENHAS_ROOT := giropops-senhas
GIROPOPS_SENHAS_MANIFESTS := ${GIROPOPS_SENHAS_ROOT}/manifests
GIROPOPS_SENHAS_LOCAL := ${GIROPOPS_SENHAS_ROOT}/manifests/overlays/kind
GIROPOPS_SENHAS_EKS := ${GIROPOPS_SENHAS_ROOT}/manifests/overlays/eks
GIROPOPS_SENHAS_DOCKERFILE := ${GIROPOPS_SENHAS_ROOT}/Dockerfile
GIROPOPS_SENHAS_NAMESPACE := giropops-senhas

##------------------------------------------------------------------------
## Carrega .env
Expand Down Expand Up @@ -80,6 +86,24 @@ delete-ingress-eks: # Realiza a deleção do ingress no EKS
helm uninstall ${INGRESS_RELEASE} -n ${INGRESS_NAMESPACE}
kubectl delete ns ${INGRESS_NAMESPACE}

##------------------------------------------------------------------------
## Comandos do Metrics Server
##------------------------------------------------------------------------
deploy-metrics-server: # Realiza a instalação do Metrics Server no EKS
helm repo add metrics-server https://kubernetes-sigs.github.io/metrics-server/
helm repo update
helm upgrade -i ${METRICS_SERVER_RELEASE} -n ${METRICS_SERVER_NAMESPACE} metrics-server/metrics-server \
--values ${METRICS_SERVER_CHART_VALUES_EKS} \
--wait \
--atomic \
--debug \
--timeout 3m \
--create-namespace

delete-metrics-server: # Remove a instalação do Metrics Server no EKS
helm uninstall ${METRICS_SERVER_RELEASE} -n ${METRICS_SERVER_NAMESPACE}
kubectl delete ns ${METRICS_SERVER_CHART_VALUES_EKS}

##------------------------------------------------------------------------
## Comandos do Redis
##------------------------------------------------------------------------
Expand Down Expand Up @@ -167,21 +191,26 @@ push-image-dockerhub-ci: # Realiza o push da imagem para o Dockerhub - Som
docker push ${DOCKERHUB_USERNAME}/giropops-senhas-python-chainguard:${GIROPOPS_SENHAS_TAG}
cosign sign --yes --rekor-url "https://rekor.sigstore.dev/" ${DOCKERHUB_USERNAME}/giropops-senhas-python-chainguard:${GIROPOPS_SENHAS_TAG}

deploy-giropops-senhas: # Realiza a instalação do Giropops
kubectl apply -f ${GIROPOPS_SENHAS_MANIFESTS}
deploy-giropops-senhas-kind: # Realiza a instalação do Giropops no Kind
kubectl create ns ${GIROPOPS_SENHAS_NAMESPACE} || echo "Namespace já existe"
kubectl apply -k ${GIROPOPS_SENHAS_LOCAL}

deploy-giropops-senhas-eks: # Realiza a instalação do Giropops no EKS
kubectl create ns ${GIROPOPS_SENHAS_NAMESPACE} || echo "Namespace já existe"
kubectl apply -k ${GIROPOPS_SENHAS_EKS}

update-giropops-senhas-image: # Realiza o update da image no deployment
kubectl set image -n giropops-senhas deployment/giropops-senhas giropops-senhas=${DOCKERHUB_USERNAME}/giropops-senhas-python-chainguard:${GIROPOPS_SENHAS_TAG}
kubectl rollout restart -n giropops-senhas deployment giropops-senhas

deploy-giropops-senhas-local: # Realiza deploy no EKS
deploy-giropops-senhas-local: # Realiza deploy no Kind
$(MAKE) set-context-kind
$(MAKE) deploy-giropops-senhas
$(MAKE) deploy-giropops-senhas-kind
$(MAKE) update-giropops-senhas-image

deploy-giropops-senhas-aws: # Realiza deploy no EKS
$(MAKE) set-context-eks
$(MAKE) deploy-giropops-senhas
$(MAKE) deploy-giropops-senhas-eks
$(MAKE) update-giropops-senhas-image

delete-giropops-senhas: # Remove a instalação do Giropops
Expand Down Expand Up @@ -210,6 +239,19 @@ deploy-infra-aws: # Sobe a infra completa na AWS
$(MAKE) deploy-ingress-eks
$(MAKE) deploy-kube-prometheus-stack-eks
$(MAKE) deploy-redis-eks
$(MAKE) deploy-metrics-server

##------------------------------------------------------------------------
## Comandos de cleanup
##------------------------------------------------------------------------
clean-local: # Clean do ambiente local
$(MAKE) set-context-kind
$(MAKE) delete-kind-cluster

clean-aws: # Clean do ambiente na AWS
$(MAKE) set-context-eks
$(MAKE) drop-pdb
$(MAKE) delete-eks-cluster

##------------------------------------------------------------------------
## Stress Test
Expand All @@ -218,6 +260,13 @@ deploy-infra-aws: # Sobe a infra completa na AWS
start-loadtest: # Executa loadtest usando K6 enviando os resultados para o Prometheus
k6 run -o experimental-prometheus-rw --tag testid=exec-$(shell date +"%d-%m-%y:%T") loadtest/generate-keys.js

##------------------------------------------------------------------------
## Utils
##------------------------------------------------------------------------
.PHONY: drop-pdb # Dropa os PDBs do cluster
drop-pdb:
bash scripts/drop-pdb.sh

##------------------------------------------------------------------------
## Helper
##------------------------------------------------------------------------
Expand Down
5 changes: 1 addition & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,8 @@ Ele iniciará o stress-test da aplicação usando como base o scrit [generate-ke

## ToDos e Refinos

- [ ] Criar targets de clean;
- [ ] Deploy to Metric Server na AWS;
- [ ] Converter giropops-senhas pra kustomize e ajustar o make-targets;
- [ ] Ajustar overlays do giropops-senhas;
- [ ] Ajustar os values dos helm charts (ingress, images e resources);
- [ ] Ajustar lint no CI que tá quebrando
- [ ] Organizar GitHub Actions;
- [ ] Teste geral de todos os targets;
- [ ] Update da documentação.
Empty file.
49 changes: 49 additions & 0 deletions configs/helm/metric-server/values-eks.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Default values for metrics-server.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

image:
repository: cgr.dev/chainguard/metrics-server
tag: "latest"
pullPolicy: IfNotPresent

replicas: 3

updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1

podDisruptionBudget:
enabled: true
minAvailable: 1

addonResizer:
enabled: false
image:
repository: registry.k8s.io/autoscaling/addon-resizer
tag: 1.8.19
resources:
requests:
cpu: 40m
memory: 25Mi
limits:
cpu: 40m
memory: 25Mi
nanny:
cpu: 0m
extraCpu: 1m
memory: 0Mi
extraMemory: 2Mi
minClusterSize: 100
pollPeriod: 300000
threshold: 5

metrics:
enabled: true

serviceMonitor:
enabled: true
interval: 1m
scrapeTimeout: 10s
4 changes: 0 additions & 4 deletions giropops-senhas/manifests/0. namespace.yml

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ metadata:
namespace: giropops-senhas
spec:
rules:
- host: giropops-senhas.kubernetes.docker.internal
- host: giropops-senhas.svc.cluster.local
http:
paths:
- path: /
Expand Down
10 changes: 10 additions & 0 deletions giropops-senhas/manifests/base/kustomization.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- configmap.yml
- serviceaccount.yml
- deployment.yml
- service.yml
- ingress.yml
- service-monitor.yml
- hpa.yml
File renamed without changes.
8 changes: 8 additions & 0 deletions giropops-senhas/manifests/overlays/eks/ingress.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: giropops-senhas
namespace: giropops-senhas
spec:
rules:
- host: giropops-senhas.aws-cluster.com.br
7 changes: 7 additions & 0 deletions giropops-senhas/manifests/overlays/eks/kustomization.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

patches:
- path: ingress.yml
8 changes: 8 additions & 0 deletions giropops-senhas/manifests/overlays/kind/ingress.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: giropops-senhas
namespace: giropops-senhas
spec:
rules:
- host: giropops-senhas.kubernetes.docker.internal
7 changes: 7 additions & 0 deletions giropops-senhas/manifests/overlays/kind/kustomization.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base

patches:
- path: ingress.yml
14 changes: 14 additions & 0 deletions scripts/drop-pdb.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash

NAMESPACE_LIST=($(kubectl get ns --no-headers | awk -F" " '{print $1}'))

for NAMESPACE in "${NAMESPACE_LIST[@]}"
do
echo "Checando PDB no namespace ${NAMESPACE}"
PDB_LIST=($(kubectl get pdb -n ${NAMESPACE} --no-headers | awk -F" " '{print $1}'))
for PDB in "${PDB_LIST[@]}"
do
echo "Deletando PDB ${PDB} do namespace ${NAMESPACE}"
kubectl delete pdb ${PDB} -n ${NAMESPACE}
done
done

0 comments on commit 309f575

Please sign in to comment.