Selenium Grid 4 — Parte 4

Franklin Araujo
5 min readNov 6, 2022

--

Fala pessoal blz? Esse é um dos artigos da série Selenium Grid 4. Se perdeu algum episódio segue os atalhos:

Parte 1 | Parte 2 | Parte 3

Nesse artigo iremos nos aproximar de uma implantação produtiva do Selenium Grid 4. Na parte Parte 2 basicamente implantamos o Selenium Grid 4 no Docker em uma máquina virtual Linux. Serve como aprendizado inicial, mas e se for preciso escalar como em um cluster Azure Kubernetes?

Pré-Requisito:
- Conta na Azure, para o laboratório pode-se utilizar a avaliação gratuita na Azure
- Conhecimento básico de Azure Kubernetes

Passo a passo:

1- Criação do cluster AKS
Com a conta criada na Azure, e devidamente logado iremos criar o cluster AKS com os nós virtuais.
Na lista de serviços Azure selecione o Serviço do Kubernetes

Na tela seguinte clique em “Criar um cluster do Kubernetes”

Agora iremos preencher as informações destacadas para configurarmos nosso cluster
No print abaixo informe os valores:

  • Grupo de Recursos: Criar novo: rg-kubernete-selenium
  • Nome do cluster do Kubernete: kubernete-selenium-hub
  • Escolha a região (US) East US
  • Em Disponibilidade do Servidor de API deixe padrão 99.5% (Otimize para o custo).
  • Na área de Pool de nós primários deixe o padrão Standard DS2v2, dimensionamento automático e o intervalo máximo de nós = 2
  • Clique em “Avançar: Pools de nós >”

Na tela a seguir marque a opção “Habilitar nós virtuais

Clique em Revisar e Criar

Será executada uma validação das configurações informadas, dando tudo certo na próxima tela é só clicar em Criar. Caso ocorra algum erro, verifique o log do erro e revise o preenchimento das informações.

Ao final da implantação a tela a seguir será apresentada. Clique em “Ir para o Recurso” para continuarmos nossas configurações.

Na tela a seguir siga os passos:
1. Clique em Conectar
2. Será aberta uma tela ao lado com as informações para conexão, clique em Abrir o Cloud Shell.
3.
Será necessário confirmar o armazenamento na Azure para iniciar o Azure Cloud Shell, clique em Criar Armazenamento

Os comandos do passo 2 serão executados automaticamente

Implantação selenium HUB e NÓS

Vamos criar 5 arquivos YAML, transferir para o armazenamento Azure, e depois executar:

  1. Implantação do Selenium Hub

2. Criação do serviço para o Selenium Hub permitir tráfego externo

3. Implantação do nó Firefox

4. Implantação do nó Edge

5. Implantação do nó Chrome

Transfira todos os 5 arquivos através do Cloud Shell Azure pela opção do print abaixo

Agora iremos executar os comandos abaixo:

  1. Implantação do selenium hub
    kubectl create -f selenium-hub-deployment.yaml

A saída semelhante ao print abaixo

2. Criação do serviço para permitir comunicação externa no selenium hub
kubectl create -f selenium-hub-svc.yaml
Esse comando que será executado além de expor o IP público para acesso externo irá criar um balanceador de carga externo e assina um endereço IP fixo e externo para o serviço

A saída semelhante ao print abaixo

3. Obtenção do endereço externo do Selenium Grid
kubectl get services

A saída semelhante ao print abaixo

Em seu navegador informe o endereço substituindo o IP pelo seu IP externo http://20.124.162.169:4444
Será aberto o Selenium Grid 4 sem nó adicionado ainda.

Para adicionar os nós iremos executar os comandos abaixo:

  • Chrome:
    kubectl create -f selenium-node-chrome-deployment.yaml
  • Edge:
    kubectl create -f selenium-node-edge-deployment.yaml
  • Firefox:
    kubectl create -f selenium-node-firefox-deployment.yaml

A saída será semelhante ao print abaixo:

Para verificar os pods criados execute o comando abaixo:
kubectl get pods

Note que foram criados 2 pods para cada nó referente aos navegadores, que foi informado no parâmetro replicas: 2 do arquivo yaml.

Retornando ao endereço do Selenium Grid: http://20.124.162.169:4444 verifique que os nós foram adicionados.

Com isso completamos a implantação do Selenium Grid no Azure Kubernetes. Notamos que esse modelo produtivo é o que mais se aproxima de um uso real. Temos um autoscaler em cada nó dos pods implantados o que possibilita escalar horizontalmente conforme necessidade.

OBS: Até o fechamento desse artigo foi liberada versão 4.6 do Selenium Grid. Caso queiram testar é só alterar os parâmetros abaixo de cada arquivo yaml:
image: selenium/hub:4.6.0
image: selenium/node-chrome:4.6.0
image: selenium/node-edge:4.6.0
image: selenium/node-firefox:4.6.0

Um grande abraço e até a próxima

--

--

Franklin Araujo

Tech lead | Software Engineering lead | Systems engineering specialist apaixonado por tecnologia, games e uma boa leitura sempre!