Skip to content

Ambiente de Laboratorio Kubernetes y Rancher Manager

Revisión de Ambiente Actual

Ubique el URL de su instalación de Rancher Server:

https://rancher.A-B-C-D.nip.io <== Consulte el FQDN correcto de su archivo de inventario.

Este ambiente ha sido instalado recientemente para ustéd, por lo que deberá seleccionar una contraseña para el usuario admin.

Welcome Rancher Server

La contraseña de bootstrap (una contraseña temporal es = admin).

Nota

No utilice contraseñas débiles, ya que esto es fuertemente explotado. Este ambiente está expuesto a internet y usted es el resposable de resguardar este acceso.

Utilice el comando sugerido para generar su contraseña o utilice la constraseña generada por Rancher Server.

  1. Desde una terminal de Linux, ejecute:
    PASSWORD=$(openssl rand -base64 20)
    echo "Su contraseña es: ${PASSWORD}"
    
  2. Utilice esta contraseña para el usuario admin de Rancher Server
  3. Guarde esta contraseña en un lugar seguro, se recomienda utilizar algun gestor de contraseñas.

Ya esta listo para utilizar su nuevo ambiente de Rancher Server

Rancher Server Dashboard

Inventario de Componentes

Deberá obtener la siguiente información y documentarla adecuadamente:

Componente Versión
Kubernetes Server
Kubernetes Client
RKE Version
Cert Manager Helm Chart
Cert Manager App
Rancher Server
Docker Version
OS Version
Kernel Version

Para poder realizar esta tares, debe ubicar su la llave privada entregada en el inicio del curso ubicada en el arcchivo student-#-private_key.pem, en dónde # es su ambiente asignado.

  1. Esta llave debe de ser resguardada adecuadamente, asegurese que cuenta con los permisos adecuados:

    Desde una terminal de Linux, ejecute:

    chmod 0400 student-#-private_key.pem
    
    Si utiliza otro sistema operativo, consulte en la documentación del mismo el procedimiento adecuado.

  2. Establesca una conexión via SSH, utilizando la llave privada y el usuario student, el procedimiento puede varias dependiendo del sistema operativo o cliente de SSH utilizado.

    ssh -i Ubicación_de_llave_student-#-private_key.pem student@IPADDRESS 
    
    Obtenga la información de la dirección ip del inventario

  3. En el ambiente del curso, puede ubicar el directorio utilizado para instalar el cluster en /home/student/devcluster, este cluster ha sido deplegado utilizando el método de RKE. Como el usuario student, ejecute:

    find $HOME/devcluster
    

  4. Defina la variable de entorno KUBECONFIG, para utilizar las credenciales de instalación del cluster.
    export KUBECONFIG=$HOME/devcluster/kube_config_cluster.yml
    

Nota

Estas credenciales son de administrador del cluster, por lo que debe resguardar este archivo adecuadamente y utilizarzo para realizar tareas administrativas en caso que algún otro método de autenticación no esté disponible.

  1. Identique la versión de Kubernetes Server / Client
    kubectl version
    
  2. Identifique la versión de RKE
    cd $HOME/devcluster
    rke version
    cd $HOME
    
  3. Identifique la versión de Cert Manager deplegado
    helm list -A 
    helm list -A |grep cert-manager
    helm status -n cert-manager cert-manager
    
  4. Identifique la versión de Rancher Server deplegado
    helm list -A 
    helm list -A |grep rancher
    helm status -n cattle-system rancher
    
  5. Identifique la versión de componentes del Nodo (Kernel, OS, Docker)
    kubectl get nodes -o wide
    

Aplicar parches de seguridad a Nodos y Proteger versión de Docker-CE

  1. Listar las actualizaciones referentes a Seguridad de su sistema operativo, esto puede varias dependiendo de la distribución que utilice.
    sudo dnf list updates --security 
    
  2. Si existen actualizaciones de Seguridad, apliquelas.

Nota

Toda actualización debe ser previamente validada en un ambiente de DEV/QA, para posteriormente ser promovido a PROD.

  1. Debido a la compatibilidad de la versión de RKE y Docker-CE, es necesario proteger la versión de este paquete, para no interrupmir su funcionamiento en una actualización del sistema operativo. Verifique si existen actualizaciones al paquete de docker-ce. No necesariamente la última versión será compatiable con su ambiente. Consulte la Matriz de Compatibilidad. Y trate de actualizarlo.
    sudo dnf list updates docker-ce 
    sudo dnf install docker-ce 
    

Nota

No permite instalar debido a que el paquete esta protegido utilizando versionlock.

  1. Liste todas las versiones disponibles del paquete docker-ce, únicamente de la versión compatible con esta versión de RKE, debe mantenerse en la versión 24.0.x.

    sudo dnf list  docker-ce --showduplicates|grep 24.0 
    

  2. Identifique la versión mayor de ese listado. Ejemplo:

    docker-ce.x86_64     3:24.0.9-1.el9       docker-ce-stable 
    

  3. Actualice de ser necesario, tome en cuenta que en el ambiente actual no existe una actualiación por seguridad. Por lo que se realizará con fines educativos. Defina la variable con el contenido anterior en el formato adecuado. NOMBRE_PAQUETE+VERSION_PAQUETE = docker-ce-3:24.0.9-1.el9, del ejemplo anterior.
    DOCKER_VERSION=docker-ce-3:24.0.9-1.el9
    sudo dnf versionlock clear docker-ce 
    sudo dnf install ${DOCKER_VERSION} -y 
    sudo dnf versionlock add docker-ce 
    
  4. Opcionalmente puede actualizar los paquetes el sistema operativo, que no son relacionados a seguridad para mejorar la estabilidad del sistema. De ser necesario.
    sudo dnf update -y
    

Nota

Al estar protegido el paquete docker-ce, se puede proceder. Verificar en la documentación del producto los paquetes que son necesarios para proteger, esto puede cambiar entre versiones.

Actualización de Versión de Kubernetes

Se ha identificado, que la versión de su cluster desplegado utilizando RKE, no cumple con las políticas de la organización y deberá actualizar la versión de Kubernetes a la última versión soportada por el binario de rke.

  1. Asegurese de esta conectado como el usuario student
    whoami
    
  2. Defina la variable de entorno KUBECONFIG, para utilizar las credenciales de instalación del cluster.
    export KUBECONFIG=$HOME/devcluster/kube_config_cluster.yml
    
  3. Ingrese al directorio que contiene el archivo de configuración del cluster
    cd $HOME/devcluster/
    
  4. Liste las versiones soportadas de Kubernetes por RKE
    rke config --list-version -a
    
  5. Identifique la última versión soportada
    KUBERNETES_VERSION=$(rke config --list-version -a|sort -rn | head -n1)
    echo ${KUBERNETES_VERSION} # <= Asegurese qué esta versión es la más reciente, para nuestro lab debe ser > v1.28.x
    
  6. Realice una copia de seguridad del archivo de configuración actual
    cp cluster.yml cluster.yml-$(date +%F)
    
  7. Obtenga la versión definida del archivo de configuración del cluster cluster.yml.
    grep ^kubernetes_version cluster.yml 
    
  8. Modifique la versión en el archivo de configuraión cluster.yml y valide el cambio.
    sed -i "s/^kubernetes_version.*/kubernetes_version: ${KUBERNETES_VERSION}/g" cluster.yml
    grep ^kubernetes_version cluster.yml 
    
  9. Aplique el cambio en el cluster
    rke up
    

!!! Nota:

Esta tarea en un cluster de producción, puede tomar mucho timepo. Por lo que es recomendado ejecutarlo desde la linea de comando en una herramienta como ```tmux``` o ```screen```. O realizarlo por medio de algun procedimiento de gitops.
  1. Realice nuevamente la validación del componente de Kubernetes Server y confirme que tenga la versión deseada.
    kubectl version
    kubectl get nodes -o wide
    
  2. La versión de Kubernetes puede mostrarse en la versión deseada, pero algunos componentes podrán estar iniciando debido al cambio de versión. Pueden consultar el estado de todos los pods en un estado diferente a Running.
    kubectl get pods -A |grep -E -v "(Running|Completed)"
    
  3. Espere hasta que terminen de habilitarse todos los componentes y que no aparezca ninguna en la lista del siguiente comando.
    watch 'kubectl get pods -A |grep -E -v "(Running|Completed)" '
    

Nota

En este ambiente solo se cuenta con un nodos el cual tiene el rol de worker y controlplan, por lo que este procedo puede tardar unos minutos. Y durante este tiempo, no podrá acceder a la consola de Rancher Server.

  1. Presione Ctr+C, para detener la ejecución del comando watch.

  2. Ingrese a la consola web de Rancher Server y valide que este funcionando de forma correcta.

  3. Regrese a su directorio personal de trabajo
    cd
    

Refencias

Documento URL
RKE Release https://github.com/rancher/rke/releases