Implementación de ingress en Kubernetes#
Crea servicios para direccionar tráfico a los pods#
Normalmente los pods no se acceden directamente en el cluster de Kubernetes, sino que se utilizan servicios que tienen un selector que sirve para buscar algún pod y enviarle el tráfico de red
Utiliza la opción expose
de kubectl
para crear un servicio que apunte a los pods de un deployment especifico
- Repite esta acción para los tres deployments que tienes:
root-nginx
,linux-doc
ytareas-redes
usuario@laptop ~ % kubectl expose deployment root-nginx --port=80
service/root-nginx exposed
usuario@laptop ~ % kubectl expose deployment linux-doc --port=80
service/linux-doc exposed
usuario@laptop ~ % kubectl expose deployment tareas-redes --port=80
service/tareas-redes exposed
Verifica que los servicios hayan sido creados y que apunten al puerto 80
usuario@laptop ~ % kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 1d
root-nginx ClusterIP 10.43.179.184 <none> 80/TCP 60s
linux-doc ClusterIP 10.43.119.249 <none> 80/TCP 40s
tareas-redes ClusterIP 10.43.190.157 <none> 80/TCP 20s
Crea las rutas para dirigir tráfico a los servicios#
Utiliza el archivo recurso-ingress.yaml
para crear un recurso de tipo ingress
que utiliza rutas para exponer los servicios internos del cluster y que estos reciban tráfico
Edita el archivo recurso-ingress.yaml
- Establece las anotaciones
rewrite-target
con el valor/
que significa la raíz del sitio web - Establece la ruta para el host catch-all y apúntala al servicio
root-nginx
en el puerto80
- Establece la ruta para el host
kernel.example.com
y apúntala la raíz del sitio al serviciolinux-doc
en el puerto80
- Establece la ruta para el host
tareas.example.com
y apúntala la raíz del sitio al serviciotareas-redes
en el puerto80
Warning
- Reemplaza
example.com
con tu nombre de dominio
Crea el recurso ingress
utilizando el archivo YAML que editaste
usuario@laptop ~ % kubectl apply -f recurso-ingress.yaml
ingress.networking.k8s.io/ingress-nginx created
Verificar la conectividad a los sitios web#
Puerto TCP#
Verifica que el equipo responda en el puerto 80 TCP
usuario@laptop ~ % nc -vz k3s.example.com 80
Connection to k3s.example.com port 80 [tcp/http] succeeded!
Host default#
Revisa que puedas alcanzar el servicio root-nginx
en la siguiente URL
http://example.com/
Warning
- Reemplaza
example.com
con tu nombre de dominio - Asegúrate de utilizar HTTP para visitar el sitio web
usuario@laptop ~ % curl -vk#L 'http://example.com/' | egrep '</?title>'
* Trying 20.58.191.222:80...
* Connected to example.com (20.58.191.222) port 80 (#0)
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.87.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 26 May 2023 08:01:37 GMT
< Content-Type: text/html
< Content-Length: 592
< Connection: keep-alive
< Last-Modified: Fri, 26 May 2023 07:30:23 GMT
< ETag: "6470600f-250"
< Accept-Ranges: bytes
<
{ [592 bytes data]
######################################################################### 100.0%
* Connection #0 to host example.com left intact
<title>Examen 4 - Redes 2023-2</title>
Visita la misma URL con un navegador web y asegúrate de que se muestre la página de indice del host "catch-all"
Página en Kubernetes mostrada a través de ingress |
---|
![]() |
Sitio web con la documentación del kernel Linux#
Revisa que puedas alcanzar el servicio linux-doc
en la siguiente URL
http://kernel.example.com/
Warning
- Reemplaza
example.com
con tu nombre de dominio - Asegúrate de utilizar HTTP para visitar el sitio web
usuario@laptop ~ % curl -vk#L 'http://kernel.example.com/' | egrep '</?title>'
* Trying 20.58.191.222:80...
* Connected to kernel.tonejito.cf (20.58.191.222) port 80 (#0)
> GET / HTTP/1.1
> Host: kernel.tonejito.cf
> User-Agent: curl/7.87.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 26 May 2023 08:05:05 GMT
< Content-Type: text/html
< Content-Length: 145412
< Connection: keep-alive
< Last-Modified: Fri, 29 Apr 2022 09:36:50 GMT
< ETag: "626bb1b2-23804"
< Accept-Ranges: bytes
<
{ [4096 bytes data]
######################################################################### 100.0%
* Connection #0 to host kernel.example.com left intact
<title>The Linux Kernel documentation — The Linux Kernel documentation</title>
Visita la misma URL con un navegador web y asegúrate de que se muestre el sitio web de la documentación del kernel Linux
Página en Kubernetes mostrada a través de ingress |
---|
![]() |
Sitio web de tareas de la materia#
Revisa que puedas alcanzar el servicio tareas-redes
en la siguiente URL
http://tareas.example.com/
Warning
- Reemplaza
example.com
con tu nombre de dominio - Asegúrate de utilizar HTTP para visitar el sitio web
usuario@laptop ~ % curl -vk#L 'http://tareas.example.com/' | egrep '</?title>'
* Trying 20.58.191.222:80...
* Connected to tareas.tonejito.cf (20.58.191.222) port 80 (#0)
> GET / HTTP/1.1
> Host: tareas.tonejito.cf
> User-Agent: curl/7.87.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Fri, 26 May 2023 08:05:45 GMT
< Content-Type: text/html
< Content-Length: 12443
< Connection: keep-alive
< Last-Modified: Tue, 31 May 2022 01:47:02 GMT
< ETag: "62957396-309b"
< Accept-Ranges: bytes
<
{ [2800 bytes data]
######################################################################### 100.0%
* Connection #0 to host tareas.example.com left intact
<title>Redes - Tareas 2023-2</title>
Visita la misma URL con un navegador web y asegúrate de que se muestre el sitio web de tareas de la materia
Página en Kubernetes mostrada a través de ingress |
---|
![]() |
Danger
- Verifica que TODAS las configuraciones que hiciste estén presentes respués de reiniciar la máquina antes de continuar con la siguiente sección
Note
- Continúa en la siguiente página si pudiste ver las páginas por medio de HTTP con los nombres de dominio utilizando un navegador web
http://example.com/
http://kernel.example.com/
http://tareas.example.com/
- Reemplaza
example.com
con tu nombre de dominio
⇦ | ⇧ | ⇨ |
---|---|---|
Página anterior | Arriba | Página siguiente |