Instalación de balanceadores de carga F5 BIG-IP
F5 BIG-IP es un controlador de entrega de aplicaciones (ADC) que ofrece un amplio conjunto de servicios avanzados de seguridad y gestión de tráfico de nivel de producción, como equilibrio de carga L4-L7, descarga SSL/TLS, DNS, firewall y muchos más. Estos servicios aumentan drásticamente la disponibilidad, la seguridad y el rendimiento de sus aplicaciones.
F5 BIG-IP se puede implementar y consumir de diversas maneras: en hardware dedicado, en la nube o como un dispositivo virtual en las instalaciones. Consulte la documentación aquí para explorar e implementar F5 BIG-IP según los requisitos.
Para una integración eficiente de los servicios F5 BIG-IP con Red Hat OpenShift, F5 ofrece el Servicio de ingreso de contenedores BIG-IP (CIS). CIS se instala como un módulo de controlador que supervisa la API de OpenShift en busca de determinadas definiciones de recursos personalizados (CRD) y administra la configuración del sistema F5 BIG-IP. F5 BIG-IP CIS se puede configurar para controlar los tipos de servicios LoadBalancers y Rutas en OpenShift.
Además, para la asignación automática de direcciones IP para dar servicio al tipo LoadBalancer, puede utilizar el controlador IPAM F5. El controlador F5 IPAM se instala como un pod de controlador que supervisa la API de OpenShift en busca de servicios LoadBalancer con una anotación ipamLabel para asignar la dirección IP desde un grupo preconfigurado.
Esta página enumera las instrucciones de instalación y configuración del controlador F5 BIG-IP CIS e IPAM. Como requisito previo, debe tener un sistema F5 BIG-IP implementado y licenciado. También debe tener licencia para servicios SDN, que se incluyen de forma predeterminada con la licencia base de BIG-IP VE.
|
F5 BIG-IP se puede implementar en modo independiente o en clúster. Para el propósito de esta validación, F5 BIG-IP se implementó en modo independiente, pero, para fines de producción, se prefiere tener un clúster de BIG-IP para evitar un único punto de falla. |
|
Un sistema F5 BIG-IP se puede implementar en hardware dedicado, en la nube o como un dispositivo virtual local con versiones superiores a 12.x para que se integre con F5 CIS. Para los fines de este documento, el sistema F5 BIG-IP fue validado como un dispositivo virtual, por ejemplo utilizando la edición BIG-IP VE. |
Versiones validadas
Tecnología |
Versión del software |
Red Hat OpenShift |
4.6 EUS, 4.7 |
Edición F5 BIG-IP VE |
16.1.0 |
Servicio de ingreso de contenedores F5 |
2.5.1 |
Controlador F5 IPAM |
0.1.4 |
F5 AS3 |
3.30.0 |
Instalación
-
Instale la extensión F5 Application Services 3 para permitir que los sistemas BIG-IP acepten configuraciones en JSON en lugar de comandos imperativos. Ir a "Repositorio de GitHub de F5 AS3" y descargue el último archivo RPM.
-
Inicie sesión en el sistema F5 BIG-IP, navegue a iApps > Administración de paquetes LX y haga clic en Importar.
-
Haga clic en Elegir archivo y seleccione el archivo RPM AS3 descargado, haga clic en Aceptar y luego haga clic en Cargar.
-
Confirme que la extensión AS3 se haya instalado correctamente.
-
A continuación, configure los recursos necesarios para la comunicación entre los sistemas OpenShift y BIG-IP. Primero, cree un túnel entre OpenShift y el servidor BIG-IP creando una interfaz de túnel VXLAN en el sistema BIG-IP para OpenShift SDN. Vaya a Red > Túneles > Perfiles, haga clic en Crear y configure el Perfil principal en vxlan y el Tipo de inundación en Multidifusión. Ingrese un nombre para el perfil y haga clic en Finalizar.
-
Vaya a Red > Túneles > Lista de túneles, haga clic en Crear e ingrese el nombre y la dirección IP local para el túnel. Seleccione el perfil de túnel que se creó en el paso anterior y haga clic en Finalizado.
-
Inicie sesión en el clúster Red Hat OpenShift con privilegios de administrador del clúster.
-
Cree una subred de host en OpenShift para el servidor F5 BIG-IP, que extienda la subred del clúster OpenShift al servidor F5 BIG-IP. Descargue la definición YAML de la subred del host.
wget https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/config_examples/openshift/f5-kctlr-openshift-hostsubnet.yaml
-
Edite el archivo de subred del host y agregue la IP VTEP (túnel VXLAN) de BIG-IP para OpenShift SDN.
apiVersion: v1 kind: HostSubnet metadata: name: f5-server annotations: pod.network.openshift.io/fixed-vnid-host: "0" pod.network.openshift.io/assign-subnet: "true" # provide a name for the node that will serve as BIG-IP's entry into the cluster host: f5-server # The hostIP address will be the BIG-IP interface address routable to the # OpenShift Origin nodes. # This address is the BIG-IP VTEP in the SDN's VXLAN. hostIP: 10.63.172.239
Cambie la IP del host y otros detalles según corresponda a su entorno. -
Cree el recurso HostSubnet.
[admin@rhel-7 ~]$ oc create -f f5-kctlr-openshift-hostsubnet.yaml hostsubnet.network.openshift.io/f5-server created
-
Obtenga el rango de subred IP del clúster para la subred del host creada para el servidor F5 BIG-IP.
[admin@rhel-7 ~]$ oc get hostsubnet NAME HOST HOST IP SUBNET EGRESS CIDRS EGRESS IPS f5-server f5-server 10.63.172.239 10.131.0.0/23 ocp-vmw-nszws-master-0 ocp-vmw-nszws-master-0 10.63.172.44 10.128.0.0/23 ocp-vmw-nszws-master-1 ocp-vmw-nszws-master-1 10.63.172.47 10.130.0.0/23 ocp-vmw-nszws-master-2 ocp-vmw-nszws-master-2 10.63.172.48 10.129.0.0/23 ocp-vmw-nszws-worker-r8fh4 ocp-vmw-nszws-worker-r8fh4 10.63.172.7 10.130.2.0/23 ocp-vmw-nszws-worker-tvr46 ocp-vmw-nszws-worker-tvr46 10.63.172.11 10.129.2.0/23 ocp-vmw-nszws-worker-wdxhg ocp-vmw-nszws-worker-wdxhg 10.63.172.24 10.128.2.0/23 ocp-vmw-nszws-worker-wg8r4 ocp-vmw-nszws-worker-wg8r4 10.63.172.15 10.131.2.0/23 ocp-vmw-nszws-worker-wtgfw ocp-vmw-nszws-worker-wtgfw 10.63.172.17 10.128.4.0/23
-
Cree una IP propia en OpenShift VXLAN con una IP en el rango de subred de host de OpenShift correspondiente al servidor F5 BIG-IP. Inicie sesión en el sistema F5 BIG-IP, navegue a Red > IP propias y haga clic en Crear. Ingrese una IP de la subred IP del clúster creada para la subred del host F5 BIG-IP, seleccione el túnel VXLAN e ingrese los demás detalles. Luego haga clic en Finalizar.
-
Cree una partición en el sistema F5 BIG-IP para configurarla y utilizarla con CIS. Vaya a Sistema > Usuarios > Lista de particiones, haga clic en Crear e ingrese los detalles. Luego haga clic en Finalizar.
F5 recomienda que no se realice ninguna configuración manual en la partición administrada por CIS. -
Instale F5 BIG-IP CIS utilizando el operador de OperatorHub. Inicie sesión en el clúster Red Hat OpenShift con privilegios de administrador del clúster y cree un secreto con las credenciales de inicio de sesión del sistema F5 BIG-IP, lo cual es un requisito previo para el operador.
[admin@rhel-7 ~]$ oc create secret generic bigip-login -n kube-system --from-literal=username=admin --from-literal=password=admin secret/bigip-login created
-
Instalar los CRD CIS F5.
[admin@rhel-7 ~]$ oc apply -f https://raw.githubusercontent.com/F5Networks/k8s-bigip-ctlr/master/docs/config_examples/crd/Install/customresourcedefinitions.yml customresourcedefinition.apiextensions.k8s.io/virtualservers.cis.f5.com created customresourcedefinition.apiextensions.k8s.io/tlsprofiles.cis.f5.com created customresourcedefinition.apiextensions.k8s.io/transportservers.cis.f5.com created customresourcedefinition.apiextensions.k8s.io/externaldnss.cis.f5.com created customresourcedefinition.apiextensions.k8s.io/ingresslinks.cis.f5.com created
-
Vaya a Operadores > OperatorHub, busque la palabra clave F5 y haga clic en el mosaico Servicio de ingreso de contenedor F5.
-
Lea la información del operador y haga clic en Instalar.
-
En la pantalla Instalar operador, deje todos los parámetros predeterminados y haga clic en Instalar.
-
La instalación del operador demora un tiempo.
-
Una vez instalado el operador, se muestra el mensaje Instalación exitosa.
-
Vaya a Operadores > Operadores instalados, haga clic en Servicio de ingreso de contenedor F5 y, a continuación, haga clic en Crear instancia debajo del mosaico F5BigIpCtlr.
-
Haga clic en Vista YAML y pegue el siguiente contenido después de actualizar los parámetros necesarios.
Actualizar los parámetros bigip_partition
,openshift_sdn_name
,bigip_url
ybigip_login_secret
a continuación para reflejar los valores de su configuración antes de copiar el contenido.apiVersion: cis.f5.com/v1 kind: F5BigIpCtlr metadata: name: f5-server namespace: openshift-operators spec: args: log_as3_response: true agent: as3 log_level: DEBUG bigip_partition: ocp-vmw openshift_sdn_name: /Common/openshift_vxlan bigip_url: 10.61.181.19 insecure: true pool-member-type: cluster custom_resource_mode: true as3_validation: true ipam: true manage_configmaps: true bigip_login_secret: bigip-login image: pullPolicy: Always repo: f5networks/cntr-ingress-svcs user: registry.connect.redhat.com namespace: kube-system rbac: create: true resources: {} serviceAccount: create: true version: latest
-
Después de pegar este contenido, haga clic en Crear. Esto instala los pods CIS en el espacio de nombres kube-system.
Red Hat OpenShift, de forma predeterminada, proporciona una forma de exponer los servicios a través de rutas para el equilibrio de carga L7. Un enrutador OpenShift incorporado es responsable de publicitar y gestionar el tráfico de estas rutas. Sin embargo, también puede configurar el F5 CIS para admitir las rutas a través de un sistema F5 BIG-IP externo, que puede ejecutarse como un enrutador auxiliar o un reemplazo del enrutador OpenShift autohospedado. CIS crea un servidor virtual en el sistema BIG-IP que actúa como enrutador para las rutas OpenShift, y BIG-IP maneja la publicidad y el enrutamiento del tráfico. Consulte la documentación aquí para obtener información sobre los parámetros para habilitar esta función. Tenga en cuenta que estos parámetros están definidos para el recurso de implementación de OpenShift en la API apps/v1. Por lo tanto, al utilizarlos con el recurso F5BigIpCtlr API cis.f5.com/v1, reemplace los guiones (-) con guiones bajos (_) para los nombres de los parámetros. -
Los argumentos que se pasan a la creación de recursos CIS incluyen
ipam: true
ycustom_resource_mode: true
. Estos parámetros son necesarios para habilitar la integración de CIS con un controlador IPAM. Verifique que el CIS haya habilitado la integración de IPAM creando el recurso IPAM de F5.[admin@rhel-7 ~]$ oc get f5ipam -n kube-system NAMESPACE NAME AGE kube-system ipam.10.61.181.19.ocp-vmw 43s
-
Cree la cuenta de servicio, el rol y la vinculación de roles necesarios para el controlador F5 IPAM. Crea un archivo YAML y pega el siguiente contenido.
[admin@rhel-7 ~]$ vi f5-ipam-rbac.yaml kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ipam-ctlr-clusterrole rules: - apiGroups: ["fic.f5.com"] resources: ["ipams","ipams/status"] verbs: ["get", "list", "watch", "update", "patch"] --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: ipam-ctlr-clusterrole-binding namespace: kube-system roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ipam-ctlr-clusterrole subjects: - apiGroup: "" kind: ServiceAccount name: ipam-ctlr namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: ipam-ctlr namespace: kube-system
-
Crear los recursos.
[admin@rhel-7 ~]$ oc create -f f5-ipam-rbac.yaml clusterrole.rbac.authorization.k8s.io/ipam-ctlr-clusterrole created clusterrolebinding.rbac.authorization.k8s.io/ipam-ctlr-clusterrole-binding created serviceaccount/ipam-ctlr created
-
Cree un archivo YAML y pegue la definición de implementación de F5 IPAM que se proporciona a continuación.
Actualice el parámetro ip-range en spec.template.spec.containers[0].args a continuación para reflejar las ipamLabels y los rangos de direcciones IP correspondientes a su configuración. Etiquetas ipam[ range1
yrange2
[en el siguiente ejemplo] se requiere anotar los valores para los servicios de tipo LoadBalancer para que el controlador IPAM detecte y asigne una dirección IP del rango definido.[admin@rhel-7 ~]$ vi f5-ipam-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: name: f5-ipam-controller name: f5-ipam-controller namespace: kube-system spec: replicas: 1 selector: matchLabels: app: f5-ipam-controller template: metadata: creationTimestamp: null labels: app: f5-ipam-controller spec: containers: - args: - --orchestration=openshift - --ip-range='{"range1":"10.63.172.242-10.63.172.249", "range2":"10.63.170.111-10.63.170.129"}' - --log-level=DEBUG command: - /app/bin/f5-ipam-controller image: registry.connect.redhat.com/f5networks/f5-ipam-controller:latest imagePullPolicy: IfNotPresent name: f5-ipam-controller dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: ipam-ctlr serviceAccountName: ipam-ctlr
-
Cree la implementación del controlador F5 IPAM.
[admin@rhel-7 ~]$ oc create -f f5-ipam-deployment.yaml deployment/f5-ipam-controller created
-
Verifique que los pods del controlador IPAM F5 estén funcionando.
[admin@rhel-7 ~]$ oc get pods -n kube-system NAME READY STATUS RESTARTS AGE f5-ipam-controller-5986cff5bd-2bvn6 1/1 Running 0 30s f5-server-f5-bigip-ctlr-5d7578667d-qxdgj 1/1 Running 0 14m
-
Cree el esquema IPAM de F5.
[admin@rhel-7 ~]$ oc create -f https://raw.githubusercontent.com/F5Networks/f5-ipam-controller/main/docs/_static/schemas/ipam_schema.yaml customresourcedefinition.apiextensions.k8s.io/ipams.fic.f5.com
Verificación
-
Crear un servicio de tipo LoadBalancer
[admin@rhel-7 ~]$ vi example_svc.yaml apiVersion: v1 kind: Service metadata: annotations: cis.f5.com/ipamLabel: range1 labels: app: f5-demo-test name: f5-demo-test namespace: default spec: ports: - name: f5-demo-test port: 80 protocol: TCP targetPort: 80 selector: app: f5-demo-test sessionAffinity: None type: LoadBalancer
[admin@rhel-7 ~]$ oc create -f example_svc.yaml service/f5-demo-test created
-
Compruebe si el controlador IPAM le asigna una IP externa.
[admin@rhel-7 ~]$ oc get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE f5-demo-test LoadBalancer 172.30.210.108 10.63.172.242 80:32605/TCP 27s
-
Cree una implementación y utilice el servicio LoadBalancer que se creó.
[admin@rhel-7 ~]$ vi example_deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: app: f5-demo-test name: f5-demo-test spec: replicas: 2 selector: matchLabels: app: f5-demo-test template: metadata: labels: app: f5-demo-test spec: containers: - env: - name: service_name value: f5-demo-test image: nginx imagePullPolicy: Always name: f5-demo-test ports: - containerPort: 80 protocol: TCP
[admin@rhel-7 ~]$ oc create -f example_deployment.yaml deployment/f5-demo-test created
-
Comprueba si los pods están funcionando.
[admin@rhel-7 ~]$ oc get pods NAME READY STATUS RESTARTS AGE f5-demo-test-57c46f6f98-47wwp 1/1 Running 0 27s f5-demo-test-57c46f6f98-cl2m8 1/1 Running 0 27s
-
Verifique si el servidor virtual correspondiente está creado en el sistema BIG-IP para el servicio de tipo LoadBalancer en OpenShift. Vaya a Tráfico local > Servidores virtuales > Lista de servidores virtuales.