Skip to content

Commit 9281460

Browse files
archive server 4.1 content (#237)
* archive server 4.1 content * move archive to right place * remove 4.1 from algolia ignore list
1 parent 543eead commit 9281460

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+7255
-1
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
name: server-admin
2+
title: Server
3+
version: server-4.1
4+
display_version: Server 4.1
5+
nav:
6+
- modules/ROOT/nav.adoc
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
* xref:overview:index.adoc[CircleCI server 4.1]
2+
** xref:overview:circleci-server-overview.adoc[CircleCI Server Overview]
3+
** xref:overview:release-notes.adoc[Release notes]
4+
5+
* xref:installation:index.adoc[Installing CircleCI server]
6+
** xref:installation:phase-1-prerequisites.adoc[Phase 1: Prerequisites]
7+
** xref:installation:phase-2-core-services.adoc[Phase 2: Core services installation]
8+
** xref:installation:phase-3-execution-environments.adoc[Phase 3: Execution environments installation]
9+
** xref:installation:phase-4-post-installation.adoc[Phase 4: Post-installation]
10+
** xref:installation:hardening-your-cluster.adoc[Hardening your cluster]
11+
** xref:installation:installing-server-behind-a-proxy.adoc[Installing server behind a proxy]
12+
** xref:installation:upgrade-server.adoc[Upgrading server]
13+
** xref:installation:installation-reference.adoc[Installation reference]
14+
15+
* xref:air-gapped-installation:index.adoc[Installing CircleCI server in an air-gapped environment]
16+
** xref:air-gapped-installation:phase-1-prerequisites.adoc[Phase 1 - Prerequisites]
17+
** xref:air-gapped-installation:phase-2-configure-object-storage.adoc[Phase 2 - Configure object storage]
18+
** xref:air-gapped-installation:phase-3-install-circleci-server.adoc[Phase 3 - Install CircleCI server]
19+
** xref:air-gapped-installation:phase-4-configure-nomad-clients.adoc[Phase 4 - Configure Nomad clients]
20+
** xref:air-gapped-installation:phase-5-test-your-installation.adoc[Phase 5 - Test installation]
21+
** xref:air-gapped-installation:additional-considerations.adoc[Additional considerations]
22+
** xref:air-gapped-installation:example-values.adoc[Example values.yaml]
23+
24+
* xref:operator:index.adoc[CircleCI server operator guide]
25+
** xref:operator:operator-overview.adoc[Operator overview]
26+
** xref:operator:introduction-to-nomad-cluster-operation.adoc[Introduction to Nomad cluster operation]
27+
** xref:operator:managing-user-accounts.adoc[Managing user accounts]
28+
** xref:operator:managing-orbs.adoc[Managing orbs]
29+
** xref:operator:manage-virtual-machines-with-vm-service.adoc[Manage virtual machines with VM service]
30+
** xref:operator:configuring-external-services.adoc[Configuring external services]
31+
** xref:operator:expanding-internal-database-volumes.adoc[Expanding internal database volumes]
32+
** xref:operator:managing-load-balancers.adoc[Managing load balancers]
33+
** xref:operator:user-authentication.adoc[User authentication]
34+
** xref:operator:managing-build-artifacts.adoc[Managing build artifacts]
35+
** xref:operator:usage-data-collection.adoc[Usage data collection]
36+
** xref:operator:circleci-server-security-features.adoc[CircleCI server security features]
37+
** xref:operator:application-lifecycle.adoc[Application lifecycle]
38+
** xref:operator:troubleshooting-and-support.adoc[Troubleshooting and support]
39+
** xref:operator:backup-and-restore.adoc[Backup and restore]
40+
** xref:operator:upgrade-mongo.adoc[Upgrade MongoDB]
41+
** xref:operator:faq.adoc[FAQs]
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
= CircleCI server administration
2+
:page-noindex: true
3+
:page-layout: subsection
4+
:page-description: CircleCI server documentation for installing, configuring, and managing CircleCI server.
5+
6+
CircleCI server is the on-premisis CircleCI platform. In this section you will find the documentation for installing, configuring, and managing CircleCI server.
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
= Additional considerations
2+
:page-noindex: true
3+
:page-platform: Server v4.1, Server Admin
4+
:page-description: This page presents some items that should be considered when starting an air-gapped installation of CircleCI server v4.1.
5+
:icons: font
6+
:experimental:
7+
8+
[#non-tls-docker-registry-installations]
9+
== Non-TLS Docker registry installations
10+
11+
When configuring your air-gapped Docker registry, it is recommended to use TLS certificates to encrypt traffic. If using a non-TLS, or self-signed installation, the following additional steps will need to be taken.
12+
13+
On machines that access the Docker registry using Docker, the Docker daemon config must be updated (located on Linux at `/etc/docker/daemon.json`).
14+
15+
The insecure-registries section must be added to the file (if it exists), or the file must be created with the following if it does not. Make sure to include the full hostname and port of your registry, but do not include the protocol (`http://` or `https://`).
16+
17+
[source, json]
18+
----
19+
{
20+
"insecure-registries":["docker.example.internal:5000"]
21+
}
22+
----
23+
24+
This file will need to be configured on the following machines:
25+
26+
- All Nomad nodes in the air-gapped environment
27+
- Potentially all K3s nodes in the air-gapped environment, if using Docker-backed K3s
28+
29+
In addition, on each K3s node, the following file must be configured at `/etc/rancher/k3s/registries.yaml`. Take note to include the protocol where referenced.
30+
31+
[source, yaml]
32+
----
33+
mirrors:
34+
"docker.example.internal:5000":
35+
endpoint:
36+
- "http://docker.example.internal:5000"
37+
configs:
38+
"docker.example.internal:5000":
39+
tls:
40+
insecure_skip_verify: true
41+
----
42+
43+
---
44+
45+
46+
47+
[#service-type-load-balancers-k3s]
48+
== Service type load balancers in K3s
49+
50+
CircleCI server makes use of Service Type: Load Balancer Kubernetes resources to listen to traffic on multiple ports. In order to function, the cluster needs to.
51+
52+
If using a K3s installation, link:https://metallb.universe.tf/installation/[MetalLB] can be used to create a virtual load balancer on the K3s node, to allow ingress traffic to CircleCI server.
53+
54+
Once installed, the following steps need to be followed:
55+
56+
A ConfigMap resource needs to be created to create an address pool for MetalLB.
57+
58+
[source, yaml]
59+
----
60+
apiVersion: "v1"
61+
kind: ConfigMap
62+
metadata:
63+
namespace: metallb-system
64+
name: config
65+
data:
66+
config: |
67+
address-pools:
68+
- name: default
69+
protocol: layer2
70+
addresses:
71+
- <<k3s_internal_ip_range_start>>-<<k3s_internal_ip_range_end>>
72+
----
73+
74+
The address pool can be named something other than "default", but the annotations in `values.yaml` will need to be updated. If there is only one k3s node, the address range should have the same IP repeated (for example, `10.0.0.5-10.0.0.5`).
75+
76+
Once this ConfigMap resource is applied to the cluster (`kubectl apply -f metallb-configmap.yaml`), the address pool name can be updated in the `values.yaml` for the Helm installation.
77+
78+
[source, yaml]
79+
----
80+
# Additional nginx annotations
81+
nginx:
82+
annotations:
83+
# This example uses MetalLB as a k3s load balancer
84+
metallb.universe.tf/allow-shared-ip: default
85+
----
86+
87+
After installing the Helm chart, the circleci-proxy service must be patched to use the internal IP of the desired k3s node to act as the load balancer (this IP should be in the range entered in the ConfigMap above). The example below uses the IP address `10.0.0.5`.
88+
89+
[source, bash]
90+
----
91+
kubectl patch svc circleci-proxy -p '{"spec": {"type": "LoadBalancer", "externalIPs":["10.0.0.5"]}}'
92+
----
93+
94+
Once complete, DNS records can be created for your server installation (server.internal.example.com) and (*.server.internal.example.com) for 10.0.0.5.
95+
96+
[#tls-importing]
97+
== Importing trusted TLS certificates
98+
99+
When using a GitHub Enterprise instance with self-signed or custom certificate authority certificates, CircleCI server can be configured to trust these certificates using two methods, as described below.
100+
101+
NOTE: Values provided for either of these methods are supported for GitHub Enterprise certificates only. No other VCS application is supported at this time.
102+
103+
[#configuring-the-tls-imports-value]
104+
=== Configuring the TLS imports value
105+
In the `values.yaml` file, the `tls.imports` value can be configured to include a list of `hostname:port` combinations from which to retrieve and trust TLS certificates.
106+
107+
[source, yaml]
108+
----
109+
tls:
110+
...
111+
import:
112+
- github.airgap.example.com:443
113+
----
114+
115+
For each `hostname:port` combination, CircleCI server will, during installation, retrieve the public certificate for the particular GitHub Enterprise instance and trust it to establish connections with that instance.
116+
117+
118+
[#configuring-the-tls-certificates-array]
119+
=== Configuring the TLS certificates array
120+
Instead of providing a list of `hostname:port` combinations for certificates to import, the public certificate chains of the corresponding TLS certificates to trust can be provided in the `values.yaml` file, in the `tls.certificates` value, as a list of base64 encoded certificates strings.
121+
122+
[source, yaml]
123+
----
124+
tls:
125+
...
126+
certificates:
127+
- <<base64-encoded-public-tls-certificate-chain>>
128+
----
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
= Example `values.yaml`
2+
:page-noindex: true
3+
:page-platform: Server v4.1, Server Admin
4+
:page-description: This page presents an example values.yaml file to help with setting up an air-gapped installation of CircleCI server v4.1.
5+
:icons: font
6+
:experimental:
7+
8+
The following snippet shows an example `values.yaml` file for a Helm installation of CircleCI server in an air-gapped environment.
9+
10+
[#resources]
11+
== Resources
12+
The chart assumes an environment with the following resources:
13+
14+
- A K3s cluster for the installation of the Helm chart.
15+
- MetalLB pre-configued on the K3s cluster for ingress.
16+
- A private Docker registry at `docker.internal.example.com` running on port 5000 with no TLS encryption.
17+
- A Nomad instance with mTLS disabled.
18+
- A MinIO instance running at minio.internal.example.com, with its API listening on port 9000, and no TLS.
19+
- A TLS certificate issued for both domains `server.internal.example.com` and `*.server.internal.example.com`.
20+
21+
For more information about specific values, see the standard installation documentation, starting with xref:installation:phase-2-core-services.adoc[Phase 2 - Core services].
22+
23+
[#values]
24+
== `Values.yaml`
25+
26+
[source, yaml]
27+
----
28+
29+
# Private docker registry at docker.internal.example.com:5000
30+
global:
31+
domainName: "server.internal.example.com"
32+
license: '<<your-server-license-here>>'
33+
container:
34+
registry: "docker.internal.example.com:5000"
35+
org: "<image-registry-org>"
36+
37+
# GitHub Enterprise
38+
github:
39+
hostname: "github.internal.example.com"
40+
unsafeDisableWebhookSSLVerification: true # If using self-signed certificates
41+
enterprise: true
42+
selfSignedCert: true # If using self-signed certificates
43+
# These must be generated and added manually from GitHub Enterprise
44+
clientId: "<<github-enterprise-oauth-app-client-id>>"
45+
clientSecret: "<<github-enterprise-oauth-app-client-secret>>"
46+
defaultToken: "<<github-enterprise-personal-application-token>>"
47+
48+
# TLS with your provider
49+
tls:
50+
certificate: "<<your-generated-tls-certificate>>"
51+
privateKey: "<<your-generated-tls-private-key>>"
52+
53+
# Object storage with Minio
54+
object_storage:
55+
bucketName: "circleci-data" # Update to the name of the bucket created in MinIO
56+
expireAfter: 0
57+
s3:
58+
enabled: true
59+
endpoint: "http://minio.internal.example.com:9000"
60+
accessKey: "<<minio-username>>"
61+
secretKey: "<<minio-password>>"
62+
63+
# Distributor using CircleCI Agent in Minio
64+
distributor:
65+
agent_base_url: http://minio.internal.example.com:9000/circleci-data
66+
launch_agent_base_url: http://minio.internal.example.com:9000/circleci-data
67+
68+
# Nomad
69+
nomad:
70+
buildAgentImage: "docker.internal.example.com:5000/circleci/picard" # Do not provide image version, only image name and registry
71+
server:
72+
gossip:
73+
encryption:
74+
key: "<<nomad-gossip-encryption-key>>"
75+
rpc:
76+
mTLS:
77+
enabled: false # mTLS is disabled - it is recommended that this be enabled
78+
79+
80+
# VM Service Disabled - Requires cloud connectivity
81+
vm_service:
82+
enabled: false
83+
84+
# Additional nginx annotations
85+
nginx:
86+
annotations:
87+
# This example uses MetalLB as a k3s load balancer
88+
metallb.universe.tf/allow-shared-ip: default
89+
90+
# The below values require no special modifications for an air-gapped environment
91+
92+
apiToken: "<<circleci-api-token>>"
93+
94+
sessionCookieKey: "<<circleci-session-cookie-key>>"
95+
96+
keyset:
97+
signing: '<<circleci-signing-key>>'
98+
encryption: '<<circleci-encryption-key>>'
99+
100+
mongodb:
101+
auth:
102+
rootPassword: "<<mongodb-root-password>>"
103+
password: "<<mongodb-password>>"
104+
105+
pusher:
106+
secret: "<<pusher-secret>>"
107+
108+
postgresql:
109+
auth:
110+
postgresPassword: "<<postgres-password>>"
111+
112+
rabbitmq:
113+
auth:
114+
password: "<<rabbitmq-password>>"
115+
erlangCookie: "<<rabbitmq-erlang-cookie>>"
116+
117+
----
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
= Installing CircleCI server in an air-gapped environment:noindex:
2+
:page-noindex: true

0 commit comments

Comments
 (0)