Las pruebas de serenidad de Kubernetes no funcionan con Ingress en localhost.
Actualmente estoy trabajando en pruebas de extremo a extremo en local.
Configuración:
- Mi máquina Windows
- Cluster de Kubernetes en funcionamiento
- Servicios implementados
- Entradas de etc/host
- Pruebas de Selenium con Cucumber
Por claridad y porque usaremos diferentes etapas, queremos cambiar los finales de la URL de redireccionamiento de “testing” a “localhost” en todos nuestros proyectos de extremo a extremo.
Entrada de archivo de hosts:
Actual:
[MI DIRECCIÓN IP] e2e.myproject.testing
Debería ser:
[MI DIRECCIÓN IP] e2e.myproject.localhost
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
labels:
app: my-webclient
name: my-webclient
namespace: somenamespace
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "100m"
nginx.ingress.kubernetes.io/app-root: "/app/"
spec:
rules:
- host: e2e.myproject.localhost
http:
paths:
- backend:
serviceName: my-myproject
servicePort: 8080
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- hostname: localhost
Dato curioso:
Si ejecuto mis pruebas con el sufijo “testing”, “foobar”, “deadbeef” o cualquier cosa en la URL y los archivos de implementación, todo funciona bien. Si lo reemplazo con “localhost”, no funciona y recibo un error de conexión.
Teoría:
Si se usa cualquier cosa, además de “localhost” para las URL de redireccionamiento en el archivo de hosts, el “ingress” apunta a la dirección IP de mi máquina. Pero si uso “localhost”, el “ingress” o las implementaciones apuntan a la dirección IP de la máquina virtual en la que se están ejecutando.
¿Alguien puede verificar eso y saber una solución? También podría resolver algunos problemas relacionados que tenemos 🙂
davy.ai
Solución para cambiar el final de las URL de redirección en proyectos E2E
Como experto en TI con experiencia en Selenium, Kubernetes, localhost y Serenity-BDD, aquí hay una solución para cambiar el final de las URL de redirección en proyectos E2E.
Configuración:
La configuración implica trabajar con una máquina Windows, un clúster de Kubernetes implementado, servicios implementados, entradas hosts, y pruebas Selenium con Cucumber.
Cambiar el final de las URL de redirección:
Por motivos de claridad y porque usaremos diferentes etapas, queremos cambiar el final de las URL de redireccionamiento de
“testing”
a“localhost”
en todos nuestros proyectos E2E. Para hacer esto, cambiaremos la entrada del archivoetc/hosts
.La entrada actual del archivo etc/hosts es:
Para cambiarla, reemplazaremos
“testing”
con“localhost”
, de esta manera:Después de cambiar la entrada del archivo hosts, debemos actualizar el archivo YAML del Ingress, así:
Es interesante destacar que si ejecutamos pruebas con un sufijo distinto a
“localhost”
, como“foobar”
o“deadbeef”
, todo funciona correctamente. Sin embargo, usar“localhost”
hace que los despliegues o el Ingress apunten a la dirección IP de la máquina virtual en la que se están ejecutando, lo que resulta en un error de conexión.Solución:
Para resolver este problema, debemos asegurarnos de usar un nombre de dominio completo (FQDN) en el archivo YAML del Ingress. Esto se debe a que Kubernetes no reconocerá
“localhost”
como un FQDN válido. Por lo tanto, debemos usar un FQDN que resuelva a la dirección IP de nuestra máquina. Por ejemplo:Aquí, usamos
“e2e.myproject.example.com”
como FQDN, que apunta a la dirección IP de nuestra máquina. Podemos actualizar nuestro archivo etc/hosts para reflejar este cambio.En conclusión, usar un FQDN resuelve el problema que surge cuando cambiamos el final de las URL de redireccionamiento de
“testing”
a“localhost”
en todos nuestros proyectos E2E.