Skip to main content
NetApp container solutions
La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Installation des équilibreurs de charge F5 BIG-IP

Contributeurs kevin-hoke

F5 BIG-IP est un contrôleur de distribution d'applications (ADC) qui offre un large ensemble de services avancés de gestion du trafic et de sécurité de niveau production tels que l'équilibrage de charge L4-L7, le déchargement SSL/TLS, le DNS, le pare-feu et bien d'autres. Ces services augmentent considérablement la disponibilité, la sécurité et les performances de vos applications.

F5 BIG-IP peut être déployé et consommé de différentes manières, sur du matériel dédié, dans le cloud ou en tant qu'appliance virtuelle sur site. Reportez-vous à la documentation ici pour explorer et déployer F5 BIG-IP selon les besoins.

Pour une intégration efficace des services F5 BIG-IP avec Red Hat OpenShift, F5 propose le service BIG-IP Container Ingress (CIS). CIS est installé en tant que pod contrôleur qui surveille l'API OpenShift pour certaines définitions de ressources personnalisées (CRD) et gère la configuration du système F5 BIG-IP. F5 BIG-IP CIS peut être configuré pour contrôler les types de services LoadBalancers et Routes dans OpenShift.

De plus, pour l'allocation automatique d'adresses IP afin de servir le type LoadBalancer, vous pouvez utiliser le contrôleur IPAM F5. Le contrôleur F5 IPAM est installé en tant que pod de contrôleur qui surveille les services OpenShift API pour LoadBalancer avec une annotation ipamLabel pour allouer l'adresse IP à partir d'un pool préconfiguré.

Cette page répertorie les instructions d'installation et de configuration du contrôleur F5 BIG-IP CIS et IPAM. Comme condition préalable, vous devez disposer d’un système F5 BIG-IP déployé et sous licence. Il doit également être sous licence pour les services SDN, qui sont inclus par défaut avec la licence de base BIG-IP VE.

Remarque F5 BIG-IP peut être déployé en mode autonome ou en cluster. Aux fins de cette validation, F5 BIG-IP a été déployé en mode autonome, mais, à des fins de production, il est préférable d'avoir un cluster de BIG-IP pour éviter un point de défaillance unique.
Remarque Un système F5 BIG-IP peut être déployé sur du matériel dédié, dans le cloud ou en tant qu'appliance virtuelle sur site avec des versions supérieures à 12.x pour être intégré à F5 CIS. Aux fins du présent document, le système F5 BIG-IP a été validé en tant qu'appareil virtuel, par exemple à l'aide de l'édition BIG-IP VE.

Versions validées

Technologie

Version du logiciel

Red Hat OpenShift

4,6 EUS, 4,7

Édition F5 BIG-IP VE

16.1.0

Service d'entrée de conteneurs F5

2.5.1

Contrôleur IPAM F5

0.1.4

F5 AS3

3.30.0

Installation

  1. Installez l’extension F5 Application Services 3 pour permettre aux systèmes BIG-IP d’accepter des configurations au format JSON au lieu de commandes impératives. Aller à "Dépôt GitHub F5 AS3" , et téléchargez le dernier fichier RPM.

  2. Connectez-vous au système F5 BIG-IP, accédez à iApps > Package Management LX et cliquez sur Importer.

  3. Cliquez sur Choisir un fichier et sélectionnez le fichier AS3 RPM téléchargé, cliquez sur OK, puis sur Télécharger.

    Téléchargement d'iApps

  4. Confirmez que l’extension AS3 est installée avec succès.

    Validation de l'installation AS3

  5. Configurez ensuite les ressources nécessaires à la communication entre les systèmes OpenShift et BIG-IP. Créez d’abord un tunnel entre OpenShift et le serveur BIG-IP en créant une interface de tunnel VXLAN sur le système BIG-IP pour OpenShift SDN. Accédez à Réseau > Tunnels > Profils, cliquez sur Créer et définissez le profil parent sur vxlan et le type d’inondation sur Multidiffusion. Saisissez un nom pour le profil et cliquez sur Terminé.

    Créer un profil VXLAN

  6. Accédez à Réseau > Tunnels > Liste des tunnels, cliquez sur Créer et saisissez le nom et l’adresse IP locale du tunnel. Sélectionnez le profil de tunnel créé à l’étape précédente et cliquez sur Terminé.

    Créer un tunnel VXLAN

  7. Connectez-vous au cluster Red Hat OpenShift avec les privilèges d’administrateur de cluster.

  8. Créez un sous-réseau hôte sur OpenShift pour le serveur F5 BIG-IP, qui étend le sous-réseau du cluster OpenShift au serveur F5 BIG-IP. Téléchargez la définition YAML du sous-réseau hôte.

    wget https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/config_examples/openshift/f5-kctlr-openshift-hostsubnet.yaml
  9. Modifiez le fichier de sous-réseau hôte et ajoutez l'adresse IP BIG-IP VTEP (tunnel VXLAN) pour 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
    Remarque Modifiez l'adresse IP de l'hôte et d'autres détails en fonction de votre environnement.
  10. Créez la ressource HostSubnet.

    [admin@rhel-7 ~]$ oc create -f f5-kctlr-openshift-hostsubnet.yaml
    
    hostsubnet.network.openshift.io/f5-server created
  11. Obtenez la plage de sous-réseaux IP du cluster pour le sous-réseau hôte créé pour le serveur 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. Créez une IP personnelle sur OpenShift VXLAN avec une IP dans la plage de sous-réseau hôte d'OpenShift correspondant au serveur F5 BIG-IP. Connectez-vous au système F5 BIG-IP, accédez à Réseau > Auto-IP et cliquez sur Créer. Saisissez une adresse IP à partir du sous-réseau IP du cluster créé pour le sous-réseau hôte F5 BIG-IP, sélectionnez le tunnel VXLAN et saisissez les autres détails. Cliquez ensuite sur Terminé.

    Créer une IP autonome pour VXLAN

  13. Créez une partition dans le système F5 BIG-IP à configurer et à utiliser avec CIS. Accédez à Système > Utilisateurs > Liste des partitions, cliquez sur Créer et saisissez les détails. Cliquez ensuite sur Terminé.

    Créer une partition BIG-IP

    Remarque F5 recommande qu'aucune configuration manuelle ne soit effectuée sur la partition gérée par CIS.
  14. Installez le F5 BIG-IP CIS à l'aide de l'opérateur d'OperatorHub. Connectez-vous au cluster Red Hat OpenShift avec les privilèges d'administrateur de cluster et créez un secret avec les informations de connexion au système F5 BIG-IP, ce qui est une condition préalable pour l'opérateur.

    [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. Installez les CRD 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
  16. Accédez à Opérateurs > OperatorHub, recherchez le mot-clé F5 et cliquez sur la mosaïque Service d'entrée de conteneur F5.

    F5 CIS dans OperatorHub

  17. Lisez les informations de l’opérateur et cliquez sur Installer.

    Mosaïque d'informations F5 CIS dans OperatorHub

  18. Sur l’écran de l’opérateur d’installation, laissez tous les paramètres par défaut et cliquez sur Installer.

    Installer l'opérateur F5 CIS

  19. L'installation de l'opérateur prend un certain temps.

    Progression de l'installation de l'opérateur F5 CIS

  20. Une fois l'opérateur installé, le message Installation réussie s'affiche.

  21. Accédez à Opérateurs > Opérateurs installés, cliquez sur F5 Container Ingress Service, puis cliquez sur Créer une instance sous la mosaïque F5BigIpCtlr.

    Créer F5BigIpCtlr

  22. Cliquez sur Affichage YAML et collez le contenu suivant après avoir mis à jour les paramètres nécessaires.

    Remarque Mettre à jour les paramètres bigip_partition , ` openshift_sdn_name`, bigip_url et bigip_login_secret ci-dessous pour refléter les valeurs de votre configuration avant de copier le contenu.
    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. Après avoir collé ce contenu, cliquez sur Créer. Cela installe les pods CIS dans l'espace de noms kube-system.

    Valider les modules F5 CIS

    Remarque Red Hat OpenShift, par défaut, fournit un moyen d'exposer les services via des routes pour l'équilibrage de charge L7. Un routeur OpenShift intégré est responsable de la publicité et de la gestion du trafic pour ces itinéraires. Cependant, vous pouvez également configurer le F5 CIS pour prendre en charge les routes via un système F5 BIG-IP externe, qui peut fonctionner soit comme un routeur auxiliaire, soit comme un remplacement du routeur OpenShift auto-hébergé. CIS crée un serveur virtuel dans le système BIG-IP qui agit comme un routeur pour les routes OpenShift, et BIG-IP gère la publicité et le routage du trafic. Reportez-vous à la documentation ici pour obtenir des informations sur les paramètres permettant d'activer cette fonctionnalité. Notez que ces paramètres sont définis pour la ressource de déploiement OpenShift dans l'API apps/v1. Par conséquent, lorsque vous les utilisez avec la ressource F5BigIpCtlr cis.f5.com/v1 API, remplacez les tirets (-) par des traits de soulignement (_) pour les noms de paramètres.
  24. Les arguments avancés pour la création de ressources CIS incluent ipam: true et custom_resource_mode: true . Ces paramètres sont requis pour activer l'intégration CIS avec un contrôleur IPAM. Vérifiez que le CIS a activé l’intégration IPAM en créant la ressource IPAM F5.

    [admin@rhel-7 ~]$ oc get f5ipam -n kube-system
    
    NAMESPACE   NAME                       	 	AGE
    kube-system   ipam.10.61.181.19.ocp-vmw  	 43s
  25. Créez le compte de service, le rôle et la liaison de rôle requis pour le contrôleur IPAM F5. Créez un fichier YAML et collez le contenu suivant.

    [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. Créer les ressources.

    [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. Créez un fichier YAML et collez la définition de déploiement IPAM F5 fournie ci-dessous.

    Remarque Mettez à jour le paramètre ip-range dans spec.template.spec.containers[0].args ci-dessous pour refléter les ipamLabels et les plages d'adresses IP correspondant à votre configuration.
    Remarque Étiquettes ipam[range1 et range2 [dans l'exemple ci-dessous] doivent être annotés pour les services de type LoadBalancer pour que le contrôleur IPAM détecte et attribue une adresse IP à partir de la plage définie.
    [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. Créez le déploiement du contrôleur IPAM F5.

    [admin@rhel-7 ~]$ oc create -f f5-ipam-deployment.yaml
    
    deployment/f5-ipam-controller created
  29. Vérifiez que les pods du contrôleur IPAM F5 sont en cours d’exécution.

    [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. Créez le schéma IPAM 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

Vérification

  1. Créer un service de type 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. Vérifiez si le contrôleur IPAM lui attribue une IP externe.

    [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. Créez un déploiement et utilisez le service LoadBalancer qui a été créé.

    [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. Vérifiez si les pods fonctionnent.

    [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. Vérifiez si le serveur virtuel correspondant est créé dans le système BIG-IP pour le service de type LoadBalancer dans OpenShift. Accédez à Trafic local > Serveurs virtuels > Liste des serveurs virtuels.

    Valider la création de serveurs virtuels BIG-IP pour le type de service LoadBalancer correspondant