Skip to main content
NetApp container solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Instalando balanceadores de carga F5 BIG-IP

Colaboradores kevin-hoke

O F5 BIG-IP é um Application Delivery Controller (ADC) que oferece um amplo conjunto de serviços avançados de gerenciamento de tráfego e segurança de nível de produção, como balanceamento de carga L4-L7, descarregamento SSL/TLS, DNS, firewall e muito mais. Esses serviços aumentam drasticamente a disponibilidade, a segurança e o desempenho de seus aplicativos.

O F5 BIG-IP pode ser implantado e consumido de várias maneiras: em hardware dedicado, na nuvem ou como um dispositivo virtual local. Consulte a documentação aqui para explorar e implantar o F5 BIG-IP conforme a necessidade.

Para integração eficiente dos serviços F5 BIG-IP com o Red Hat OpenShift, a F5 oferece o BIG-IP Container Ingress Service (CIS). O CIS é instalado como um pod controlador que monitora a API OpenShift para determinadas Definições de Recursos Personalizados (CRDs) e gerencia a configuração do sistema F5 BIG-IP. O F5 BIG-IP CIS pode ser configurado para controlar os tipos de serviço LoadBalancers e Routes no OpenShift.

Além disso, para alocação automática de endereços IP para atender ao tipo LoadBalancer, você pode utilizar o controlador F5 IPAM. O controlador F5 IPAM é instalado como um pod de controlador que monitora a API OpenShift para serviços do LoadBalancer com uma anotação ipamLabel para alocar o endereço IP de um pool pré-configurado.

Esta página lista as instruções de instalação e configuração do controlador F5 BIG-IP CIS e IPAM. Como pré-requisito, você deve ter um sistema F5 BIG-IP implantado e licenciado. Ele também deve ser licenciado para serviços SDN, que são incluídos por padrão na licença base do BIG-IP VE.

Observação O F5 BIG-IP pode ser implantado no modo autônomo ou em cluster. Para fins desta validação, o F5 BIG-IP foi implantado no modo autônomo, mas, para fins de produção, é preferível ter um cluster de BIG-IPs para evitar um único ponto de falha.
Observação Um sistema F5 BIG-IP pode ser implantado em hardware dedicado, na nuvem ou como um dispositivo virtual local com versões superiores a 12.x para ser integrado ao F5 CIS. Para os fins deste documento, o sistema F5 BIG-IP foi validado como um dispositivo virtual, por exemplo, usando a edição BIG-IP VE.

Lançamentos validados

Tecnologia

Versão do software

Red Hat OpenShift

4,6 EUS, 4,7

Edição F5 BIG-IP VE

16.1.0

Serviço de entrada de contêiner F5

2.5.1

Controlador IPAM F5

0.1.4

F5 AS3

3.30.0

Instalação

  1. Instale a extensão F5 Application Services 3 para permitir que sistemas BIG-IP aceitem configurações em JSON em vez de comandos imperativos. Vá para "Repositório F5 AS3 GitHub" e baixe o arquivo RPM mais recente.

  2. Efetue login no sistema F5 BIG-IP, navegue até iApps > Package Management LX e clique em Importar.

  3. Clique em Escolher arquivo e selecione o arquivo AS3 RPM baixado, clique em OK e depois clique em Carregar.

    Upload de iApps

  4. Confirme se a extensão AS3 foi instalada com sucesso.

    Validação de instalação do AS3

  5. Em seguida, configure os recursos necessários para a comunicação entre os sistemas OpenShift e BIG-IP. Primeiro, crie um túnel entre o OpenShift e o servidor BIG-IP criando uma interface de túnel VXLAN no sistema BIG-IP para o OpenShift SDN. Navegue até Rede > Túneis > Perfis, clique em Criar e defina o Perfil Pai como vxlan e o Tipo de Inundação como Multicast. Digite um nome para o perfil e clique em Concluído.

    Criar perfil VXLAN

  6. Navegue até Rede > Túneis > Lista de Túneis, clique em Criar e insira o nome e o endereço IP local para o túnel. Selecione o perfil de túnel que foi criado na etapa anterior e clique em Concluído.

    Criar túnel VXLAN

  7. Efetue login no cluster do Red Hat OpenShift com privilégios de administrador de cluster.

  8. Crie uma hostsubnet no OpenShift para o servidor F5 BIG-IP, que estende a sub-rede do cluster OpenShift para o servidor F5 BIG-IP. Baixe a definição YAML da sub-rede do host.

    wget https://github.com/F5Networks/k8s-bigip-ctlr/blob/master/docs/config_examples/openshift/f5-kctlr-openshift-hostsubnet.yaml
  9. Edite o arquivo de sub-rede do host e adicione o IP BIG-IP VTEP (túnel VXLAN) para o 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
    Observação Altere o hostIP e outros detalhes aplicáveis ao seu ambiente.
  10. Crie o recurso HostSubnet.

    [admin@rhel-7 ~]$ oc create -f f5-kctlr-openshift-hostsubnet.yaml
    
    hostsubnet.network.openshift.io/f5-server created
  11. Obtenha o intervalo de sub-rede IP do cluster para a sub-rede do host criada para o 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. Crie um IP próprio no OpenShift VXLAN com um IP no intervalo de sub-rede do host do OpenShift correspondente ao servidor F5 BIG-IP. Efetue login no sistema F5 BIG-IP, navegue até Rede > IPs próprios e clique em Criar. Insira um IP da sub-rede IP do cluster criada para a sub-rede do host F5 BIG-IP, selecione o túnel VXLAN e insira os outros detalhes. Em seguida, clique em Concluído.

    Criar IP próprio para VXLAN

  13. Crie uma partição no sistema F5 BIG-IP para ser configurada e usada com o CIS. Navegue até Sistema > Usuários > Lista de partições, clique em Criar e insira os detalhes. Em seguida, clique em Concluído.

    Criar partição BIG-IP

    Observação O F5 recomenda que nenhuma configuração manual seja feita na partição gerenciada pelo CIS.
  14. Instale o F5 BIG-IP CIS usando o operador do OperatorHub. Efetue login no cluster Red Hat OpenShift com privilégios de administrador de cluster e crie um segredo com as credenciais de login do sistema F5 BIG-IP, que é um pré-requisito para o 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. Instale os CRDs 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. Navegue até Operadores > OperatorHub, pesquise a palavra-chave F5 e clique no bloco Serviço de entrada de contêiner F5.

    F5 CIS no OperatorHub

  17. Leia as informações do operador e clique em Instalar.

    Bloco de informações do F5 CIS no OperatorHub

  18. Na tela Instalar operador, deixe todos os parâmetros padrão e clique em Instalar.

    Instalar o operador F5 CIS

  19. Demora um pouco para instalar o operador.

    Progresso da instalação do operador F5 CIS

  20. Após a instalação do operador, a mensagem Instalação bem-sucedida será exibida.

  21. Navegue até Operadores > Operadores instalados, clique em F5 Container Ingress Service e, em seguida, clique em Criar instância no bloco F5BigIpCtlr.

    Criar F5BigIpCtlr

  22. Clique em Visualização YAML e cole o seguinte conteúdo depois de atualizar os parâmetros necessários.

    Observação Atualizar os parâmetros bigip_partition , ` openshift_sdn_name`, bigip_url e bigip_login_secret abaixo para refletir os valores da sua configuração antes de copiar o conteúdo.
    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. Depois de colar este conteúdo, clique em Criar. Isso instala os pods do CIS no namespace kube-system.

    Validar pods F5 CIS

    Observação O Red Hat OpenShift, por padrão, fornece uma maneira de expor os serviços por meio de rotas para balanceamento de carga L7. Um roteador OpenShift integrado é responsável por anunciar e manipular o tráfego para essas rotas. No entanto, você também pode configurar o F5 CIS para oferecer suporte às rotas por meio de um sistema F5 BIG-IP externo, que pode ser executado como um roteador auxiliar ou um substituto para o roteador OpenShift auto-hospedado. O CIS cria um servidor virtual no sistema BIG-IP que atua como um roteador para as rotas do OpenShift, e o BIG-IP lida com o roteamento de anúncios e tráfego. Consulte a documentação aqui para obter informações sobre os parâmetros para habilitar esse recurso. Observe que esses parâmetros são definidos para o recurso OpenShift Deployment na API apps/v1. Portanto, ao usá-los com o recurso F5BigIpCtlr cis.f5.com/v1 API, substitua os hifens (-) por sublinhados (_) para os nomes dos parâmetros.
  24. Os argumentos que são passados para a criação de recursos do CIS incluem ipam: true e custom_resource_mode: true . Esses parâmetros são necessários para habilitar a integração do CIS com um controlador IPAM. Verifique se o CIS habilitou a integração do IPAM criando o recurso F5 IPAM.

    [admin@rhel-7 ~]$ oc get f5ipam -n kube-system
    
    NAMESPACE   NAME                       	 	AGE
    kube-system   ipam.10.61.181.19.ocp-vmw  	 43s
  25. Crie a conta de serviço, a função e a associação de função necessárias para o controlador F5 IPAM. Crie um arquivo YAML e cole o seguinte conteúdo.

    [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. Crie os 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. Crie um arquivo YAML e cole a definição de implantação do F5 IPAM fornecida abaixo.

    Observação Atualize o parâmetro ip-range em spec.template.spec.containers[0].args abaixo para refletir os ipamLabels e intervalos de endereços IP correspondentes à sua configuração.
    Observação ipamLabels[range1 e range2 [no exemplo abaixo] precisam ser anotados para os serviços do tipo LoadBalancer para que o controlador IPAM detecte e atribua um endereço IP do 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
  28. Crie a implantação do controlador F5 IPAM.

    [admin@rhel-7 ~]$ oc create -f f5-ipam-deployment.yaml
    
    deployment/f5-ipam-controller created
  29. Verifique se os pods do controlador F5 IPAM estão em execução.

    [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. Crie o 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

Verificação

  1. Crie um serviço do 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. Verifique se o controlador IPAM atribui um IP externo a ele.

    [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. Crie uma implantação e use o serviço LoadBalancer que foi criado.

    [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. Verifique se os pods estão 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 se o servidor virtual correspondente foi criado no sistema BIG-IP para o serviço do tipo LoadBalancer no OpenShift. Navegue até Tráfego local > Servidores virtuais > Lista de servidores virtuais.

    Validar a criação de servidores virtuais BIG-IP para o tipo de serviço correspondente LoadBalancer