miércoles, 1 de noviembre de 2017

Ingress en Google Container Engine [2]


Viene de Medium power by Christopher Grant


Parte 1: Discusión en la que se explica cómo usaría un Global clúster con Google LoadBalancer for Ingress.

Código fuente


El código fuente para este tutorial se puede encontrar en GitHub aquí

Allí encontrarás:
- / app - el código de las aplicaciones utilizadas en la demostración
- / cluster - una única secuencia de comandos para aprovisionar un clúster federado
- / deploy - los archivos yaml k8s que usaremos en la demo

Configurar el clúster

He cubierto esto en detalle en Global Kubernetes en 3 pasos y lo he vuelto a proporcionar en el archivo README. Este artículo es más sobre cómo usarlo, así que no entraré en el proceso de configuración aquí.

Implementar las aplicaciones y el Ingress


Primero, toma el repositorio y clónalo localmente
git clone https://github.com/cgrant/global-k8s-ingress-with-gce-controller
cd global-k8s-ingress-with-gce-controller

Para este ejemplo, he proporcionado ejemplos de aplicaciones de Python en el directorio  /apps. Los container esta construidos prebuilt y también los publiqué en el Docker Hub. Debería poder personalizar el código o cambiar sus propias imágenes.

Implementa las aplicaciones

kubectl apply -f deploy/app-with-context.yaml
kubectl apply -f deploy/simple-echo.yaml

Como se menciona en la Parte 1, deberá establecer explícitamente los valores de NodePort en la Implementación. Ya los he configurado para `30048` y` 30050`

Revise la página de cargas de trabajo en Google Cloud Console


Crea una IP global

Una vez que se despliegan los módulos de aplicaciones, podemos ver cómo los une con un Ingress.

Lo primero que debemos hacer es crear una IP global para Global LoadBalancer.

Esto es crítico para que el Ingrss funcione en múltiples clusters. las IP efímeras predeterminadas son solo regionales y no permitirán una federación adecuada

Crea una IP global llamada ingress-ip

gcloud compute addresses create ingress-ip — global

Implementar el Ingress

Ahora despliega el Ingress mismo

kubectl apply -f deploy/ingress.yaml

Esto llevará un tiempo, aproximadamente 5 minutos, para que se creen los cargadores balanceados en todo el mundo y para que pasen todas las comprobaciones de estado.

Puede revisar el progreso en la página Descubrimiento y equilibrio de carga en la consola de la nube


Una vez que el equilibrador de carga está activo, puede acceder a las siguientes URL:

/
/foo
/foo/bar
/eco
/echo/anyString

Desde la página Descubrimiento y equilibrio de carga en la consola de la nube, haga clic en el nombre de Load Balancer para más detalles. Luego desplácese hacia abajo a los backends.




Habrá un backend para cada servicio en su ingreso yaml. Continúa y haz clic en uno de los back-ends

A medida que el tráfico fluya a su nuevo servicio, puede ver el desglose de la ubicación y otras métricas en esta página.


Eso es todo, ¡estás listo!

Por su cuenta

Eso es lo corto y facil de la demo. Asegúrese de explorar el código para comprender la mecánica. Pruebe también actualizaciones por su cuenta

Continúa y despliega tu propio servicio, modifica el ingreso.yaml y ejecuta

kubectl apply -f deploy/ingress.yaml

Los nuevos servicios en el equilibrador de carga tardan unos minutos en aparecer, pero los cambios en los servicios existentes son bastante rápidos

Pruébalo actualizando la imagen en la aplicación Despliegue a algo nuevo, por ejemplo, tal vez actualice `simple-echo.yaml`
spec:
 containers:
 — name: simple-echo
 image: cgrant/simple-echo-server
```
to
spec:
 containers:
 — name: simple-echo
 image: cgrant/simple-echo-server:version1

Luego aplicar

kubectl apply -f deploy/simple-echo.yaml

¡Los contenedores se actualizarán rápidamente y ya está listo!
Me gusta mucho la posibilidad de usar productos nativos de Google Cloud con Kubernetes. Quita gran parte de la incomodidad de la infraestructura a la vez que me proporciona herramientas sólidas administradas para mis aplicaciones.

Espero que hayas disfrutado.