use minikube kubectl helm - juancamilocc/virtual_resources GitHub Wiki

Use of Minikube with Kubectl and Helm

Esto se ejecutó sobre una maquina con las siguientes caracterisiticas.

Feature Value
OS Used Ubuntu 20.04 LTS
vCPU 4
RAM (GB) 8
Disk (GB) 60
Home user ubuntu

Prerequisitos

  • Docker y Docker compose
  • Minikube
  • Kubectl
  • Helm chart

Primero se ejecuta un sudo apt-get update y upgrade para actualizar la maquina.

Instalación de Docker y Docker Compose

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common net-tools
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Una vez instalado Docker, se ejecuta el siguiente comando para evitar el uso de sudo y hacer más sencillo su uso.

sudo groupadd docker
sudo usermod -aG docker $USER
exec "$SHELL"

Para verificar que quedo bien instalado.

docker ps -a
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Nota: En caso de aparecer error, reiniciar la sesion y volver a probar.

Instalación Minikube, con driver docker

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
minikube start --driver=docker

Para verificar funcionamiento.

minikube status
#minikube
#type: Control Plane
#host: Running
#kubelet: Running
#apiserver: Running
#kubeconfig: Configured

Instalación de Kubectl

sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl

Instalación de Helm

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

Verificar instalacion.

helm version
#version.BuildInfo{Version:"v3.10.2", GitCommit:"50f003e5ee8704ec937a756c646870227d7c8b58", GitTreeState:"clean", GoVersion:"go1.18.8"}

Instalación de chart kube-prometheus-stack

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack --namespace prometheus --create-namespace --wait

Nota: El ultimo comando puede tardar algunos minutos.

Verificamos los pods.

kubectl get pods -n prometheus
#NAME                                                     READY   STATUS    RESTARTS      AGE
#alertmanager-prometheus-kube-prometheus-alertmanager-0   2/2     Running   1 (49s ago)   65s
#prometheus-grafana-9b686f8d4-gb8t8                       3/3     Running   0             76s
#prometheus-kube-prometheus-operator-67b9b6866c-bqxkv     1/1     Running   0             76s
#prometheus-kube-state-metrics-56b85865-wrnq7             1/1     Running   0             76s
#prometheus-prometheus-kube-prometheus-prometheus-0       2/2     Running   0             65s
#prometheus-prometheus-node-exporter-l2mpw                1/1     Running   0             76s

Instalación de chart de mongodB

helm repo add my-repo https://charts.bitnami.com/bitnami
helm install mongodb my-repo/mongodb --namespace mongodb --create-namespace --wait

Verificamos el pod.

kubectl get pods -n mongodb
#NAME                       READY   STATUS    RESTARTS   AGE
#mongodb-68c5cf6564-gws79   1/1     Running   0          62s

Por último podemos entrar al dashboard de nuestro cluster de kubernetes y ver de forma mas didactica nuestros recursos.

Para ello ejecutamos.

minikube dashboard

Nota: Este proceso puede tardar algunos minutos cuando es ejecutado por primera vez.

Debe mostrar un mensaje como el siguiente.

🤔  Verifying dashboard health ...
🚀  Launching proxy ...
🤔  Verifying proxy health ...
🎉  Opening http://127.0.0.1:32809/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
👉  http://127.0.0.1:32809/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

Allí nos indica la dirección sobre la que se esta corriendo el dashboard, ingresamos a nuestro navegador.

Dashboard minikube

En caso de tener una maquina virtual sobre una nube como Azure o AWS, es necesario realizar un tunel ssh para traer dicho puerto y poder visualizar el dashobard.

ssh minikube@<ip_maquina_virtual> -L <port_dashboard>:localhost<port_dashboard>