pabloqpacin / k8s-proper

Kubernetes + Vagrant,Ansible,Terraform....
0 stars 0 forks source link

k8s-proper

about

repo

setup ok info
01_jotelulu_cluster YES 3 vms + k8s script
02_cluster_nfs* YES 4 vms + ansible NFS + k8s script + Helm dashboards
03_private_registry

(*) Demo nfs_wordpress solo funciona en rama legacy/nfs_wordpress por la configuración de NFS en setup/

todo


01_jotelulu_cluster

Mejor el 02 directamente! - Lo primero es cambiar la configuración de red de virtualbox en el anfitrión si es Linux ```bash bash scripts/host_vbox_network.sh ``` - Iniciamos el cluster. ~~Cuando las máquinas estén creadas~~ Tras ejecutar los scripts, hacemos un snapshot para restaurar por si acaso. ```bash cd 01_jotelulu_cluster vagrant up vagrant snapshot list # vagrant snapshot push # vagrant snapshot pop ``` - Accedemos al `host01`, que será el master o controlplane. Ejecutamos el script (tardará unos minutos) y nos aseguramos de no perder de vista el token para el `join`. Controlamos que kubernetes se despliegue sin errores. ```bash vagrant ssh host01 { sudo -i bash /opt/k8s-jotelulu.sh # Copiamos el token a otro doc o abrimos otra pane en tmux. NO PERDER EL TOKEN. watch kubectl get nodes -o wide watch kubectl -n kube-system get pods -o wide } ``` ```log kubeadm join 10.0.0.248:6443 --token gukd69.h25y9i8r1xja681h \ --discovery-token-ca-cert-hash sha256:66d0e19bef12dda7eaadef4e1c7b43713b0167f131e1bec8c479b61d23a46d08 ``` - Nos conectamos al segundo y tercer nodo, ejecutamos el script y cuando termine introducimos el token que se generó previamente. No perdemos de vista los comandos `watch` en el `host01`. ```bash vagrant ssh host02 { sudo -i bash /opt/k8s-jotelulu.sh # INTRODUCIMOS EL TOKEN } vagrant ssh host03 { sudo -i bash /opt/k8s-jotelulu.sh # INTRODUCIMOS EL TOKEN } ``` - Detenemos las vms y ~~renovamos~~ creamos snapshots. Cuando queramos restaurarlas, pasamos la flag `--no-delete` para mantener la snapshot (ya que este es un estado ideal, cluster limpico... *y totalmente operativo sin conflictos de red ni nada...*) ```bash vagrant halt vagrant snapshot push vagrant snapshot list # vagrant halt && \ # vagrant snapshot pop --no-delete ```

02_cluster_nfs

Levantar entorno

bash scripts/host_vbox_network.sh
cd 02_cluster_nfs
vagrant up

Crear cluster Kubernetes

vagrant ssh host01
{
    sudo -i
    bash /opt/k8s-jotelulu.sh
    # Copiamos el token a otro doc o abrimos otra pane en tmux. NO PERDER EL TOKEN.

    watch kubectl get all --all-namespaces
    watch kubectl get nodes -o wide
}
kubeadm join 10.0.0.248:6443 --token 3oliin.jmfnmtkvyn6dydl3 \
        --discovery-token-ca-cert-hash sha256:32e92228a7b899d7a30c005ecff12c34764ac876ebe351d7be63ce69fb86a92c
vagrant ssh host02
{
    sudo -i
    bash /opt/k8s-jotelulu.sh
    # INTRODUCIMOS EL TOKEN
    exit
}

vagrant ssh host03
{
    sudo -i
    bash /opt/k8s-jotelulu.sh
    # INTRODUCIMOS EL TOKEN
    exit
}
vagrant halt

vagrant snapshot push
vagrant snapshot list

# vagrant snapshot pop --no-delete --provision

vagrant up

Habilitar dashboards

vssh host01
{
    bash /opt/helm_dashboards.sh
    cat ~/bearer_token
}
xdg-open http://10.0.0.48:8080
xdg-open http://10.0.0.48:8443      # + bearer_token

Demos

prueba_webapp.sh

vagrant ssh host01
{
  sudo -i
  bash /opt/prueba_webapp.sh

  # kubectl get svc web-svc
  WEBAPP_PORT=$(kubectl get svc web-svc -o jsonpath='{.spec.ports[0].nodePort}')

  # kubectl delete -f ~/k8s/sondas/sonda-http.yaml
}

# xdg-open http://10.0.0.248:30002
xdg-open http://10.0.0.248:${WEBAPP_PORT}

wordpress-mysql_pv-pvc-cm-svc-deploy.yaml

vagrant ssh hostnfs
{
  sudo -i
  watch tree /var/datos
}

vagrant ssh host01
{
  sudo -i
  # sed -i 's/wordpress:4.8-apache/wordpress:6.2-apache/' /opt/word*.yaml
  # sed -i 's/mysql:5.6/mysql:8.0/' /opt/word*.yaml

  kubectl apply -f /opt/wordpress-mysql_pv-pvc-cm-svc-deploy.yaml
  watch kubectl get all

  # kubectl get svc wordpress
  WP_PORT=$(kubectl get svc wordpress -o jsonpath='{.spec.ports[0].nodePort}')
}

# xdg-open http://10.0.0.248:31636
xdg-open http://10.0.0.248:${WP_PORT}
  # Wordpress web GUI installation wizard
  # site==foo, name==bar, pass==ORnFH7IMEkDa$6AB4Z, email==foo@bar.com

restauración

vagrant halt && \
vagrant snapshot pop --no-delete

# Verificar cluster operativo antes de nuevas operaciones
vagrant ssh host01
{
  watch kubectl get pods --all-namespaces
}

03_private_registry