Este tema muestra cómo desplegar una carga de trabajo en un clúster ACK Auto Mode y exponerla a internet mediante un ALB Ingress. Una vez completados estos pasos, podrá acceder a la aplicación con un nombre de dominio específico para gestionar el tráfico externo y equilibrar la carga de forma eficiente.
A continuación se describen las operaciones que abarca este tema:
Cree un namespace para la aplicación de ejemplo.
Despliegue una aplicación Nginx de ejemplo y cree un Service para exponerla a la red del clúster.
Cree un ALB Ingress para exponer la aplicación a internet. Deberá crear manualmente un AlbConfig para gestionar la instancia ALB y un IngressClass para asociarlo con dicho AlbConfig.
Compruebe que el despliegue se haya completado correctamente y acceda a la aplicación desde un navegador. Si los recursos ya no son necesarios, puede liberarlos.
Al finalizar estas operaciones, contará con lo siguiente:
Una aplicación Nginx de ejemplo ejecutándose con dos réplicas.
Un punto de entrada público estable para la aplicación, proporcionado por un ALB Ingress y un Service.
Menor sobrecarga operativa, ya que ACK en Auto Mode escala automáticamente los recursos y gestiona el ciclo de vida de los nodos según la carga de la aplicación.
Requisitos previos
Paso 1: Crear un namespace
Cree un namespace para aislar los recursos de este tutorial.
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Namespaces and Quotas.
Haga clic en Create. En el cuadro de diálogo que aparece, introduzca un nombre personalizado para el namespace (en este tema se usa my-nginx-namespace como ejemplo), configure los demás ajustes según las indicaciones de la página y luego haga clic en OK.
Paso 2: Desplegar la aplicación Nginx y el Service
En esta sección se despliega un Deployment de Nginx de ejemplo llamado my-nginx y un Service llamado my-nginx-svc para exponer la aplicación.
Deployment: 2 réplicas. La imagen utiliza una aplicación Nginx de ejemplo. El puerto 80 queda expuesto para recibir tráfico HTTP.
Service: el tipo es ClusterIP. El puerto 80 del Service se asigna al puerto 80 del contenedor del pod. Además, el Service emplea un selector de etiquetas para coincidir con los pods.
Esta sección solo presenta un procedimiento de ejemplo. Para conocer los procedimientos detallados sobre cómo crear cargas de trabajo y Services, consulte Create a workload y Service management .
-
Cree un archivo llamado my-nginx.yaml con el siguiente contenido para desplegar el Deployment y el Service.
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # The name of the sample application. namespace: my-nginx-namespace # Replace with the name of the namespace that you created. labels: app: nginx spec: replicas: 2 # The number of replicas. selector: matchLabels: app: nginx # The value must match the selector in the Service to expose this application. template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # This port must be exposed in the Service. --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: my-nginx-namespace # Replace with the name of the namespace that you created. spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP # If you use Flannel, you must use NodePort. -
Despliegue el Deployment y el Service.
kubectl apply -f my-nginx.yaml -
Compruebe el estado del Deployment y del Service.
-
Compruebe el estado del Deployment.
kubectl get deployment my-nginx -n my-nginx-namespaceResultado esperado:
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 4m36s -
Compruebe el estado del Service.
kubectl get svc my-nginx-svc -n my-nginx-namespaceResultado esperado:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc ClusterIP 192.XX.XX.164 <none> 80/TCP 42s
-
Paso 3: Crear un ALB Ingress y los recursos relacionados
Para gestionar el tráfico externo que accede a las aplicaciones del clúster mediante un ALB Ingress, debe preparar los siguientes recursos.
Antes de crear un ALB Ingress, se recomienda conocer sus principios y requisitos en ALB Ingress management .
ALB Ingress Controller: componente que gestiona los recursos Ingress. Cuando se habilita Auto Mode en un clúster, el ALB Ingress Controller se instala de forma predeterminada.
AlbConfig: CustomResourceDefinition (CRD) que crea el ALB Ingress Controller para declarar la configuración de una instancia ALB. Cada AlbConfig corresponde a una instancia ALB. Dicha instancia actúa como punto de entrada de las solicitudes de usuario y las reenvía a los Services del backend.
IngressClass: al crear un ALB Ingress, puede especificar este IngressClass para hacer referencia al AlbConfig correspondiente. Esto le permite aplicar configuraciones de enrutamiento específicas y políticas de balanceo de carga para la aplicación.
Crear un AlbConfig
-
Cree un archivo llamado alb.yaml con el siguiente contenido para generar un AlbConfig.
Este AlbConfig establece
addressTypeenInternet. Esto significa que a la instancia ALB se le asigna una dirección IP pública, su nombre de dominio DNS resuelve a dicha dirección y la instancia es accesible desde internet.-
En
vSwitchId, introduzca los identificadores de dos vSwitches ubicados en zonas distintas. Estos deben pertenecer a la misma VPC que el clúster y encontrarse en zones supported by ALB.En la consola de VPC , puede obtener el identificador del vSwitch en la página vSwitch . Si necesita crear un vSwitch, consulte Create and manage vSwitches .
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # The address type of the load balancer. An Internet-facing ALB instance is accessible over the internet. zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the ID of your vSwitch. - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the ID of your vSwitch. listeners: - port: 80 protocol: HTTP -
Cree el AlbConfig.
kubectl apply -f alb.yaml -
Consulte el recurso AlbConfig.
kubectl get AlbConfig albResultado esperado:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60sNotaLos campos
PORT&PROTOCOLyCERTIDse completan únicamente después de crear un listener HTTPS y configurar un certificado para él. Es normal que estos campos aparezcan vacíos.
Crear un IngressClass
-
Cree un archivo llamado ingress_class.yaml con el siguiente contenido para generar un IngressClass.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb # The name of the AlbConfig associated with the IngressClass. -
Cree el IngressClass.
kubectl apply -f ingress_class.yaml
Crear un ALB Ingress
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, seleccione .
-
En la página Ingresses, seleccione el namespace que creó y luego haga clic en Create Ingress. En el cuadro de diálogo Create Ingress, configure el Ingress y siga las instrucciones en pantalla para crearlo.
La siguiente tabla describe únicamente los parámetros clave. Para obtener más información sobre los parámetros y las operaciones relacionadas, como la configuración de la resolución DNS, consulte Create an ALB Ingress.
Parámetro
Descripción
Gateway Type
Seleccione ALB Ingress.
Name
Introduzca un nombre personalizado para el Ingress, como my-albingress.
IngressClass
Seleccione el Ingress Class que creó para hacer referencia al AlbConfig correspondiente.
Rules
Service: seleccione el Service de destino, es decir, el Service que creó.
Port: seleccione el puerto que desea exponer para el Service, que en este ejemplo es 80.
Mantenga los valores predeterminados para los demás parámetros.
Una vez creado el Ingress, regrese a la página Ingresses. Después de aproximadamente un minuto, busque y copie el nombre DNS de la columna Endpoint.
Paso 4: Acceder a la aplicación
Pegue el nombre DNS en su navegador para acceder a la aplicación Nginx.
El navegador mostrará la página de bienvenida predeterminada de Nginx con el título Welcome to nginx on Anolis OS! Esto indica que el servidor web se está ejecutando correctamente y que la configuración del ALB Ingress funciona como se espera.
(Opcional) Paso 5: Limpiar los recursos
Los recursos creados en este tema incluyen un Deployment, un Service, un AlbConfig, un IngressClass y un ALB Ingress. Ejecute los siguientes comandos para eliminarlos.
Reemplace los nombres de ejemplo de los siguientes comandos por los nombres reales de sus recursos.
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete service my-nginx-svc -n my-nginx-namespace
kubectl delete ingress my-albingress -n my-nginx-namespace
kubectl delete albconfig alb
kubectl delete ingressclass alb
Documentación relacionada
Para obtener más información sobre los parámetros necesarios al crear una carga de trabajo, consulte Create a workload. Si busca recomendaciones de configuración, consulte Recommended workload configurations.
Cuando utilice un listener HTTPS, deberá configurar un certificado SSL/TLS. Para conocer los métodos de configuración de certificados compatibles con ALB Ingress, consulte Configure an HTTPS certificate to enable encrypted communication.
Puede configurar un recurso AlbConfig para personalizar los ajustes de una instancia ALB. Para obtener más información, consulte ALB Ingress configuration dictionary.