Skip to content

NeowayLabs/k8s-ingress-canary-exploration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 

Repository files navigation

Explorando Funcionalidades do Ingress Canary

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

Instalando kubectl

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

Instalando minikube

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

Exemplos

  1. Exemplo bรกsico do ingress canary
  2. Exemplo com canary por header
  3. Exemplo com canary por header em diferentes namespaces
  4. Exemplo com canary e stable por header em diferentes namespaces

Limpando o ambiente

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.

About

A repository to explore and demonstrate the features of Ingress Canary in Kubernetes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published