Orchestrating docker-selenium via Kubernetes
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
LICENSE
README.md
selenium-hub-rc.yaml
selenium-hub-svc.yaml
selenium-node-chrome-rc.yaml
selenium-node-firefox-rc.yaml

README.md

Kubernetes-docker-selenium

Orchestrating docker-selenium via Kubernetes

Kubernetes is a platform for hosting Docker containers in a clustered environment with multiple Docker hosts. Kubernetes is a system for managing containerized applications across a cluster of nodes.

Minikube runs a single-node Kubernetes cluster inside a VM on your laptop for users looking to try out Kubernetes.Basics of Kubernetes

Kubernetes 101

  • Pod: A group of containers
  • Labels: Labels for identifying pods
  • Kubelet: Container Agent
  • etcd: A metadata service
  • Proxy: A load balancer for pods
  • Replication Controller: Manages replication of pods

Using Minikube

Running a Kubernetes environment using Minikube for simplicity purpose.

Launching selenium hub

$ kubectl run selenium-hub --image selenium/hub:3.4.0 --port 4444

Exposing selenium-hub to be able to access externally

$ kubectl expose deployment selenium-hub --type=NodePort

To Access the selenium-hub url

$ minikube service selenium-hub --url

It would show something like,
http://192.168.99.100:xxxx

Bringing up Selenium Nodes

$ kubectl run selenium-node-chrome --image selenium/node-chrome:3.4.0 --env="HUB_PORT_4444_TCP_ADDR=selenium-hub" --env="HUB_PORT_4444_TCP_PORT=4444"
$ kubectl run selenium-node-firefox --image selenium/node-firefox:3.4.0 --env="HUB_PORT_4444_TCP_ADDR=selenium-hub" --env="HUB_PORT_4444_TCP_PORT=4444"

Scaling Selenium Grid cluster

$ kubectl run selenium-node-chrome --image selenium/node-chrome:3.4.0 --env="HUB_PORT_4444_TCP_ADDR=selenium-hub" --env="HUB_PORT_4444_TCP_PORT=4444"

Using Google Container Engine

Launch a Selenium hub

$ kubectl -f create selenium-hub-rc.yaml

Selenium hub as a service for nodes to connect

kubectl create -f selenium-hub-svc.yml

Bringing up Selenium nodes

Chrome

$kubectl create -f selenium-node-chrome-rc.yaml

Firefox

$kubectl create -f selenium-node-firefox-rc.yaml

Using Helm

Helm is a tool that streamlines installing and managing Kubernetes applications. Think of it like apt/yum/homebrew for Kubernetes.

  • A Helm package is bundled up as a chart.

  • Charts are Helm packages that contain at least two things:

    • A description of the package (Chart.yaml)
    • One or more templates, which contain Kubernetes manifest files
  • Charts can be stored on disk, or fetched from remote chart repositories (like Debian or RedHat packages) it users git under the hood

Helm package can be found here: helm-selenium 

To get started, its as simple as:

$ helm install stable/selenium