CircleCI Server v3.x Operations Overview
The following guide contains information useful for CircleCI server Operators, or those responsible for ensuring CircleCI server 3.x is running properly through maintenance and monitoring.
It is assumed that you have already read the Server 3.x Overview.
CircleCI server schedules CI jobs using the Nomad scheduler. The Nomad control plane runs inside of Kubernetes, while the Nomad clients are provisioned outside the cluster. The Nomad clients need access to the Nomad control plane, output processor, and VM service.
CircleCI server can run Docker jobs on the Nomad clients, but it can also run jobs in a dedicated VM. These VM jobs are controlled by the Nomad clients, therefore the Nomad clients must be able to access the VM machines on port 22 for SSH and port 2376 for remote Docker jobs.
Job artifacts and outputs are sent directly from jobs in Nomad to object storage (S3, GCS, or other supported options).
Audit logs and other items from the application are also stored in object storage, so both the Kubernetes cluster and the Nomad clients need access to object storage.
Execution Environment
CircleCI server 3.x uses Nomad as the primary job scheduler. Refer to our Introduction to Nomad Cluster Operation to learn more about the job scheduler and how to perform basic client and cluster operations.
By default, CircleCI Nomad clients automatically provision compute resources according to the executors configured for each job in a project’s .circleci/config.yml
file.
Nomad Clients
Nomad Clients run without storing state, allowing you to increase or decrease the number of containers as needed.
To ensure enough Nomad clients are running to handle all builds, track the queued builds and then increase the number of Nomad client machines as needed to balance the load. For more on tracking metrics see the Metrics and Monitoring section.
If a job’s resource class requires more resources than the Nomad client’s instance type has available, it will remain in a pending state. Choosing a smaller instance type for Nomad clients is a way to reduce cost, but limits the Docker resource classes CircleCI can use. Review the available resource classes to decide what is best for you. The default instance type will run up to xlarge
resource classes.
See the Nomad Documentation for options on optimizing the resource usage of Nomad clients.
The maximum machine size for a Nomad client is 128GB RAM/64 CPUs. Contact your CircleCI account representative to request use of larger machines for Nomad clients. |
For more information on Nomad port requirements, see the Hardening Your Cluster section.
GitHub
CircleCI uses GitHub or GitHub Enterprise as an identity provider. GitHub Enterprise can, in turn, use SAML or SCIM to manage users from an external identity provider.
CircleCI does not support changing the URL or backend GitHub instance after it has been set up. |
The following table describes the ports used on machines running GitHub to communicate with the services and Nomad client instances.
Source | Ports | Use |
---|---|---|
Services | 22 | Git access |
Services | 80 or 443 | API access |
Nomad Client | 22 | Git access |
Nomad Client | 80 or 443 | API access |
Help make this document better
This guide, as well as the rest of our docs, are open source and available on GitHub. We welcome your contributions.
- Suggest an edit to this page (please read the contributing guide first).
- To report a problem in the documentation, or to submit feedback and comments, please open an issue on GitHub.
- CircleCI is always seeking ways to improve your experience with our platform. If you would like to share feedback, please join our research community.
Need support?
Our support engineers are available to help with service issues, billing, or account related questions, and can help troubleshoot build configurations. Contact our support engineers by opening a ticket.
You can also visit our support site to find support articles, community forums, and training resources.
CircleCI Documentation by CircleCI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.