Instalación de equilibradores de carga BIG-IP de F5
Big-IP de F5 es un controlador de entrega de aplicaciones (ADC) que ofrece un amplio conjunto de servicios avanzados de seguridad y gestión del tráfico de nivel de producción como el equilibrio de carga L4-L7, descarga SSL/TLS, DNS, firewall y muchos más. Estos servicios aumentan significativamente la disponibilidad, la seguridad y el rendimiento de sus aplicaciones.
Big-IP de F5 se puede implementar y consumir de varias maneras, en hardware dedicado, en la nube o como un dispositivo virtual en las instalaciones. Consulte la documentación aquí para explorar e implementar BIG-IP de F5 según sus necesidades.
Para una integración eficaz de los servicios BIG-IP de F5 con Red Hat OpenShift, F5 ofrece EL BIG-IP Container Ingresing Service (CIS). CIS se instala como un controlador que supervisa la API de OpenShift para determinadas definiciones de recursos personalizados (CRD) y gestiona la configuración del sistema BIG-IP de F5. Big-IP CIS de F5 se puede configurar para controlar 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 F5 IPAM. El controlador IPAM de F5 se instala como un pod de controladores que mira la API de OpenShift para los servicios LoadBalancer con una anotación ipamLabel para asignar la dirección IP desde un grupo preconfigurado.
En esta página se enumeran las instrucciones de instalación y configuración del controlador F5 BIG-IP CIS e IPAM. Como requisito previo, debe tener un sistema BIG-IP de F5 implementado y con licencia. También debe tener licencia para los servicios SDN, que se incluyen de forma predeterminada con la licencia base BIG-IP ve.
BIG-IP de F5 se puede implementar en modo independiente o en modo cluster. A efectos de esta validación, F5 BIG-IP se implementó en modo independiente, pero, a efectos de producción, es preferible disponer de un cluster de BIG-IP para evitar un único punto de fallo. |
Un sistema BIG-IP de F5 se puede implementar en hardware dedicado, en la nube o como un dispositivo virtual en las instalaciones con versiones superiores a 12.x para que se integre con F5 CIS. A efectos de este documento, el sistema BIG-IP de F5 se validó como dispositivo virtual, por ejemplo, mediante LA edición BIG-IP ve. |
Versiones validadas
Tecnología |
Versión de software |
Red Hat OpenShift |
4.6 EUS, 4.7 |
EDICIÓN F5 BIG-IP VE |
16.1.0 |
Servicio de entrada de contenedores F5 |
2.5.1 |
Controlador IPAM F5 |
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 de imperativo. Vaya a. "Repositorio de F5 AS3 GitHub"Y descargue el último archivo RPM.
-
Inicie sesión en el sistema BIG-IP de F5, desplácese a iApps > Package Management LX y haga clic en Import.
-
Haga clic en elegir archivo y seleccione el archivo de RPM AS3 descargado, haga clic en Aceptar y, a continuación, haga clic en cargar.
-
Confirme que la extensión AS3 se ha instalado correctamente.
-
A continuación, configure los recursos necesarios para la comunicación entre los sistemas OpenShift Y BIG-IP. En primer lugar, 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. Desplácese a Red > túneles > Perfiles, haga clic en Crear y establezca el perfil principal en vxlan y el tipo de inundación en multidifusión. Introduzca un nombre para el perfil y haga clic en terminado.
-
Desplácese a Red > túneles > Lista de túneles, haga clic en Crear e introduzca el nombre y la dirección IP local del 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 de Red Hat OpenShift con privilegios de administrador de clúster.
-
Cree una subred hosten OpenShift para el servidor BIG-IP de F5, que amplía la subred del clúster OpenShift al servidor BIG-IP de F5. 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 BIG-IP VTEP (túnel VXLAN) 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 el hostIP 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 intervalo de subred IP del clúster para la subred del host creada para el servidor BIG-IP de F5.
[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 autoIP en OpenShift VXLAN con una IP en el rango de subred de host de OpenShift correspondiente al servidor BIG-IP de F5. Inicie sesión en el sistema BIG-IP de F5, desplácese a Red > IP automáticas y haga clic en Crear. Introduzca una dirección IP desde la subred IP del clúster creada para la subred de host BIG-IP de F5, seleccione el túnel VXLAN e introduzca los demás detalles. A continuación, haga clic en finalizado.
-
Cree una partición en el sistema BIG-IP de F5 que se va a configurar y utilizar con CIS. Vaya a sistema > usuarios > Lista de particiones, haga clic en Crear e introduzca los detalles. A continuación, haga clic en finalizado.
F5 recomienda que no se realice ninguna configuración manual en la partición que gestiona CIS. -
Instale EL F5 BIG-IP CIS utilizando el operador de OperatorHub. Inicie sesión en el clúster de Red Hat OpenShift con privilegios de administración de clúster y cree un secreto con las credenciales de inicio de sesión del sistema BIG-IP de F5, que 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
-
Instale los CRD de F5 CIS.
[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
-
Desplácese a Operators > OperatorHub, busque la palabra clave F5 y haga clic en el icono F5 Container Ingresing Service.
-
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.
-
Se tarda un rato en instalar el operador.
-
Después de instalar el operador, se muestra el mensaje instalación correcta.
-
Vaya a operadores > operadores instalados, haga clic en F5 Container Ingresing Service y, a continuación, haga clic en Crear instancia en el icono F5BigIpctlr.
-
Haga clic en YAML View y pegue el siguiente contenido después de actualizar los parámetros necesarios.
Actualice los parámetros bigip_partition
, "openshift_sdn_name",bigip_url
y..bigip_login_secret
a continuación se muestran los valores de la 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. De esta forma se instalan los POD CIS en el espacio de nombres del sistema kube.
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 integrado es responsable de la publicidad y el manejo del tráfico de estas rutas. Sin embargo, también puede configurar F5 CIS para que admita las rutas a través de un sistema BIG-IP externo de F5, que puede ejecutarse como un enrutador auxiliar o como un reemplazo del enrutador OpenShift autoalojado. CIS crea un servidor virtual en EL sistema BIG-IP que actúa como enrutador para las rutas OpenShift y BIG-IP maneja el anuncio y el enrutamiento de 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 se definen para el recurso de implementación de OpenShift en la API de Apps/v1. Por lo tanto, si se usan con la API de recurso cis.f5.com/v1 de F5BigIpctlr, reemplace los guiones (-) por guiones bajos (_) para los nombres de los parámetros. -
Los argumentos que se pasan a la creación de recursos CIS incluyen
ipam: true
y..custom_resource_mode: true
. Estos parámetros son necesarios para habilitar la integración CIS con un controlador IPAM. Compruebe que CIS ha habilitado la integración 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, la función y el enlace de rol necesarios para el controlador IPAM de F5. Cree un archivo YAML y pegue 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
-
Cree 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 intervalo ip en spec.template.spec.Containers[0].args a continuación para reflejar los rangos de direcciones IP y ipamLabels correspondientes a su configuración. IpamLabels [ range1
y..range2
En ejemplo inferior] es necesario anotar los servicios de tipo LoadBalancer para el controlador IPAM a fin de detectar y asignar una dirección IP del intervalo 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 IPAM de F5.
[admin@rhel-7 ~]$ oc create -f f5-ipam-deployment.yaml deployment/f5-ipam-controller created
-
Compruebe que se están ejecutando los POD del controlador IPAM de F5.
[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 F5 IPAM.
[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
-
Cree 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 ha creado.
[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
-
Compruebe si los pods están en ejecución.
[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
-
Compruebe si se crea el servidor virtual correspondiente en EL sistema BIG-IP para el servicio del tipo LoadBalancer en OpenShift. Desplácese a tráfico local > servidores virtuales > Lista de servidores virtuales.