Apis Deprecadas en RKE2
Introducción
Kubernetes es un sistema bastante grande con muchos componentes y colaboradores, por ende va evolucionando conforme pasa el tiempo y muchas veces ciertas funcionalidades deben de ser eliminadas. Eso puede ser una api, para evitar que un componente pueda inutilizarse, kubernetes sigue una politica de depreciacion para componentes que seran removidos en futuras versiones.
En cada version de kubernetes hay ciertas apis que son o ya sea deprecadas, es decir aun son soportadas pero ya hay otra api nueva que cumple su funcion y seran eliminadas en una version futura y apis que sera eliminadas totalmente.
Objetivo
Objetivo General:
- El objetivo de este laboratorio es llegar a entender como funciona el proceso de deprecacion de una api en kubernetes, como identificarlas antes de tiempo con herramientas de tercero y como reemplazarlas de ser necesario.
Laboratorio: Apis Deprecadas en RKE2
Antes de comenzar
- Contar con el acceso al ambiente de laboratorio
- Haber realizado la validación de conexión y funcionamiento
- Finalizar las prácticas de laboratorio de las instalaciones de RKE2.
- Esta práctica utiliza cluster (cluster1).
Inicio de laboratorio
Esta práctica se ejecutará con el usuario student en el sistemas lab-X-bastion
student@lab-0-bastion:~>
cluster1 defieniedo la variable KUBECONFIG. Utilizaremos el cluster1.
export KUBECONFIG=/home/student/rke2_conn/cluster1/cluster1_kubeconfig.yaml
-
Pero la mejor forma para encontrar apis deprecadas en nuestro cluster es utilizando herramientas de terceros como por ejemplo pluto que es un cli que nos permite escanear nuestro cluster por apis deprecadas.Pluto.
-
Vamos a proceder con la instalacion del binario de pluto.
wget https://github.com/FairwindsOps/pluto/releases/download/v5.20.3/pluto_5.20.3_linux_amd64.tar.gz tar xvf pluto_5.20.3_linux_amd64.tar.gz chmod +x pluto - Ahora que tenemos pluto instalado vamos a ejecutar un comando para verificar los recursos de nuestro cluster.
Deberia de decirnos que no tenemos recuross deprecados, debido a que estamos en un cluster que se instalo con las versiones mas recientes de rke2.
./pluto detect-api-resources -owide - Para mostar el funcionamiento de pluto vamos a simular la creacion de un recurso ingress que fue deprecado en una version anterior de kubernetes.
Vamos a crear un nuevo archivo llamado
ingress.yamlcon el siguiente contenido.Este ingress utiliza el api extensions/v1beta1 que esta deprecada , entonces pluto nos permite revisar si esta api ya fue deprecada. En este ambiente de laboratorio, no es posible crear este recurso, ya que ha sido eliminado en versiones anteriores de Kubernetes y ya no se encuentra disponible.apiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress namespace: default annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: example.com http: paths: - path: / backend: serviceName: example-service servicePort: 80 - Vamos a revisar con pluto si ya esta deprecada con el siguiente comando.
La salida sera la siguiente
./pluto detect ingress.yamlNAME KIND VERSION REPLACEMENT REMOVED DEPRECATED REPL AVAIL example-ingress Ingress extensions/v1beta1 networking.k8s.io/v1 true true true - Una funcion que nos brinda pluto es la de definir versiones de kubernetes en especifico, por ejemplo tomemos el mismo ejemplo del ingress, este fue removido en la version 1.22.0 de kubernetes , entonces tomemos el hipotetico que tenemos un cluster en 1.19.x y queremos subirlo a 1.21.0 , pero queremos saber si el ingress sera removido, utilizamos el siguiente comando.
La salida sera la siguiente.
./pluto detect ingress.yaml --target-versions k8s=v1.21.0Podemos ver que en esta version nuestro ingress esta deprecado, pero no ha sido eliminado, por lo cual lo podriamos seguir usando. Esta es una muy buena practica a la hora de acutalizar versiones de kubernetes.NAME KIND VERSION REPLACEMENT REMOVED DEPRECATED REPL AVAIL example-ingress Ingress extensions/v1beta1 networking.k8s.io/v1 false true true