Build Infrastructure
To help developers more easily customize Self Managed Commerce, CloudOps for Kubernetes provisions the build infrastructure required to:
- Build Self Managed Commerce artifacts, including the deployment package
- Store the built artifacts in a Maven repository
- Convert the deployment package into a set of container images
- Store the container images in a Docker Registry compatible service
note
Account Management requires minimal build infrastructure as Elastic Path does not release Account Management source code. CloudOps for Kubernetes supports building container images using the Account Management release package.
In the following diagram, you can see the relationship between the parts of the build infrastructure.
note
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 initial setup 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.
Container images are built inside of the agents using img
. This tool builds container 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.
Jenkins Plugins
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 jenkins-helm-values.yaml.tmpl
file.
Nexus Server
The Nexus server is created during the initial setup 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.
For more information about the maintenance of artifacts in the Nexus server, see the Manage Nexus Artifacts documentation.
Docker Registry service
Amazon Elastic Container Registry (ECR) repositories are provisioned during the initial setup process. For more information about ECR, see the Amazon Elastic Container Registry documentation.