Installation des équilibreurs de charge F5 BIG-IP
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.
|
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. |
|
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
-
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.
-
Connectez-vous au système F5 BIG-IP, accédez à iApps > Package Management LX et cliquez sur Importer.
-
Cliquez sur Choisir un fichier et sélectionnez le fichier AS3 RPM téléchargé, cliquez sur OK, puis sur Télécharger.
-
Confirmez que l’extension AS3 est installée avec succès.
-
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é.
-
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é.
-
Connectez-vous au cluster Red Hat OpenShift avec les privilèges d’administrateur de cluster.
-
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
-
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
Modifiez l'adresse IP de l'hôte et d'autres détails en fonction de votre environnement. -
Créez la ressource HostSubnet.
[admin@rhel-7 ~]$ oc create -f f5-kctlr-openshift-hostsubnet.yaml hostsubnet.network.openshift.io/f5-server created
-
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
-
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é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é.
F5 recommande qu'aucune configuration manuelle ne soit effectuée sur la partition gérée par CIS. -
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
-
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
-
Accédez à Opérateurs > OperatorHub, recherchez le mot-clé F5 et cliquez sur la mosaïque Service d'entrée de conteneur F5.
-
Lisez les informations de l’opérateur et cliquez sur Installer.
-
Sur l’écran de l’opérateur d’installation, laissez tous les paramètres par défaut et cliquez sur Installer.
-
L'installation de l'opérateur prend un certain temps.
-
Une fois l'opérateur installé, le message Installation réussie s'affiche.
-
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.
-
Cliquez sur Affichage YAML et collez le contenu suivant après avoir mis à jour les paramètres nécessaires.
Mettre à jour les paramètres bigip_partition
, ` openshift_sdn_name`,bigip_url
etbigip_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
-
Après avoir collé ce contenu, cliquez sur Créer. Cela installe les pods CIS dans l'espace de noms kube-system.
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. -
Les arguments avancés pour la création de ressources CIS incluent
ipam: true
etcustom_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
-
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
-
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
-
Créez un fichier YAML et collez la définition de déploiement IPAM F5 fournie ci-dessous.
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. Étiquettes ipam[ range1
etrange2
[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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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.