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 la entrada.

    Una instancia VPX en GCP le permite aprovechar las capacidades informáticas de GCP y utilizar 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 administrado 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 ejemplo 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 Hotdrink en el archivo YAML de Kubernetes
    • Ejemplo de servicio web Colddrink en el archivo YAML de Kubernetes
    • Ejemplo de servicio web de libro de visitas en el archivo Kubernetes YAML
    • Ejemplo de servicio de gráficos Grafana en archivo YAML 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 Controller de entrada es un Controller que observa el servidor de la API de Kubernetes para actualizaciones en el recurso de entrada y reconfigura el equilibrador de carga de entrada 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 Controller de entrada de Citrix de la instancia VPX de nivel 1. Los archivos automatizan varias configuraciones en el VPX de nivel 1, incluyendo:

    • Reescribir directivas y acciones
    • Directivas y acciones de respuesta
    • Reglas de URL de cambio de contenido
    • Agregar/Quitar 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 entrada de dos niveles en GCP

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

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

Automatización del 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


Introducción a la implementación de Citrix

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

Puede implementar Citrix ADC mediante uno de los siguientes procedimientos:

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

Requisitos previos (obligatorios):

  1. Crear una cuenta de GCP mediante solo su ID de correo de Citrix http://console.cloud.google.com

  2. Cree cnn-selab-atl como nombre del proyecto en la consola 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 tardar un momento en crear la imagen. Una vez creada 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 DMZ con fines 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.

    Una VPC se puede crear mediante SDK 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 administración o tráfico 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 tráfico de cliente 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. A continuación, haga clic en Crear.

    GCP

    Del mismo modo, cree redes VPC para las NIC del cliente y del servidor para crear 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 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. Utilice el siguiente comando de Google SDK 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 subnet/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 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

Uno puede implementar Kubernetes cluster ya sea por Google Cloud SDK o a través de la consola de interfaz gráfica de usuario de Google Cloud Platform.

Comando API de Gcloud para crear 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 de la consola de interfaz gráfica de usuario de Google Cloud Platform

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

    GCP

  2. Cree un clúster en la misma subred donde está su 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 Conectar Kubernetes al clúster y pegue el comando en el SDK de la nube.

    GCP

  5. Validar 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 grado empresarial implementadas en microservicios y a las que se accede a través de Internet. El nivel 1 cuenta con equilibradores de carga pesados, como VPX/SDX/MPX, para equilibrar la carga del tráfico Norte-Sur. El nivel 2 tiene implementación CPX para administrar microservicios y equilibrar la carga del tráfico Este-Oeste.

  1. Si está ejecutando el clúster en GKE, asegúrese de que ha utilizado 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 donde tiene los archivos YAML de implementación. Ejecute el siguiente comando para obtener el estado del nodo.

     kubectl get nodes
     <!--NeedCopy-->
    

    GCP

  3. Cree los espacios de nombres:

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

    Verifique el comando namespace:

     kubectl get namespaces
     <!--NeedCopy-->
    

    GCP

  4. Implemente el 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 CPX implementados como nivel 2-adc y, a continuación, obtenga el acceso 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 Controller de entrada y entrada VPX en el espacio de nombres de nivel 2, que configura VPX automáticamente. Citrix Ingress Controller (CIC) automatiza el nivel 1-adc (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 equipo local para acceder a 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 guarde el archivo.

     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 Rewrite y Responder 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, presione F12 y conserve la categoría de inicio de sesión en red para ver el ID de sesión, que se inserta mediante la directiva Rewrite en el nivel 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 mediante credenciales de administrador.
    2. Haga clic en Agregar origen de datos y seleccione la fuente 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 estadísticas básicas de ADC listadas.

GCP


Eliminar una implementación

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

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

    GCP