Pomerium is an identity and context-aware access proxy.
Find a file
Kenneth Jenkins c7c2087483
envoy: enable TCP keepalive for internal clusters (#4902)
In split service mode, and during periods of inactivity, the gRPC
connections to the databroker may fall idle. Some network firewalls may
eventually time out an idle TCP connection and even start dropping
subsequent packets once connection traffic resumes. Combined with Linux
default TCP retransmission settings, this could cause a broken
connection to persist for over 15 minutes.

In an attempt to avoid this scenario, enable TCP keepalive for outbound
gRPC connections, matching the Go standard library default settings for
time & interval: 15 seconds for both. (The probe count does not appear
to be set, so it will remain at the OS default.)

Add a test case exercising the BuildClusters() method with the default
configuration options, comparing the results with a reference "golden"
file in the testdata directory. Also add an '-update' flag to make it
easier to update the reference golden when needed:

  go test ./config/envoyconfig -update
2024-01-11 09:12:45 -08:00
.github chore(deps): bump distroless/base-debian12 from 1dfdb5e to 0a93daa in /.github (#4886) 2024-01-02 09:31:33 -07:00
.vscode use tlsClientConfig instead of custom dialer (#3830) 2022-12-27 09:55:36 -07:00
authenticate authenticate: rework CORS headers log entry (#4900) 2024-01-10 10:39:25 -08:00
authorize chore(deps): bump github.com/spf13/viper from 1.16.0 to 1.18.2 (#4861) 2023-12-27 16:16:38 -07:00
changelogs changelog for v0.25 (#4896) 2024-01-09 16:30:24 -05:00
cmd/pomerium core/go: use max procs (#4766) 2023-12-07 09:14:57 -07:00
config envoy: enable TCP keepalive for internal clusters (#4902) 2024-01-11 09:12:45 -08:00
databroker core: fix graceful stop (#4865) 2023-12-29 10:18:08 -07:00
examples core/config: remove debug option, always use json logs (#4857) 2023-12-15 11:29:05 -07:00
integration core/ci: update linting (#4844) 2023-12-14 09:07:54 -08:00
internal envoy: enable TCP keepalive for internal clusters (#4902) 2024-01-11 09:12:45 -08:00
k8s/zero zero/k8s: deployment manifests (#4763) 2024-01-08 12:08:14 -05:00
ospkg
pkg chore(deps): bump golang from a6b787c to 1415bb0 (#4883) 2024-01-02 11:05:37 -07:00
proxy core/proxy: handle missing session for user info endpoint (#4769) 2024-01-08 07:03:49 -07:00
scripts ci: use built-in github release notes generator (#4754) 2023-11-16 13:36:13 -05:00
ui core/proxy: handle missing session for user info endpoint (#4769) 2024-01-08 07:03:49 -07:00
.codecov.yml
.dockerignore
.fossa.yml
.gitattributes
.gitignore tls: wildcard catch-all cert must be at the end of cert list (#4119) 2023-04-21 12:37:32 -04:00
.golangci.yml envoy: enable TCP keepalive for internal clusters (#4902) 2024-01-11 09:12:45 -08:00
.pre-commit-config.yaml
.tool-versions update to Go 1.21.4 (#4770) 2023-11-29 19:16:12 -08:00
3RD-PARTY
DEBUG.MD
Dockerfile chore(deps): bump node from 445acd9 to 8d0f16f (#4881) 2024-01-02 11:06:05 -07:00
Dockerfile.debug chore(deps): bump node from 445acd9 to 8d0f16f (#4881) 2024-01-02 11:06:05 -07:00
go.mod chore(deps): bump github.com/cloudflare/circl from 1.3.6 to 1.3.7 (#4901) 2024-01-08 10:03:48 -07:00
go.sum chore(deps): bump github.com/cloudflare/circl from 1.3.6 to 1.3.7 (#4901) 2024-01-08 10:03:48 -07:00
LICENSE
Makefile zero/telemetry: add reporter (#4855) 2023-12-20 14:53:06 -05:00
pomerium.go
README.md Docs: remove tcp example (#4616) 2023-10-03 17:47:33 -04:00
RELEASING.md
SECURITY.md Update SECURITY.md (#4144) 2023-05-01 15:17:50 -04:00

pomerium logo

Go Report Card GoDoc LICENSE Docker Pulls

Pomerium builds secure, clientless connections to internal web apps and services without a corporate VPN.

Pomerium is:

  • Easier because you dont have to maintain a client or software.
  • Faster because its deployed directly where your apps and services are. No more expensive data backhauling.
  • Safer because every single action is verified for trusted identity, device, and context.

Its not a VPN alternative its the trusted, foolproof way to protect your business.

Docs

For comprehensive docs, and tutorials see our documentation.

Integration Tests

To run the integration tests locally, first build a local development image:

./scripts/build-dev-docker.bash

Next go to the integration/clusters folder and pick a cluster, for example google-single, then use docker-compose to start the cluster. We use an environment variable to specify the dev docker image we built earlier:

cd integration/clusters/google-single
env POMERIUM_TAG=dev docker-compose up -V

Once that's up and running you can run the integration tests from another terminal:

go test -count=1 -v ./integration/...

If you need to make a change to the clusters themselves, there's a tpl folder that contains jsonnet files. Make a change and then rebuild the clusters by running:

go run ./integration/cmd/pomerium-integration-tests/ generate-configuration