KBEA-00170 Configuring ElectricAccelerator 11.0 and Newer Versions to Run in Docker Containers

This KB article applies to ElectricAccelerator version 11.0 and newer versions. For information about versions 10.0 and 10.1, see KBEA-00163 Configuring ElectricAccelerator 10.0 and 10.1 to Run in Docker Containers.

ElectricAccelerator includes an integration to support Docker on Linux platforms. This section describes how to configure a containerized Cluster Manager, eMake, or agents.

Supported Use Cases

In version 11.0 and newer versions, ElectricAccelerator supports running a single agent per container and multiple containers per host.

Installing Docker

To use Docker containers, you must download and install Docker. For instructions, see Docker Enterprise Edition or Docker Community Edition.

(Agent Installations Only) Installing EFS and LOFS

Accelerator normally uses its own kernel modules to provide two file systems (EFS and LOFS) required by agents. During a non-container agent installation, these kernel modules are compiled and loaded into the kernel to provide the necessary file system drivers. But if you plan to run agents in containers, you must install these modules separately.

Electric Cloud provides an EFS and LOFS installer. It compiles the efs100 and lofs kernel modules if needed, tests them, and loads them into the kernel to provide the drivers. These drivers must have the same build version as your agents.

To install the EFS and LOFS kernel modules:

1. Log in as root.

2. Make sure that gcc, make, and kernel headers are installed.

These are required for compiling the kernel modules. For details about installing kernel headers, see the “Supported Linux Platforms” section in the “Supported Platforms and System Requirements” chapter of the ElectricAccelerator Installation and Configuration Guide at http://docs.electric-cloud.com/accelerator_doc/AcceleratorIndex.html.

3. Double-click the ElectricAcceleratorFileSystem---Install installer file This will be found inside the "containers" folder for the version on Sharefile"  

eg: /accelerator/release_11.0/11.0.0.84351/linux/containers/ElectricAcceleratorFileSystem-11.0.0.84351-Linux-x86_64-Install

4. Follow the prompts to complete the installation.

The installation packages might need a few minutes to extract.

5. Enter /etc/init.d/ecfs status and make sure that the EFS and LOFS kernel modules are running.

Building Your Docker Image from a Tar File

To build a Docker image for the Cluster Manager, eMake, or agent from a tar file:

1. Log in (using your personalized account) to the Electric Cloud ShareFile site at https://electric-cloud.sharefile.com/Authentication/Login.

2. Navigate to the following folder:

./products/accelerator/release_//linux/containers/

For example, for ElectricAccelerator version 11.0, navigate to

./products/accelerator/release_11_0/11.0.0.84351/linux/containers/

3. Click to download the tar file for the Cluster Manager, eMake, or agent, and then click Download.

4. Unzip and untar the file by entering:

tar xvzf ElectricAccelerator--Container.tar.gz

For example:

tar xvzf ElectricAccelerator-11.0.84351-ContainerAgent.tar.gz

5. Build a Docker image by entering:

docker build -t  -f /Dockerfile-- 

or:

docker build --tag= --file= 

For example:

docker build -t cm_img -f cm/Dockerfile-cm-ubuntu cm

Following are specific instructions for downloading a tar file for a specific component and building a Docker image on Ubuntu 16.x.

Component

Steps to Download Tar File and Build Image

eMake

  1. Download the ElectricAccelerator--ContainerEmake.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
    tar xvzf ElectricAccelerator--ContainerEmake.tar.gz 
    The files are extracted to a directory named emake.

    3. Enter:

docker build -t= -f=emake/Dockerfile-emake-ubuntu emake

        or  

  docker build -t= -f=/path/emake/Dockerfile-emake-ubuntu 
/path/emake

Cluster Manager

  1. Download the ElectricAccelerator-<version>-ContainerClusterManager.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
    tar xvzf ElectricAccelerator--ContainerClusterManager.tar.gz

    The files are extracted to a directory named cm.

    3. Enter:

     docker build -t= -f=cm/Dockerfile-cm-ubuntu cm

       or     

     docker build -t= -f=/path/cm/Dockerfile-cm-ubuntu /path/cm

Agent

  1. Download the ElectricAccelerator--ContainerAgent.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
    tar xvzf ElectricAccelerator--ContainerAgent.tar.gz file 
    The files are extracted to a directory named agent.

    3. Enter:

    docker build -t= -f=agent/Dockerfile-agent-ubuntu agent

      or  

    docker build -t= -f=/path/agent/Dockerfile-agent-Ubuntu 
/path/agen
t

Following are specific examples for downloading a tar file and building a Docker image for a specific component on Red Hat Enterprise Linux 7.x.

Component

Steps to Download Tar File and Build Image

eMake

  1. Download the ElectricAccelerator--ContainerEmake.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
     tar xvzf ElectricAccelerator--ContainerEmake.tar.gz

     The files are extracted to a directory named emake.

     3. Enter:

     docker build -t= -f=emake/Dockerfile-emake-rh emake

        or

     docker build -t= -f=/path/emake/Dockerfile-emake-rh 
/path/emake

Cluster Manager

  1. Download the ElectricAccelerator--ContainerClusterManager.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
    tar xvzf ElectricAccelerator--ContainerClusterManager.tar.gz
    The files are extracted to a directory named cm.

    3. Enter:

     docker build -t= -f=cm/Dockerfile-cm-rh cm

        or

     docker build -t= -f=/path/cm/Dockerfile-cm-rh /path/cm

Agent

  1. Download the ElectricAccelerator-<version>-ContainerAgent.tar.gz file from the Electric Cloud ShareFile folder as described above.
  2. Enter:
    tar xvzf ElectricAccelerator--ContainerAgent.tar.gz
    The files are extracted to a directory named agent.

    3. Enter:

     docker build -t= -f=agent/Dockerfile-agent-rh agent

        or

     docker build -t= -f=/path/agent/Dockerfile-agent-rh 
/path/agen
t

Running the Docker Image to Create a Container and Start eMake, the Cluster Manager, or Agents

Component

Steps to Run a Docker Image to Create a Container and Start the Component

eMake

To run a Docker image to create a container and start eMake, enter:

docker run -itd -v <bind_mount_a_volume>:<bind_mount_a_volume> -w  [--name=] <emake_image_name>

where is your custom name for the container (optional), and is the name of the Docker image. For example:

docker run -itd -v /home/dev/prj:/home/dev/prj -w /home/dev/prj 
--name=emake_container1 emake_10.0_ubuntu_alpha

The -d option runs the container as a daemon. 

Cluster Manager

To run a Docker image to create a container and start the Cluster Manager, enter:

docker run -idt -p 80:80 -p 8030:8030 -p 8031:8031 -p 443:443 -p 3306:3306 
[--hostname=] [--name=]

where  is the machine on which the container is running (optional),  is your custom name for the container (optional), and is the name of the Docker image. Specifying the container host name or IP address on which the container will run ensures that you can use this host name or IP address (rather than the container name) when using the --emake-cm= eMake option to invoke eMake.

For example:

docker run -idt -p 80:80 -p 8030:8030 -p 8031:8031 -p 443:443 -p 3306:3306 -
--hostname=garfield3 -name=cm_container1 cm_10.0_rh_alpha

The -d option runs the container as a daemon. The -p option specifies which ports to expose.

Agent

To run a Docker image to create a container and start the agents, enter one of the following commands based on your version of Accelerator.

 

docker run --privileged=true -idt -e CM_HOST_AND_PORT= -e AGENT_RESOURCE=linux 
--device /dev/efs --net=host [--name=]
[--hostname=]

where is the IP address and port of the Cluster Manager, is your custom name for the container (optional), is the user defined name for host on which the container is running (optional), and is the name of the Docker image.

Following is an example:

 

docker run --privileged=true -itd -e CM_HOST_AND_PORT=192.168.1.97 -e AGENT_RESOURCE=linux 
--hostname=chester-rh --device /dev/efs --net=host --name=agent_rh_container
agent_rh

You should use the --hostname=<user_defined_name_for_container_host> option to ensure that the agents have names that are Cluster Manager “resource friendly.” This lets you create resource definitions to restrict the selection of agents to only those agents running in a container of the desired type. For example, set the container hostname to the base hostname plus an addendum describing the type of container, such as chester-rh or chester-ub1704.  Then the agents would have names such as chester-rh-1 so that you could define a Cluster Manager resource as *-rh to match all the Red Hat containers.

To check that the agents started, go the Cluster Manager web interface, then click the Agents tab, and then make sure that the agents are running. 

Have more questions?

0 Comments

Please sign in to leave a comment.