To help developers more easily customize Elastic Path Commerce, CloudOps for Kubernetes provisions the build infrastructure required to:
- Build Elastic Path Commerce artifacts, including the deployment package
- Store the built artifacts in a Maven repository
- Convert the deployment package into a set of Docker images
- Store the Docker images in a Docker Registry compatible service
Account Management requires minimal build infrastructure as Elastic Path does not release Account Management source code. CloudOps for Kubernetes supports building Docker images using the Account Management release package.
In the following diagram, you can see the relationship between the parts of the build infrastructure.
CloudOps for Kubernetes does not provision a Git server.
Jenkins Server and Agents
The Jenkins server and agents are run inside of the Kubernetes cluster and are created as part of the bootstrap process.
The settings for the deployment are defined in the Terraform configuration files in the CloudOps for Kubernetes repository. The deployment is based on the Jenkins Helm chart.
In the CloudOps for Kubernetes repository, Jenkins pipelines are defined in files named
Jenkinsfile. When the Jenkins server starts, it automatically creates the pipelines using a Jobs Domain Specific Language (DSL) Groovy script.
The server uses the Jenkins Kubernetes plugin to provision Jenkins agent pods as needed.
Docker images are built inside of the agents using img. This tool builds Docker images without requiring access to a Docker daemon. By avoiding use of the Docker daemon that Kubernetes runs on top of, img does not compete for resources with Kubernetes managed containers.
The Jenkins server uses third-party plugins. These plugins are installed with fixed versions and are upgraded to the latest version without known issues with every CloudOps release.
For a complete list of the plugins installed in the Jenkins server, see the
The Nexus server is created during the bootstrap process.
The server is based on the official image on Docker Hub.
The deployment is defined using a Kubernetes Deployment, which is managed by Terraform, in the CloudOps for Kubernetes repository.