Skip to content

Commit 4e50e08

Browse files
gaurdrokenjenkins
andauthored
rewrite all-in-one vs split-service (#1797)
* rewrite all-in-one vs split-service * pre-commit changes * Update content/docs/internals/configuration.mdx Co-authored-by: Kenneth Jenkins <[email protected]> * Apply suggestions from code review Co-authored-by: Kenneth Jenkins <[email protected]> * remove redundant sentence --------- Co-authored-by: Kenneth Jenkins <[email protected]>
1 parent 7d6b286 commit 4e50e08

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

content/docs/internals/configuration.mdx

+9-10
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,14 @@ keywords:
77
- configuration
88
- settings
99
- environment variables
10-
- split service mode
1110
- docker compose
1211
- all-in-one mode
1312
- advanced pomerium config
1413
lang: en-US
1514
---
1615

16+
import InstallMkcert from '@site/content/docs/admonitions/_install-mkcert.md';
17+
1718
# Configuration & Settings
1819

1920
Pomerium can be configured using a configuration file ([YAML]/[JSON]/[TOML]) or [environmental variables]. In general, environmental variable keys are identical to config file keys but are uppercase. Enterprise users will be able to set these settings in the GUI, or using the API.
@@ -32,15 +33,11 @@ See the [reference](/docs/reference) page for a complete list of available optio
3233

3334
## All-In-One vs Split Service mode
3435

35-
When running Pomerium as a single system service or container, all the options on this page can be set in a single `config.yaml` file, or passed to the single instance as environment variables.
36-
37-
When running Pomerium in a distributed environment where there are multiple processes, each handling separate [components](/docs/internals/architecture#component-level), all services can still share a single config file or set of environment variables.
36+
Pomerium's default mode is all-in-one mode. It runs all the individual [components](/docs/internals/architecture#component-level) in a single container or under a single system service. This is our suggested way to run Pomerium. Alternatively, each of those component services can be configured and run separately in split mode.
3837

39-
Alternately, you can create individual config files or sets of environment variables for each service. When doing so, each file or set can define which component a process will run as using the [service mode](/docs/reference/service-mode) key.
38+
All-in-one mode has the easiest configuration and is successfully used in large production environments. All the configuration goes in a single `config.yaml` file or single set of environment variables. Internal communication is configured automatically requiring no additional setup.
4039

41-
The table contains all config options for Pomerium Core. You can also browse each key using the index on the left.
42-
43-
import InstallMkcert from '@site/content/docs/admonitions/_install-mkcert.md';
40+
Alternatively, each component can be run separately in split-mode using the [service mode](/docs/reference/service-mode) key to specify which component to run. Each of these needs to be configured separately, and communication between components must be explicitly configured including managing TLS certificates.
4441

4542
## Service Mode
4643

@@ -56,11 +53,13 @@ Any production deployment with more than one instance of Pomerium (in any combin
5653

5754
### All-in-One
5855

59-
It may be desirable to run in "all-in-one" mode in smaller deployments or while testing. This reduces the resource footprint and simplifies DNS configuration. An all-in-one instances may also be scaled for better performance. All URLs point at the same Pomerium service instance.
56+
For almost all use cases it's desirable to run in "all-in-one" mode. This reduces the resource footprint and simplifies DNS configuration. An all-in-one instances may also be scaled for better performance. All URLs point at the same Pomerium service instance.
6057

6158
### Discrete Services
6259

63-
In larger footprints, it is recommended to run Pomerium as a collection of discrete service clusters. This limits blast radius in the event of vulnerabilities and allows for per-service [scaling](#scaling) and monitoring.
60+
Split service mode is only advised for learning how the components interact, extremely security constrained environments or to work around constraints in host environment.
61+
62+
The split service mode can limit the blast radius in the event of a compromised container and can enable independent scaling of components. These features come with some downsides. There will be increased latency to the authorize service, which is consulted on every request. In addition to complicating upgrades, the additional configuration makes debugging configuration errors more difficult. In larger footprints, it is recommended to run Pomerium as a collection of discrete service clusters. This limits blast radius in the event of vulnerabilities and allows for per-service [scaling](#scaling) and monitoring.
6463

6564
Please also see [Architecture](/docs/internals/architecture) for information on component interactions.
6665

0 commit comments

Comments
 (0)