- VM con Ubuntu 18.04 o similar
- Instalr git (para clonar repositorio)
- Instalr Docker (Para crear imágenes)
- Usuario en Docker Hub
- Crear cluster de Kuberentes
- Instalar y configurar Kubectl
Se inyecta linkerd, para observar el comportamiento.
sudo apt update
sudo apt upgrade -y
Instalar Docker
sudo apt install docker.io -y
Agregar usuario docker para omitir modo root
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
sudo apt install git -y
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
Descargar la última versión
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
Descargar validación en binario (opcional)
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
Validar binario kubectl
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
Instalar kubectl
chmod +x kubectl
mkdir -p ~/.local/bin/kubectl
mv ./kubectl ~/.local/bin/kubectl
Configurar variable de entorno
export PATH=~/.local/bin/kubectl:$PATH
Guardar cambios en variables de entorno si es bash
source ~/.bashrc
Guardar cambios en variables de entorno si es zsh
source ~/.zshrc
Asegurar versión instalada
kubectl version --client
- Crear archivo de configuración por gcloud
gcloud container clusters get-credentials CLUSTER_NAME
- Crear archivo de configuración manualmente
Copiar config
de kubernetes en ~/.kube/
Validar configuración kuberentes
kubectl get nodes
Clonar repositorio del ejemplo
git clone https://github.com/sergioarmgpl/linkerd-workshop.git
cd linkerd-workshop
cd app1
./build.sh <usuario>
cd ..
cd app2
./build.sh <usuario>
Salir de la carpeta del repositorio
cd ..
https://linkerd.io/2.11/getting-started/
Instalar el CLI manualmente
curl --proto '=https' --tlsv1.2 -sSfL https://run.linkerd.io/install | sh
Agregar ~/.linkerd2/bin
a las variables de entorno
export PATH=~/.linkerd2/bin:$PATH
- Guardar cambios en variables de entorno con bash shell
source ~/.bashrc
- Guardar cambios en variables de entorno con zh shell
source ~/.zshrc
Confirmar versión
linkerd version
Verificar cluster Kubernetes
linkerd check --pre
Instalar en cluster
linkerd install | kubectl apply -f -
Verificar cluster Kubernetes para comprobar si ya se instaló todo
linkerd check --pre
Revisar a través de kubectl si tiene todos los servicios disponibles
kubectl -n linkerd get deploy
Tener configurado kubectl en local e instalar linkerd
- Verificar si viz está instalado
linkerd viz check
- Instalar viz y aplicarlo a kubectl
linkerd viz install | kubectl apply -f -
Abrir browser de linkerd dashboard
linkerd viz dashboard
Crear el namespace para construir aplicaciones
kubectl create namespace linkerd-demo
usuario: Usuario de la cuenta Docker Hub
kubectl -n linkerd-demo create deployment apache --image=<usuario>/apache
kubectl -n linkerd-demo expose deployment apache --type=ClusterIP --port=80
kubectl -n linkerd-demo create deployment client --image=<usuario>/client
- Exponer la aplicación localmente (Opcional)
kubectl -n linkerd-demo port-forward svc/apache 8888:80
Inyectar linkerd a las aplicaciones dentro del namespace linkerd-demo
kubectl get -n linkerd-demo deploy -o yaml \
| linkerd inject - \
| kubectl apply -f -
kubectl -n linkerd-demo get deploy
Comandos para controlar el namespace linkerd-demo
linkerd -n linkerd-demo stat deploy
linkerd -n linkerd-demo top deploy
linkerd -n linkerd-demo tap deploy/client
top: permormance tap: ruteo
Instalar flagger con kustomize
kubectl apply -k github.com/weaveworks/flagger/kustomize/linkerd
Hacer rollout
kubectl -n linkerd rollout status deploy/flagger
Crear namespace test
kubectl create ns test && \
kubectl apply -f https://run.linkerd.io/flagger.yml
Comprobar podinfo
kubectl -n test rollout status deploy podinfo
cat <<EOF | kubectl apply -f -
apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
name: podinfo
namespace: test
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: podinfo
service:
port: 9898
analysis:
interval: 10s
threshold: 5
stepWeight: 5
metrics:
- name: request-success-rate
threshold: 99
interval: 1m
EOF
- Abrir namespace
test
- Ubicar
traffic-split
- Entrar en
podinfo-primary
Para visualizar el test canary
kubectl -n test get ev --watch
kubectl -n test set image deployment/podinfo \
podinfod=quay.io/stefanprodan/podinfo:1.7.1
Al desinstalar la demo, se deben de volver a repetir los pasos de la parte 2.
kubectl delete -k github.com/weaveworks/flagger/kustomize/linkerd && \
kubectl delete ns test