Skip to main content
NetApp container solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Instalación de balanceadores de carga F5 BIG-IP

Colaboradores kevin-hoke

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.

Nota 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.
Nota 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

  1. 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.

  2. Inicie sesión en el sistema F5 BIG-IP, navegue a iApps > Administración de paquetes LX y haga clic en Importar.

  3. Haga clic en Elegir archivo y seleccione el archivo RPM AS3 descargado, haga clic en Aceptar y luego haga clic en Cargar.

    Carga de iApps

  4. Confirme que la extensión AS3 se haya instalado correctamente.

    Validación de instalación de AS3

  5. 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.

    Crear perfil VXLAN

  6. 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.

    Crear túnel VXLAN

  7. Inicie sesión en el clúster Red Hat OpenShift con privilegios de administrador del clúster.

  8. 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
  9. 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
    Nota Cambie la IP del host y otros detalles según corresponda a su entorno.
  10. Cree el recurso HostSubnet.

    [admin@rhel-7 ~]$ oc create -f f5-kctlr-openshift-hostsubnet.yaml
    
    hostsubnet.network.openshift.io/f5-server created
  11. 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
  12. 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.

    Crear una IP propia para VXLAN

  13. 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.

    Crear partición BIG-IP

    Nota F5 recomienda que no se realice ninguna configuración manual en la partición administrada por CIS.
  14. 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
  15. 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
  16. Vaya a Operadores > OperatorHub, busque la palabra clave F5 y haga clic en el mosaico Servicio de ingreso de contenedor F5.

    F5 CIS en OperatorHub

  17. Lea la información del operador y haga clic en Instalar.

    Mosaico de información de F5 CIS en OperatorHub

  18. En la pantalla Instalar operador, deje todos los parámetros predeterminados y haga clic en Instalar.

    Instalar el operador F5 CIS

  19. La instalación del operador demora un tiempo.

    Progreso de la instalación del operador F5 CIS

  20. Una vez instalado el operador, se muestra el mensaje Instalación exitosa.

  21. 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.

    Crear F5BigIpCtlr

  22. Haga clic en Vista YAML y pegue el siguiente contenido después de actualizar los parámetros necesarios.

    Nota Actualizar los parámetros bigip_partition , openshift_sdn_name, bigip_url y bigip_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
  23. Después de pegar este contenido, haga clic en Crear. Esto instala los pods CIS en el espacio de nombres kube-system.

    Validar pods F5 CIS

    Nota 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.
  24. 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 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
  25. 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
  26. 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
  27. Cree un archivo YAML y pegue la definición de implementación de F5 IPAM que se proporciona a continuación.

    Nota 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.
    Nota Etiquetas ipam[range1 y range2 [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
  28. Cree la implementación del controlador F5 IPAM.

    [admin@rhel-7 ~]$ oc create -f f5-ipam-deployment.yaml
    
    deployment/f5-ipam-controller created
  29. 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
  30. 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

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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.

    Validar la creación de servidores virtuales BIG-IP para el tipo de servicio correspondiente LoadBalancer