Procedimientos detallados para configurar la topología de malla de servicio
Los requisitos previos para implementar la topología de malla de servicio están disponibles en Configuración del gráfico de servicios.
Configurar el agente NetScaler
Para habilitar la comunicación entre el clúster de Kubernetes y NetScaler Console, debe instalar y configurar un agente. Puede configurar un agente mediante un hipervisor, servicios de nube pública (como Microsoft Azure, AWS) o un agente integrado disponible en las instancias de NetScaler (ideal para implementaciones de alta disponibilidad).
Siga el procedimiento para configurar un agente.
Nota
También puede usar un agente existente.
De forma predeterminada, los agentes se actualizan automáticamente a la última versión de NetScaler Console. Puede ver los detalles del agente en la página Infraestructura > Instancias > Agentes. También puede especificar la hora a la que quiere que se realicen las actualizaciones del agente. Para obtener más información, consulte Configurar los ajustes de actualización del agente.
Configurar rutas estáticas en el agente
Dentro del clúster de Kubernetes, todos los pods en contenedores utilizan una red de superposición. No es posible establecer la comunicación mediante directamente esas direcciones IP privadas. Para habilitar la comunicación entre NetScaler Console y el clúster de Kubernetes, debe configurar el enrutamiento estático en el agente.
Tenga en cuenta que tiene las siguientes direcciones IP para su clúster de Kubernetes:
-
Kubernetes maestro — 101.xx.xx.112
-
Kubernetes trabajador 1 — 101.xx.xx.111
-
Kubernetes trabajador 2 — 101.xx.xx.110
En el maestro de Kubernetes, ejecute el siguiente comando para identificar la red de pod para realizar el enrutamiento estático:
kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"
A continuación se muestra un ejemplo de salida después de ejecutar el comando:
Tras configurar correctamente un agente:
-
Con un cliente SSH, inicie sesión en el agente
-
Escriba
shell
y pulse Intro para cambiar abash
-
Configure la redirección estática mediante el comando
route add -net <public IP address range> <Kubernetes IP address>
Por ejemplo:
route add -net 192.168.0.0/24 101.xx.xx.112
route add -net 192.168.1.0/24 101.xx.xx.111
route add -net 192.168.2.0/24 101.xx.xx.110
-
Verifique la configuración mediante
netstat -rn
-
Agregue estos comandos de ruta en el
/mpsconfig/svm.conf
archivo.-
En el agente, acceda al archivo svm.conf mediante el siguiente comando:
vim /mpsconfig/svm.conf
-
Agregue las rutas estáticas en el archivo svm.conf.
Por ejemplo:
route add -net 192.168.0.0/24 101.xx.xx.112
.
-
Configurar los parámetros requeridos
En el maestro Kubernetes:
-
Cree un secreto con las credenciales del agente en todos los espacios de nombres en los que se implemente CPX como puerta de enlace de entrada o sidecar.
kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n <namespace>
-
helm repo add citrix https://citrix.github.io/citrix-helm-charts/
-
Implementar NetScaler CPX como una puerta de enlace de entrada
helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace <namespace> --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=XX:00:X1:00:XX:0X:X0,ADMSettings.ADMIP=<xx.xx.xx.xx>, ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30
En la siguiente tabla se enumeran los parámetros configurables en el gráfico de Helm y sus valores predeterminados:
Parámetro Descripción Valor predeterminado Opcional/Obligatorio (Helm) citrixCPX NetScaler CPX FALSE Obligatorio para NetScaler CPX xDSAdaptor.image Imagen del contenedor del adaptador Citrix xDs quay.io/citrix/citrix-istio-adaptor:1.2.1 Obligatorio ADMSettings.ADMIP Dirección IP de la consola NetScaler nulo Obligatorio para NetScaler CPX ADMSettings.ADMFingerPrint La huella digital de la consola NetScaler. Vaya a Infraestructura > Instancias > Agentes, seleccione el agente y haga clic en Ver huella digital nulo Opcional ingressGateway.EULA Términos y condiciones del Acuerdo de licencia de usuario final (CLUF). En caso afirmativo, el usuario acepta los términos y condiciones del CLUF. NO Obligatorio para NetScaler CPX ingressGateway.image Imagen de NetScaler CPX designado para ejecutarse como Ingress Gateway quay.io/citrix/citrix-k8s-cpx-ingreso: 13.0—58.30 Obligatorio para NetScaler CPX -
Implementación el inyector Citrix SideCar.
helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --version 1.2.1 --namespace <namespace> set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<xx.xx.xx.xx>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30
En la siguiente tabla se enumeran los parámetros configurables en el gráfico de Helm y sus valores predeterminados:
Parámetro Descripción Valor predeterminado ADMSettings.ADMIP La dirección IP de la consola NetScaler NIL cpxProxy.image Imagen de NetScaler CPX utilizada como proxy sidecar quay.io/citrix/citrix-k8s-cpx-ingreso: 13.0—58.30 cpxProxy.imagePullPolicy Directiva de extracción de imágenes para NetScaler IfNotPresent cpxProxy.EULA Términos y condiciones del Acuerdo de licencia de usuario final (CLUF). En caso afirmativo, el usuario acepta los términos y condiciones del CLUF. NO cpxProxy.cpxSidecarMode Variable de entorno para NetScaler CPX. Indica que NetScaler CPX se ejecuta como modo sidecar o no. SÍ -
Establezca la etiqueta en cualquier espacio de nombres que necesite CPX Sidecar Injection.
kubectl label namespace <app-namespace> cpx-injection=enabled
Tras realizar los pasos 3 y 5, verá que el NetScaler CPX está registrado en NetScaler Console.
Implementar una aplicación de ejemplo
Tenga en cuenta que quiere implementar las siguientes aplicaciones:
Realice el procedimiento siguiente para implementar una aplicación de ejemplo:
-
kubectl create namespace citrix-system
-
kubectl create namespace bookinfo
-
kubectl label namespace bookinfo cpx-injection=enabled
-
kubectl create secret generic admlogin --from-literal=username=<uername> --from-literal=password=<password> -n citrix-system
Nota
Puede proporcionar un nombre de usuario y una contraseña de su elección.
-
kubectl create secret generic admlogin --from-literal=username=<username> --from-literal=password=<password> -n bookinfo
Nota
Puede proporcionar un nombre de usuario y una contraseña de su elección.
-
helm install citrix-adc-istio-ingress-gateway citrix/citrix-adc-istio-ingress-gateway --version 1.2.1 --namespace citrix-system --set ingressGateway.EULA=YES,citrixCPX=true,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<ADM agent IP address>,ingressGateway.image=quay.io/citrix/citrix-k8s-cpx-ingress,ingressGateway.tag=13.0-58.30
Nota
Debe proporcionar la huella digital de la consola NetScaler y la dirección IP del agente
-
helm install cpx-sidecar-injector citrix/citrix-cpx-istio-sidecar-injector --namespace citrix-system --set cpxProxy.EULA=YES,ADMSettings.ADMFingerPrint=xx:xx:xx:xx,ADMSettings.ADMIP=<ADM agent IP address>,cpxProxy.image=quay.io/citrix/citrix-k8s-cpx-ingress,cpxProxy.tag=13.0-58.30
Nota
Debe proporcionar la huella digital de la consola NetScaler y la dirección IP del agente
-
helm install bookinfo bookinfo/ --namespace bookinfo --set citrixIngressGateway.namespace=citrix-system
Agregue un clúster de Kubernetes en NetScaler Console
Para agregar el clúster de Kubernetes:
-
Inicie sesión en NetScaler Console con las credenciales de administrador.
-
Vaya a Infraestructura > Orquestación > Kubernetes > Clúster. Se muestra la página Clústeres.
-
Haga clic en Agregar.
-
En la página Agregar clúster, especifique los siguientes parámetros:
-
Nombre: especifique un nombre de su elección.
-
URL del servidor de API: puede obtener los detalles de la URL del servidor de API en el nodo maestro de Kubernetes.
-
En el nodo principal de Kubernetes, ejecuta el comando
kubectl cluster-info
. -
Introduce la URL que aparece para “Se está ejecutando el archivo maestro de Kubernetes”.
-
-
Token de autenticación: especifique el token de autenticación. El token de autenticación es necesario para validar el acceso para la comunicación entre el clúster de Kubernetes y NetScaler Console. Para generar un token de autenticación:
En el nodo maestro de Kubernetes:
-
Utilice el siguiente YAML para crear una cuenta de servicio:
apiVersion: v1 kind: ServiceAccount metadata: name: <name> namespace: <namespace> <!--NeedCopy-->
-
Ejecute
kubectl create -f <yaml file>
.Se crea la cuenta de servicio.
-
Ejecute
kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name>
para vincular el rol de clúster a la cuenta de servicio.La cuenta de servicio ahora tiene acceso a todo el clúster.
Se genera automáticamente un token al crear la cuenta de servicio.
-
Ejecute
kubectl describe sa <name>
para ver el token. -
Para obtener la cadena secreta, ejecute
kubectl describe secret <token-name>
.
-
-
Seleccione el agente de la lista.
Nota
Asegúrese de seleccionar el mismo agente que ha agregado en CPX YAML.
-
Haga clic en Crear.
-
Habilitar la selección automática de servidores virtuales para licencias
Nota
Asegúrese de tener suficientes licencias de servidor virtual. Para obtener más información, consulte Licencias
Después de agregar el clúster de Kubernetes en NetScaler Console, debe asegurarse de seleccionar automáticamente los servidores virtuales para la concesión de licencias. Los servidores virtuales deben tener licencia para mostrar datos en Service Graph. Para seleccionar automáticamente servidores virtuales:
-
Vaya a Configuración > Configuración de licencias y análisis de NetScaler Console .
-
En Resumen de licencia de servidor virtual, habilite la selección automática de servidores virtuales y la selección automática de servidores virtuales no direccionables.
Habilitar la configuración de transacciones web y transacciones TCP
Después de agregar el clúster de Kubernetes y habilitar los servidores virtuales de selección automática, cambie la configuración de transacciones web y la configuración de transacciones TCP a Todos.
-
Vaya a Configuración > Configuración de análisis .
Aparece la página de configuración.
-
Haga clic en Habilitar funciones para Analytics.
-
En Configuración de transacciones web, selecciona Todo.
-
En Configuración de transacciones TCP, seleccione Todo.
-
Haga clic en Aceptar.
Enviar tráfico a microservicios
A continuación, debe enviar el tráfico a los microservicios para completar el gráfico de servicios en NetScaler Console.
-
Determine la IP de entrada y el puerto
export INGRESS_HOST=$(kubectl get pods -l app=citrix-ingressgateway -n citrix-system -o 'jsonpath={.items[0].status.hostIP}')
export INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export SECURE_INGRESS_PORT=$(kubectl -n citrix-system get service citrix-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
-
Accede a la aplicación front-end Bookinfo usando curl. El servicio
productpage
debe devolver 200 respuestas OK.curl -kv https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage
curl -v http://$INGRESS_HOST:$INGRESS_PORT/productpage
-
Visite
https://$INGRESS_HOST:$SECURE_INGRESS_PORT/productpage
desde un explorador.Aparecerá la página Bookinfo.
-
Asegúrese de que $INGRESS_HOST y $SECURE_INGRESS_PORT se reemplaza por una dirección IP y un valor de puerto.
Después de enviar tráfico a microservicios, el gráfico de servicio se rellena aproximadamente en 10 minutos de duración.
Mediante el gráfico de servicio, puede analizar varios detalles del servicio, como métricas, errores, etc. Para obtener más información, consulte Gráfico de servicios.
En este artículo
- Configurar el agente NetScaler
- Configurar rutas estáticas en el agente
- Configurar los parámetros requeridos
- Implementar una aplicación de ejemplo
- Agregue un clúster de Kubernetes en NetScaler Console
- Habilitar la selección automática de servidores virtuales para licencias
- Habilitar la configuración de transacciones web y transacciones TCP
- Enviar tráfico a microservicios