Phase 1 - Prerequisites
On This Page
- Required components for air-gapped installation
- 1. Copy images
- a. Log in to CircleCI server container registry
- b. Download all images required for this release
- c. Copy all images to your air-gapped environment
- 2. Copy charts
- a. Download the latest CircleCI server Helm chart
- b. Copy the Helm chart to your air-gapped environment
- Next steps
The guides in this section walk you through the steps required to install CircleCI server in an air-gapped environment.
Required components for air-gapped installation
The following table shows an overview of the prerequisites required to run an air-gapped CircleCI server installation. These items must be present in your air-gapped environment in order to move forward with the installation.
Component | Used for |
---|---|
Container registry | Hosting CircleCI server images for Kubernetes |
A Kubernetes cluster | Running CircleCI server |
An object storage system (MinIO) | Object and artifact storage |
GitHub Enterprise | Source of code for CircleCI server to build |
Nomad Virtual Machines | Machines for running Nomad |
1. Copy images
CircleCI server is deployed into a Kubernetes cluster using a Helm chart. You will need to copy the latest images and charts from CircleCI into your virtual environment. All images referenced in the CircleCI Helm chart must be accessible within your air-gapped environment.
a. Log in to CircleCI server container registry
Access to the images you need for your installation requires you to use a username and token, which will be provided by CircleCI. Access the CircleCI support portal for more information.
docker login cciserver.azurecr.io --username <your-circleci-provided-username> --password <your-circleci-provided-token>
b. Download all images required for this release
Download all images required for the release of CircleCI server to your local machine. This list contains all required images for the Helm installation, the CircleCI Agent, and the Reality Check testing tool.
SERVER_4_6_IMAGE_LIST=`cat <<EOF
cciserver.azurecr.io/api-gateway:0.1.45202-ff4a716
cciserver.azurecr.io/api-service:0.1.18463-536327b3
cciserver.azurecr.io/approval-job-provider-migrator:1.0.21509-e6028e1
cciserver.azurecr.io/audit-log-service:0.1.1381-174cc53
cciserver.azurecr.io/authentication-svc:0.1.20159-a9f4a7c
cciserver.azurecr.io/authentication-svc-migrator:0.1.17533-7681416
cciserver.azurecr.io/branch-service:0.1.5146-5123808
cciserver.azurecr.io/branch-service-migrator:0.1.5145-5123808
cciserver.azurecr.io/builds-service:1.0.7100-691c500
cciserver.azurecr.io/builds-service-migrator:1.0.7100-691c500
cciserver.azurecr.io/ciam:0.1.27156-878504f
cciserver.azurecr.io/ciam-gateway:0.1.5476-1da932d
cciserver.azurecr.io/contexts-service:0.1.22465-a537b23
cciserver.azurecr.io/contexts-service-migrator:0.1.22464-a537b23
cciserver.azurecr.io/cron-service:0.1.4527-a0d7eb2
cciserver.azurecr.io/cron-service-migrator:0.1.4528-a0d7eb2
cciserver.azurecr.io/distributor:0.1.134861-d4723196
cciserver.azurecr.io/distributor-migrator:0.1.134859-d4723196
cciserver.azurecr.io/docker-provisioner:0.1.23245-b97d181
cciserver.azurecr.io/domain-service:0.1.17384-dc84eb6
cciserver.azurecr.io/domain-service-migrator:0.1.17385-dc84eb6
cciserver.azurecr.io/execution-gateway:0.1.21179-0f322b4
cciserver.azurecr.io/feature-flags:0.1.7167-e643d91
cciserver.azurecr.io/frontend:0.2.36533-bc09221-snapshot
cciserver.azurecr.io/init-known-hosts:0.1.94-e65564b
cciserver.azurecr.io/insights-service:0.1.86423-bebb0700
cciserver.azurecr.io/insights-service-migrator:0.1.86424-bebb0700
cciserver.azurecr.io/machine-provisioner:0.1.71874-d155311
cciserver.azurecr.io/machine-provisioner-migrator:0.1.71870-d155311
cciserver.azurecr.io/nomad:1.4.568-bfc9a6ec4-125-a748c37
cciserver.azurecr.io/orb-service:0.1.80219-427a8aa
cciserver.azurecr.io/orb-service-analytics-migrator:0.1.80218-427a8aa
cciserver.azurecr.io/orb-service-migrator:0.1.80217-427a8aa
cciserver.azurecr.io/output:0.1.26964-d6d9a56
cciserver.azurecr.io/permissions-service:0.1.27158-878504f
cciserver.azurecr.io/permissions-service-migrator:0.1.27157-878504f
cciserver.azurecr.io/policy-service:0.1.6789-4e9d8f6
cciserver.azurecr.io/runner-admin:0.1.20252-909fd7b
cciserver.azurecr.io/runner-admin-migrator:0.1.20236-909fd7b
cciserver.azurecr.io/server-license:0.1.256-f54cc54
cciserver.azurecr.io/server-postgres:12.16.37-7629bfd
cciserver.azurecr.io/server-postgres:12.16.76-f78dd8d
cciserver.azurecr.io/step:0.1.7270-bd6f914
cciserver.azurecr.io/vault-cci:0.4.196-1af3417
cciserver.azurecr.io/webhook-service:0.1.9796-7424165
cciserver.azurecr.io/webhook-service-migrator:0.1.9790-7424165
cciserver.azurecr.io/web-ui:0.1.23582-1257bf5cd
cciserver.azurecr.io/web-ui-404:0.1.22986-1057f8a88
cciserver.azurecr.io/web-ui-authentication:0.1.28453-91aba168a
cciserver.azurecr.io/web-ui-insights:0.1.23382-1e8f5bebe
cciserver.azurecr.io/web-ui-onboarding:0.1.24126-8b8953b8a
cciserver.azurecr.io/web-ui-org-settings:0.1.26851-fef0e040a
cciserver.azurecr.io/web-ui-project-settings:0.1.24141-719b10e11
cciserver.azurecr.io/web-ui-runners:0.1.23317-f9a8c3114
cciserver.azurecr.io/web-ui-server-admin:0.1.3487-87c7ad7
cciserver.azurecr.io/web-ui-user-settings:0.1.23169-4a8dd825c
cciserver.azurecr.io/workflows-conductor:1.0.21574-1fe47dd
cciserver.azurecr.io/workflows-conductor-migrator:1.0.21509-e6028e1
circleci/picard:1.0.246523-server-4.6-c5b4f03f
docker.io/bitnami/mongodb:3.6.22-debian-9-r38
docker.io/bitnami/rabbitmq:3.11.16-debian-11-r0
docker.io/bitnami/redis:6.2.1-debian-10-r13
hashicorp/nomad-autoscaler:0.3.7
jimmidyson/configmap-reload:v0.5.0
k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
kong:3.3.1
mongo:3.6
nginx:1.27.0
prom/pushgateway:v1.4.2
quay.io/prometheus/alertmanager:v0.23.0
quay.io/prometheus/node-exporter:v1.3.0
quay.io/prometheus/prometheus:v2.31.1
quay.io/soketi/soketi:1.6-16-distroless
telegraf:1.24-alpine
EOF
`
echo $SERVER_4_6_IMAGE_LIST | while read -r image; do docker pull $image; done
c. Copy all images to your air-gapped environment
Copy all downloaded images to the container registry in your air-gapped environment.
2. Copy charts
Copy the CircleCI server Helm chart to your air-gapped environment.
a. Download the latest CircleCI server Helm chart
Download the latest CircleCI server Helm chart to the current directory.
helm registry login cciserver.azurecr.io
helm pull oci://cciserver.azurecr.io/circleci-server -d ./
b. Copy the Helm chart to your air-gapped environment
Copy the downloaded .tgz
Helm chart to your air-gapped environment.
Next steps
Once the steps on this page are complete, go to the Phase 2 - Configure object storage guide.