- (*1*): [Web terminal](../../ci/environments/index.md#web-terminals) support requires
your load balancer to correctly handle WebSocket connections. When using
HTTP or HTTPS proxying, this means your load balancer must be configured
to pass through the `Connection` and `Upgrade` hop-by-hop headers. See the
[web terminal](../integration/terminal.md) integration guide for
more details.
- (*2*): When using HTTPS protocol for port 443, you will need to add an SSL
certificate to the load balancers. If you wish to terminate SSL at the
GitLab application server instead, use TCP protocol.
- (*1*): [Web terminal](../../ci/environments/index.md#web-terminals) support
requires your load balancer to correctly handle WebSocket connections.
When using HTTP or HTTPS proxying, your load balancer must be configured
to pass through the `Connection` and `Upgrade` hop-by-hop headers. For
details, see the [web terminal](../integration/terminal.md) integration guide.
- (*2*): When using the HTTPS protocol for port 443, you'll need to add an SSL
certificate to the load balancers. If you need to terminate SSL at the
GitLab application server, use the TCP protocol.
If you're using GitLab Pages with custom domain support you will need some
additional port configurations.
GitLab Pages requires a separate virtual IP address. Configure DNS to point the
`pages_external_url` from `/etc/gitlab/gitlab.rb` at the new virtual IP address. See the
[GitLab Pages documentation](../pages/index.md) for more information.
additional port configurations. GitLab Pages requires a separate virtual IP
address. Configure DNS to point the `pages_external_url` from
`/etc/gitlab/gitlab.rb` to the new virtual IP address. For more information,
see the [GitLab Pages documentation](../pages/index.md).
| LB Port | Backend Port | Protocol |
| Port | Backend Port | Protocol |
| ------- | ------------- | --------- |
| 80 | Varies (*1*) | HTTP |
| 443 | Varies (*1*) | TCP (*2*) |
- (*1*): The backend port for GitLab Pages depends on the
`gitlab_pages['external_http']` and `gitlab_pages['external_https']`
setting. See [GitLab Pages documentation](../pages/index.md) for more details.
- (*2*): Port 443 for GitLab Pages should always use the TCP protocol. Users can
configure custom domains with custom SSL, which would not be possible
if SSL was terminated at the load balancer.
settings. For details, see the [GitLab Pages documentation](../pages/index.md).
- (*2*): Port 443 for GitLab Pages must use the TCP protocol. Users can
configure custom domains with custom SSL, which wouldn't be possible if SSL
was terminated at the load balancer.
#### Alternate SSH Port
Some organizations have policies against opening SSH port 22. In this case,
it may be helpful to configure an alternate SSH hostname that allows users
to use SSH on port 443. An alternate SSH hostname will require a new virtual IP address
compared to the other GitLab HTTP configuration above.
it may be helpful to configure an alternate SSH hostname that instead allows
users to use SSH over port 443. An alternate SSH hostname requires a new
virtual IP address compared to the previously described GitLab HTTP
configuration.
Configure DNS for an alternate SSH hostname such as `altssh.gitlab.example.com`.
Configure DNS for an alternate SSH hostname, such as `altssh.gitlab.example.com`:
| LB Port | Backend Port | Protocol |
| ------- | ------------ | -------- |
...
...
@@ -175,49 +175,49 @@ Configure DNS for an alternate SSH hostname such as `altssh.gitlab.example.com`.
## Configure the object storage
GitLab supports using an object storage service for holding numerous types of data.
It's recommended over [NFS](#configure-nfs-optional) and in general it's better
in larger setups as object storage is typically much more performant, reliable,
and scalable.
GitLab supports using an object storage service for holding several types of
data, and is recommended over [NFS](#configure-nfs-optional). In general,
object storage services are better for larger environments, as object storage
is typically much more performant, reliable, and scalable.
Object storage options that GitLab has tested, or is aware of customers using include:
Object storage options that GitLab has either tested or is aware of customers
using, includes:
- SaaS/Cloud solutions such as [Amazon S3](https://aws.amazon.com/s3/), [Google cloud storage](https://cloud.google.com/storage).
- On-premises hardware and appliances from various storage vendors.
- MinIO. There is [a guide to deploying this](https://docs.gitlab.com/charts/advanced/external-object-storage/minio.html) within our Helm Chart documentation.
- SaaS/Cloud solutions (such as [Amazon S3](https://aws.amazon.com/s3/) or
For configuring GitLab to use Object Storage refer to the following guides
based on what features you intend to use:
To configure GitLab to use object storage, refer to the following guides based
on the features you intend to use:
1.Configure [object storage for backups](../../raketasks/backup_restore.md#uploading-backups-to-a-remote-cloud-storage).
1.Configure [object storage for job artifacts](../job_artifacts.md#using-object-storage)
1.[Object storage for backups](../../raketasks/backup_restore.md#uploading-backups-to-a-remote-cloud-storage).
1.[Object storage for job artifacts](../job_artifacts.md#using-object-storage)
including [incremental logging](../job_logs.md#new-incremental-logging-architecture).
1.Configure [object storage for LFS objects](../lfs/index.md#storing-lfs-objects-in-remote-object-storage).
1.Configure [object storage for uploads](../uploads.md#using-object-storage-core-only).
1.Configure [object storage for merge request diffs](../merge_request_diffs.md#using-object-storage).
1.Configure [object storage for Container Registry](../packages/container_registry.md#container-registry-storage-driver)(optional feature).
1.Configure [object storage for Mattermost](https://docs.mattermost.com/administration/config-settings.html#file-storage)(optional feature).
1.Configure [object storage for packages](../packages/index.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.Configure [object storage for Dependency Proxy](../packages/dependency_proxy.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.Configure [object storage for Pseudonymizer](../pseudonymizer.md#configuration)(optional feature). **(ULTIMATE ONLY)**
1.Configure [object storage for autoscale Runner caching](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching)(optional - for improved performance).
1.Configure [object storage for Terraform state files](../terraform_state.md#using-object-storage-core-only).
1.[Object storage for LFS objects](../lfs/index.md#storing-lfs-objects-in-remote-object-storage).
1.[Object storage for uploads](../uploads.md#using-object-storage-core-only).
1.[Object storage for merge request diffs](../merge_request_diffs.md#using-object-storage).
1.[Object storage for Container Registry](../packages/container_registry.md#container-registry-storage-driver)(optional feature).
1.[Object storage for Mattermost](https://docs.mattermost.com/administration/config-settings.html#file-storage)(optional feature).
1.[Object storage for packages](../packages/index.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.[Object storage for Dependency Proxy](../packages/dependency_proxy.md#using-object-storage)(optional feature). **(PREMIUM ONLY)**
1.[Object storage for Pseudonymizer](../pseudonymizer.md#configuration)(optional feature). **(ULTIMATE ONLY)**
1.[Object storage for autoscale Runner caching](https://docs.gitlab.com/runner/configuration/autoscale.html#distributed-runners-caching)(optional, for improved performance).
1.[Object storage for Terraform state files](../terraform_state.md#using-object-storage-core-only).
Using separate buckets for each data type is the recommended approach for GitLab.
A limitation of our configuration is that each use of object storage is separately configured.
[We have an issue for improving this](https://gitlab.com/gitlab-org/gitlab/-/issues/23345)
and easily using one bucket with separate folders is one improvement that this might bring.
There is at least one specific issue with using the same bucket:
when GitLab is deployed with the Helm chart restore from backup
[will not properly function](https://docs.gitlab.com/charts/advanced/external-object-storage/#lfs-artifacts-uploads-packages-external-diffs-pseudonymizer)
unless separate buckets are used.
A limitation of our configuration is that each use of object storage is
separately configured. We have an [issue](https://gitlab.com/gitlab-org/gitlab/-/issues/23345)
for improving this, which would allow for one bucket with separate folders.
One risk of using a single bucket would be if your organization decided to
migrate GitLab to the Helm deployment in the future. GitLab would run, but the situation with
backups might not be realized until the organization had a critical requirement for the backups to
work.
Using a single bucket when GitLab is deployed with the Helm chart causes
restoring from a backup to
[not function properly](https://docs.gitlab.com/charts/advanced/external-object-storage/#lfs-artifacts-uploads-packages-external-diffs-pseudonymizer).
Although you may not be using a Helm deployment right now, if you migrate
GitLab to a Helm deployment later, GitLab would still work, but you may not
realize backups aren't working correctly until a critical requirement for