SAE admite el registro y descubrimiento de servicios multilenguaje mediante K8s Services. Puede configurar un nombre de dominio fijo para una aplicación dentro de un clúster de SAE, de modo que las direcciones IP de las instancias no cambien después de cada despliegue.
Contexto
En un framework de microservices distribuido, el registro y descubrimiento de servicios garantizan una comunicación confiable entre los componentes del servidor y del cliente conforme los servicios se inician y detienen.
Registro de servicios: una instancia de servicio registra su información en un registro, la cual es leída y suscrita posteriormente por los clientes.
Descubrimiento de servicios: un cliente consulta el registro para obtener las direcciones de los servicios dependientes antes de realizar una solicitud. El registro expone las direcciones de las instancias y los metadatos a través de una interfaz predefinida.
Limitaciones
Este nombre de dominio solo puede utilizarse para acceder a instancias dentro de la misma aplicación de SAE. Para permitir el acceso desde otros servicios como FC, ACK o ECS, vincule un Classic Load Balancer (CLB) privado o público. Para más información, consulte Configure application service access by using a CLB.
No es posible utilizar el comando ping para acceder a un K8s Service. En su lugar, utilice TCP o UDP desde su código. Para comprobar la conectividad de red, use el comando ping con la dirección IP del pod de la aplicación.
Un pod de aplicación no puede acceder a sí mismo mediante su K8s Service.
Si una aplicación servidora y una aplicación cliente necesitan llamarse mutuamente, ambas deben contar con un K8s Service.
Procedimiento
-
Acceda a la página de configuración.
Durante la creación
Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, seleccione . Seleccione una región y un namespace, y luego haga clic en Create Application.
Seleccione una versión de la aplicación y luego haga clic en Create Application.
En la página del asistente Basic Information, configure los ajustes y haga clic en Next: Advanced Settings.
En la página del asistente Advanced Settings, busque y expanda la sección Service Registration and Discovery.
Durante el despliegue
AvisoDespués de volver a desplegar una aplicación, esta se reinicia. Para evitar errores impredecibles, como interrupciones del servicio, se recomienda desplegar las aplicaciones fuera del horario pico.
Inicie sesión en la consola de SAE. En el panel de navegación izquierdo, seleccione . Seleccione una región y un namespace, y luego haga clic en el nombre de su aplicación.
En la página Basic Information de la aplicación, haga clic en Deploy Application.
En la página del asistente Deploy Application, busque y expanda la sección Service Registration and Discovery.
-
Configure el registro y descubrimiento de servicios basado en Kubernetes Service.
Active el interruptor de registro y descubrimiento de servicios basado en Kubernetes Service.
-
Configure el nombre del servicio, el puerto y el protocolo.
Parámetro
Descripción
Nombre del servicio
Introduzca un nombre de servicio personalizado. El nombre debe ser único por cuenta dentro de una región y no puede modificarse después de la creación.
NotaDe forma predeterminada, se utiliza el nombre de la aplicación como nombre del servicio.
Puerto
Introduzca un número de puerto entre 1 y 65535.
NotaPuede agregar hasta cinco configuraciones de puerto y protocolo.
Puerto del contenedor
Introduzca el puerto del contenedor.
Protocolo
Seleccione un protocolo. Se admiten los siguientes protocolos:
-
TCP
-
UDP
-
Nombres de dominio de acceso
En la página Basic Information de la aplicación destino, vaya a la sección Application Access Settings y consulte la información en la pestaña Kubernetes Service-based Access.
Se admiten los siguientes cuatro tipos de nombres de dominio:
Para acceder a aplicaciones en el mismo namespace, utilice el nombre del servicio. Ejemplo:
demo.-
Para acceder a aplicaciones entre distintos namespaces, utilice uno de los siguientes formatos de nombre de dominio.
-
demo.nsfooEn este ejemplo,
nsfooes un namespace personalizado. Si la aplicación destino se encuentra en el namespace predeterminado, utilicedefaultcomo nombre del namespace. Ejemplo:demo.default. demo.nsfoo.svc.cluster.localdemo.nsfoo.svc.cluster.local.cn-hangzhou
-
Ejemplo de asignación de puertos: el puerto es 2000, el puerto del contenedor es 5000 y el protocolo es TCP.