Esse projeto cria um cluster k8s para experimento da funcionalidade de balancear carga dinamicamente entre dois serviรงos atravรฉs do ingress utilizando a tรฉcnica canary.
Documentaรงรฃo oficial Como funciona o Ingress Nginx do K8s
Estrutura de cรณdigo do Ingress Nginx Controller
Para instalar o kubectl
em uma arquitetura amd64
,
execute esse snippet de cรณdigo:
# Install kubectl binary with curl on Linux
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# Install kubectl
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Test kubectl client
kubectl version --client
Fonte: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux
O minikube pode ser usado para criar um cluster k8s localmente para testar com mais facilidade em um escopo fechado.
Para instalar o minikube execute:
# Instalando minikube localmente
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
Para iniciar o ambiente do minikube execute:
minikube start
๐ minikube v1.33.1 on Ubuntu 22.04
โจ Automatically selected the docker driver
๐ Using Docker driver with root privileges
๐ Starting "minikube" primary control-plane node in "minikube" cluster
๐ Pulling base image v0.0.44 ...
๐ฅ Creating docker container (CPUs=2, Memory=7900MB) ...
๐ณ Preparing Kubernetes v1.30.0 on Docker 26.1.1 ...
โช Generating certificates and keys ...
โช Booting up control plane ...
โช Configuring RBAC rules ...
๐ Configuring bridge CNI (Container Networking Interface) ...
๐ Verifying Kubernetes components...
โช Using image gcr.io/k8s-minikube/storage-provisioner:v5
๐ Enabled addons: storage-provisioner, default-storageclass
๐ Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
Para habilitar o ingress no minikube vamos precisar executar:
minikube addons enable ingress
- Exemplo bรกsico do ingress canary
- Exemplo com canary por header
- Exemplo com canary por header em diferentes namespaces
- Exemplo com canary e stable por header em diferentes namespaces
Para excluir os container do minikube e deixar o ambiente limpo, execute:
minikube delete
๐ฅ Deleting "minikube" in docker ...
๐ฅ Deleting container "minikube" ...
๐ฅ Removing /home/rafael-mateus/.minikube/machines/minikube ...
๐ Removed all traces of the "minikube" cluster.