Conceptos avanzados

Citrix ADC CPX, Citrix Ingress Controller y Application Delivery Management en Google Cloud

Descripción general del producto Citrix para la arquitectura y los componentes de GCP K8

Los cinco componentes principales de Citrix de GCP

  1. Citrix ADC VPX como ADC de nivel 1 para el tráfico de clientes de Internet basado en el ingreso.

    Una instancia VPX en GCP le permite aprovechar las capacidades informáticas de GCP y usar las funciones de equilibrio de carga y administración de tráfico de Citrix para sus necesidades empresariales. Puede implementar VPX en GCP como una instancia independiente. Se admiten configuraciones de tarjeta de interfaz de red (NIC) única y múltiple.

  2. El clúster de Kubernetes mediante Google Kubernetes Engine (GKE) para formar la plataforma de contenedores.

    Kubernetes Engine es un entorno gestionado y listo para la producción para implementar aplicaciones en contenedores. Permite una rápida implementación y administración de sus aplicaciones y servicios.

  3. Implemente una aplicación web Citrix de muestra mediante la biblioteca de archivos YAML.

    Citrix ha proporcionado una aplicación web de microservicios de ejemplo para probar la topología de aplicaciones de dos niveles en GCP. También hemos incluido los siguientes componentes en los archivos de muestra como prueba de concepto:

    • Ejemplo de servicio web de bebidas calientes en el archivo YAML de Kubernetes
    • Ejemplo de Colddrink Web Service en el archivo YAML de Kubernetes
    • Ejemplo de servicio web de libro de visitas en el archivo YAML de Kubernetes
    • Ejemplo de Grafana Charting Service en el archivo YAML de Kubernetes
    • Ejemplo de servicio de registro de Prometheus en el archivo YAML de Kubernetes

    GCP

  4. Implemente Citrix Ingress Controller para la automatización Citrix ADC de nivel 1 en el clúster de GKE.

    Citrix Ingress Controller creado alrededor de Kubernetes configura automáticamente uno o más dispositivos Citrix ADC en función de la configuración del recurso de entrada. Un controlador de entrada es un controlador que vigila el servidor de API de Kubernetes en busca de actualizaciones del recurso de ingreso y reconfigura el equilibrador de cargas de ingreso en consecuencia. Citrix Ingress Controller se puede implementar directamente mediante archivos YAML o mediante gráficos Helm.

    GCP

    Citrix ha proporcionado archivos YAML de ejemplo para la automatización del Citrix ingress controller de la instancia VPX de nivel 1. Los archivos automatizan varias configuraciones en el VPX de nivel 1, que incluyen:

    • Reescribir directivas y acciones
    • Directivas y acciones de respuesta
    • Reglas de cambio de URL de contenido
    • Agregar o eliminar servicios de equilibrio de carga CPX

    El archivo YAML de Citrix Ingress Controller para GCP se encuentra aquí: https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices/tree/master/gcp

Implementación de ingreso de dos niveles en GCP

En una implementación de ingreso de dos niveles, implemente Citrix ADC VPX/MPX fuera del clúster de Kubernetes (nivel 1) y Citrix ADC CPX dentro del clúster de Kubernetes (nivel 2).

La VPX/MPX de nivel 1 equilibraría la carga del CPX de nivel 2 dentro del clúster de Kubernetes. Se trata de un modelo de implementación genérico que se sigue ampliamente independientemente de la plataforma, ya sea Google Cloud, Amazon Web Services, Azure o una implementación local.

Automatización de VPX/MPX de nivel 1

La carga VPX/MPX de nivel 1 equilibra automáticamente los CPX de nivel 2. Citrix Ingress Controller completa las configuraciones de automatización ejecutándose como un pod dentro del clúster Kubernetes. Configura una clase de entrada independiente para el nivel 1 VPX/MPX para que la configuración no se solape con otros recursos de entrada.

GCP


Descripción Citrix de la implementación

Instalar y configurar el dispositivo Citrix ADC de nivel 1 en GCP

Puede implementar Citrix ADC mediante una de las siguientes opciones:

Ahora debe implementar Citrix VPX (nivel 1-adc) mediante la plantilla 3-NIC GDM.

Requisitos previos (obligatorios):

  1. Crear una cuenta de GCP utilizando solohttp://console.cloud.google.comsu ID de correo de Citrix

  2. Crea cnn-selab-atl como nombre de proyecto en la consola de GCP: GCP

  3. Instale la utilidad gcloud en su dispositivo. Siga el enlace para encontrar la utilidad: https://cloud.google.com/sdk/install.

  4. Autenticar en su cuenta de Google mediante gcloud API gcloud auth login.

  5. Instale kubectl en su cliente: https://kubernetes.io/docs/tasks/tools/install-kubectl/

  6. Ejecute el siguiente comando en la utilidad gcloud para crear una imagen.

    gcloud compute images create netscaler12-1 --source-uri=gs://tme-cpx-storage/NSVPX-GCP-12.1-50.28_nc.tar.gz --guest-os-features=MULTI_IP_SUBNET
    <!--NeedCopy-->
    

    Puede que la imagen demore un momento en crearse. Después de crear la imagen, aparece en Compute > Compute Engine en la consola de GCP.

Implementar un Citrix VPX (nivel 1-adc) en GCP

  1. Instancias de VPC de GCP: para abordar la separación de las redes externas, internas y perimetrales por motivos de seguridad. Debemos crear tres NIC como se muestra en la siguiente tabla:

    Red Comentarios
    192.168.10.0/24 Red de administración (vpx-snet-mgmt)
    172.16.10.0/24 Red de clientes (vpx-snet-vip)
    10.10.10.0/24 Red de servidores (vpx-snet-snip)

    Nota:

    Cree las VPC de red de tres brazos antes de implementar cualquier instancia de VM.

    Un SDK puede crear una VPC mediante las API de gcloud o mediante la VPC de la consola de Google Cloud Platform mediante la API de gcloud.

    Crear una VPC para el tráfico de administración o NSIP

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-mgmt --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-mgmt --network=vpx-snet-mgmt --region=us-east1 --range=192.168.10.0/24
     <!--NeedCopy-->
    

    Crear una VPC para el tráfico de clientes o VIP

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-vip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-vip --network=vpx-snet-vip --region=us-east1 --range=172.16.10.0/24
     <!--NeedCopy-->
    

    Cree una VPC para tráfico de servidor o SNIP donde aloje su clúster kubernetes

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-snip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-snip --network=vpx-snet-snip --region=us-east1 --range=10.10.10.0/24
     <!--NeedCopy-->
    

    VPC by GCP GUI Console En la consola de Google, seleccione Redes > Red VPC > Crear red VPC e introduzca los campos requeridos, como se muestra a continuación. Luego haga clic en Crear.

    GCP

    Del mismo modo, cree redes de VPC para que las NIC del lado del cliente y del servidor creen tres subredes.

    Nota:

    Las tres redes VPC deben estar en la misma región, que es us-east1 en este caso.

    GCP

  2. Después de crear tres redes y tres subredes en Red de VPC, implemente la instancia de Citrix ADC VPX mediante la plantilla GDM. Asegúrese de que configuration.yml y template.py estén en la misma carpeta o directorio. Usa el siguiente comando del SDK de Google para implementar la instancia.

     gcloud deployment-manager deployments create tier1-vpx --config configuration.yml
     <!--NeedCopy-->
    
  3. Después de una implementación correcta, vaya a Compute Engine para comprobar la sección citrix-adc-tier1-vpx y validar las IP internas.

GCP

Citrix Ingress Controller puede automatizar la configuración de rutas estáticas en el VPX de nivel 1. Configure la dirección IP de subred (SNIP) que debe ser de la misma subred o nube privada virtual del clúster de Kubernetes.

Nota:

El VPX/MPX de nivel 1 implementado va a equilibrar la carga de los CPX dentro del clúster Kubernetes. Configure el SNIP en el VPX de nivel 1.

Desde una sesión de PuTTY en el VPX de nivel 1, complete los siguientes comandos para agregar SNIP y habilitar el acceso de administración al SNIP:

clear config -force full
add ns ip 10.10.10.20 255.255.255.0 -type snip -mgmt enabled
enable ns mode mbf
<!--NeedCopy-->

Implementar un clúster de Kubernetes mediante GKE

Se puede implementar el clúster de Kubernetes mediante el SDK de Google Cloud o mediante la consola GUI de Google Cloud Platform.

Comando de la API de Gcloud para crear un clúster k8s

gcloud beta container --project "cnn-selab-atl" clusters create "k8s-cluster-with-cpx" --zone "us-east1-b" --username "admin" --cluster-version "1.11.7-gke.12" --machine-type "n1-standard-1" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --enable-cloud-logging --enable-cloud-monitoring --no-enable-ip-alias --network "projects/cnn-selab-atl/global/networks/vpx-snet-snip" --subnetwork "projects/cnn-selab-atl/regions/us-east1/subnetworks/vpx-snet-snip" --addons HorizontalPodAutoscaling,HttpLoadBalancing --enable-autoupgrade --enable-autorepair
<!--NeedCopy-->

Pasos Google Cloud Platform consola de la GUI

  1. Busque un motor de Kubernetes en la consola de GCP y haga clic en Crear clúster.

    GCP

  2. Cree un clúster en la misma subred en la que se encuentra el SNIP VPX (vpx-snet-snip). Este clúster automatiza la inserción de configuración en el ADC de nivel 1 desde Citrix Ingress Controller en el clúster K8s.

    GCP

    GCP

  3. Haga clic en Opciones avanzadas para cambiar la subred a vpx-snet-snip y seleccionar los siguientes campos.

    GCP

  4. Para acceder a este clúster desde el SDK de la nube, haga clic en el botón Kubernetes Conectarse al clúster y pegue el comando en el SDK de la nube.

    GCP

  5. Valida la implementación del clúster de GKE ejecutando el siguiente comando:

kubectl get nodes
<!--NeedCopy-->

GCP


Implementar una aplicación de ejemplo mediante la biblioteca de archivos YAML de ejemplo

Citrix ADC ofrece la solución de implementación de arquitectura de dos niveles para equilibrar la carga de las aplicaciones de nivel empresarial implementadas en microservicios y a las que se accede a través de Internet. El nivel 1 tiene equilibradores de carga pesados, como VPX/SDX/MPX, para equilibrar la carga del tráfico norte-sur. El nivel 2 tiene implementación de CPX para administrar microservicios y equilibrar la carga del tráfico Este-Oeste.

  1. Si ejecuta su clúster en GKE, asegúrese de haber usado el enlace de roles de clúster para configurar un administrador de clústeres. Puede hacerlo mediante el siguiente comando.

     kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<email-id of your google account>.
     <!--NeedCopy-->
    
  2. Acceda al directorio actual en el que tiene los archivos YAML de implementación. Ejecute el siguiente comando para obtener el estado del nodo.

     kubectl get nodes
     <!--NeedCopy-->
    

    GCP

  3. Crea los espacios de nombres:

     kubectl create -f namespace.yaml
     <!--NeedCopy-->
    

    Verifique el comando namespace:

     kubectl get namespaces
     <!--NeedCopy-->
    

    GCP

  4. Implemente rbac.yaml en el espacio de nombres predeterminado.

     kubectl create -f rbac.yaml
     <!--NeedCopy-->
    
  5. Implemente el CPX para microservicios de bebidas calientes, bebidas frías y libros de visitas mediante los siguientes comandos.

     kubectl create -f cpx.yaml -n tier-2-adc
     kubectl create -f hotdrink-secret.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  6. Implemente los microservicios de bebidas calientes de tres: El microservicio de tipo SSL con la arquitectura de horquilla.

     kubectl create -f team_hotdrink.yaml -n team-hotdrink
     kubectl create -f hotdrink-secret.yaml -n team-hotdrink
     <!--NeedCopy-->
    
  7. Implementar el microservicio de bebidas frías: El microservicio de tipo SSL_TCP.

     kubectl create -f team_colddrink.yaml -n team-colddrink
     kubectl create -f colddrink-secret.yaml -n team-colddrink
     <!--NeedCopy-->
    
  8. Implementar el libro de visitas: Un microservicio de tipo NoSQL.

     kubectl create -f team_guestbook.yaml -n team-guestbook
     <!--NeedCopy-->
    
  9. Validar el CPX implementado para las tres aplicaciones anteriores. Primero, obtenga los pods de CPX implementados como adc de nivel 2 y, a continuación, obtenga el acceso de CLI a CPX.

    ``` Para obtener pods CPX en el espacio de nombres de nivel 2-adc, introduzca: Kubectl get pods -n nivel 2-adc

    Para obtener acceso CLI (bash) al pod CPX (pod hotdrinks-cpx), escriba: kubectl exec -it "copy and paste hotdrink CPX pod name from the above step" bash -n tier-2-adc.

    Por ejemplo:

    kubectl exec -it cpx-ingress-hotdrinks-768b674f76-pcnw4 bash -n tier-2-adc

    Para comprobar si CS vserver se está ejecutando en hotdrink-cpx, introduzca el siguiente comando después del acceso root a CPX: cli-script"sh csvs".

    Por ejemplo:

    root@cpx-ingress-hotdrinks-768b674f76-pcnw4:/# cli_script.sh "sh csvs"

  10. Implemente el controlador de ingreso e ingreso de VPX en el espacio de nombres de nivel 2, que configura VPX automáticamente. Citrix Ingress Controller (CIC) automatiza el adc de nivel 1 (VPX).

     kubectl create -f ingress_vpx.yaml -n tier-2-adc
     kubectl create -f cic_vpx.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  11. Agregue las entradas DNS en los archivos host de su máquina local para acceder a los microservicios a través de Internet.

    Para clientes Windows, vaya a: C:\Windows\System32\drivers\etc\hosts

    Para clientes macOS, en el Terminal, introduzca: sudo nano /etc/hosts`

    Agregue las siguientes entradas en el archivo del host y guárdelo.

     hotdrink.beverages.com   xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     colddrink.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     guestbook.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     grafana.beverages.com    xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     prometheus.beverages.com xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     <!--NeedCopy-->
    
  12. Ahora puede acceder a cada aplicación a través de Internet. Por ejemplo, https://hotdrink.beverages.com.

    GCP


Habilitar las directivas de reescritura y respuesta para la aplicación de ejemplo

Ahora es el momento de impulsar las directivas de Rewrite y Responder en VPX a través de la definición de recursos personalizada (CRD).

  1. Implemente la CRD para insertar las directivas Rewrite y Responder en el espacio de nombres predeterminado de nivel 1-adc.
   kubectl create -f crd_rewrite_responder.yaml
   <!--NeedCopy-->
  1. Direcciones URL de lista negra Configure la directiva Respondedor en hotdrink.beverages.com para bloquear el acceso a la página de café.
   kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc
   <!--NeedCopy-->

Después de implementar la directiva Responder, acceda a la página de café en hotdrink.beverages.com. A continuación, recibirá el siguiente mensaje.

GCP

  1. Inserción de encabezado Configure la directiva Reescritura en colddrink.beverages.com para insertar el ID de sesión en el encabezado.
   kubectl create -f rewritepolicy_colddrink.yaml -n tier-2-adc
   <!--NeedCopy-->

Después de implementar la directiva de reescritura, acceda a colddrink.beverages.com con el modo desarrollador habilitado en el explorador. En Chrome, presiona F12 y conserva la categoría de inicio de sesión de red para ver el ID de sesión, que se inserta en la directiva de reescritura en tier-1-adc (VPX).

GCP


Conjuntos de herramientas de código abierto

  1. Implementar herramientas de supervisión de Cloud Native Computing Foundation (CNCF), como Prometheus y Grafana para recopilar estadísticas de proxy ADC.

     kubectl create -f monitoring.yaml -n monitoring
     kubectl create -f ingress_vpx_monitoring.yaml -n monitoring
     <!--NeedCopy-->
    

Agregador de registros de Prometheus

  1. Inicie sesión en http://grafana.beverages.com y complete la siguiente configuración única.

    1. Inicie sesión en el portal con las credenciales de administrador.
    2. Haga clic en Agregar origen de datos y seleccione el origen de datos de Prometheus.
    3. Configure las siguientes opciones y haga clic en el botón Guardar y probar.

    GCP

Panel visual de Grafana

  1. En el panel izquierdo, seleccione la opción Importar y cargue el archivo grafana_config.json proporcionado en la carpeta yamlFiles. Ahora puede ver el panel de control de Grafana con las estadísticas básicas de ADC enumeradas.

GCP


Eliminar una implementación

  1. Para eliminar la implementación de Citrix VPX (nivel 1-adc), vaya a la consola CLI del SDK de Google para eliminar la instancia:

    gcloud deployment-manager deployments delete tier1-vpx
    <!--NeedCopy-->
    
  2. Para eliminar el clúster de GKE Kubernetes, vaya a la consola de GCP, seleccione el clúster de kubernetes y haga clic en Eliminar para borrar el clúster.

    GCP