Para empezar ingresamos al Portal de Azure con nuestras credenciales y en "Inicio" a la izquierda vamos a ver los servicios que nos ofrece Azure para desplegar.
Uno de ellos es "Servicios de Kubernetes", clickeamos ahí:
Luego vamos a crear nuestro primer cluster haciendo click en "Agregar" o "Crear Servicio de Kubernetes":
Elegimos nuestra suscripción, creamos un nuevo grupo de recursos o resource group, elegimos el nombre del cluster y la región. Y mas abajo elegimos el tamaño del nodo y la cantidad, este paso es muy importante, porque al definir el tamaño del nodo básicamente estamos eligiendo las especificaciones técnicas (cpu, memoria, disco) que van a tener las maquinas virtuales que van a formar los nodos del cluster y esto no se podrá cambiar después de crearlo. El numero de nodos si se puede cambiar.
En mi caso elijo la maquina virtual mas barata que es la DS2 v2, que tiene un 2 CPU y 7GB de RAM.
Fijense que a la derecha aparecen los precios de las virtuales (Costo Mensual Estimado):
El tamaño que estoy eligiendo DS2_v2 sale 6547 pesos argentinos (estimado mensual) y si bien hay otra que sale la mitad DS1_v2 (3273 pesos) y que trae la mitad del CPU y memoria, no pude elegirla porque el cluster me pedía que los nodos tengan por lo menos 2 CPUs, no estoy seguro si es por mi cuenta o porque, pero había visto que se podían elegir virtuales con un solo CPU, si quieren prueben y va a ser mas barato.
Para esta prueba con la mas barata alcanza, para producción deberíamos analizar bien que pensamos correr en el cluster y definir las características en base a eso, aunque siempre tengamos en cuenta que por la naturaleza del cluster y de Kubernetes podríamos agregar mas nodos momentáneamente para aumentar nuestra capacidad de computo y luego volver atrás. Es una de sus gracias.
Para el resto de las pestañas vamos a dejar las opciones por defecto:
Una vez elegido todo clickeamos en "Revisar y crear". Realiza una validación, clickeamos en "Crear" y comienza a crearlo. Esto demora algunos minutos:
Para conectarnos al cluster y poder ejecutar comandos vamos a la Shell:
Y abajo se nos abrirá la opción de Bash o PowerShell. Vamos con Bash:
Creamos almacenamiento:
Ya tenemos Shell:
Escribimos az y ENTER para ingresar a la Azure Cli::
De todas formas, mi idea no es ejecutar las cosas desde la cli del navegador. Así que vamos a nuestra maquina con Linux para instalarnos todo lo necesario para correr los comandos de Kubernetes directo desde nuestra terminal.
No vamos a ahondar en explicaciones, para eso pueden entrar acá, copiamos y pegamos
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
sudo apt-get update
sudo apt-get install ca-certificates curl apt-transport-https lsb-release gnupg
curl -sL https://packages.microsoft.com/keys/microsoft.asc |
gpg --dearmor |
sudo tee /etc/apt/trusted.gpg.d/microsoft.asc.gpg > /dev/null
AZ_REPO=$(lsb_release -cs)
echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" |
sudo tee /etc/apt/sources.list.d/azure-cli.list
sudo apt-get update
sudo apt-get install azure-cli
az login
Para loguearnos nos hace ingresar a una URL e ingresar un código que nos brinda. Luego vamos a tener que ingresar las credenciales de la cuenta de Azure con la que creamos el cluster. Una vez realizados los pasos quedamos logueados:
Ahora vamos a la ayuda para ver como
az aks --help
Y dice:
install-cli: Download and install kubectl, the Kubernetes command-line tool.
Fácil, ¿no? Solo había que leer ¬¬
Entonces ejecutamos:
install-cli
Nos dice que nos aseguremos que /usr/local/bin/ este en nuestro PATH y como por defecto está en nuestro PATH sabemos que debería funcionar (sino pueden ver como agregarlo aca). Probamos ejecutar el comando en cuestión:
kubectl
Y funciona. Ya podemos ejecutar nuestro primer comando, ¡que nervios! ¬¬
Primero nos posicionamos en nuestro cluster:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
En mi caso:
az aks get-credentials --resource-group MiPrimerCluster --name ArdillasEnLaRedCluster
Ejecutamos:
kubectl get pods
Y vemos que nos dice que no hay PODs en el namespace default, y está bien, porque no tenemos PODs desplegados, solamente NODOS. Si ejecutamos el comando para ver los PODs de todos los namespace:
kubectl get pods -A
Vemos que tampoco hay ninguno.
kube-system es el espacio de nombres (namespace) para aquellos objetos creados por el sistema de Kubernetes, con lo cual se crea por defecto.
Podríamos filtrar por namespace de esta forma:
kubectl get pods -n kube-system
O si queres aprender mucho mas, podes ir a mi posteo para manejar un namespace diferente al default.
Los NODOS, como son independientes del namespace si podemos verlos sin especificarlo:
kubectl get nodes
O también:
kubectl get nodes -n kube-system
Vemos que aparecen 3 que son los que habíamos configurado al crear el cluster.
Bueno, la idea del post era llegar hasta acá, porque de acá en mas se supone que deberías poder hacer todo lo que explique en este post y en este post, pero antes de despedirnos vamos a ejecutar un deploy y exponer un servicio para ver si podemos acceder a traves de la IP publica cosa que no pudimos hacer cuando probamos Minikube.
Creamos el archivo yaml:
sudo nano azure-vote.yaml
Y pegamos este código:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: microsoft/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Ejecutamos el deploy de la aplicación especificando el nombre del manifiesto yaml:
kubectl apply -f azure-vote.yaml
Verificamos si nos expuso el servicio:
kubectl get service azure-vote-front
Vemos que si, que incluso nos dio una IP publica (cosa que con Minikube no).
Probamos el acceso desde terminal:
Con curl:
Con lynx:
Y finalmente, con un navegador convencional como Firefox:
Votamos Gato, y vemos que ganó:
Listo, ya probamos Kubernetes en Azure.
Ahora borramos el cluster para no seguir gastando guita
Borrar cluster:
az group delete --name myResourceGroup --yes --no-wait
En mi caso:
az group delete --name MiPrimerCluster --yes --no-wait
Antes |
Después |
Aclaración para que no se asusten, el gasto fue menor, no lo se exacto, pero calculo que fueron alrededor de 35 pesos argentinos, ¿que haces con 35 pesos argentinos? Instalas Kubernetes en Azure!
Nada mas...
COMPARTI, o te vuelvo a linkear la canción, no lo puedo evitar perdón, es que me da fuerzas para compartir (?).
Te mando un codazo (?).
No hay comentarios:
Publicar un comentario