Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 49 additions & 45 deletions content/docs/deploy/k8s/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,18 @@ import Tabs from '@theme/Tabs';

Deploy Pomerium Core with [Kubernetes].

This quickstart guide uses our [**Hosted Authenticate Service**](/docs/capabilities/authentication) so you don't need to configure an identity provider or authenticate service URL.
:::tip

If you want to self-host, see the [**Self-Hosted Authenticate Service**](/docs/capabilities/authentication) page.
This quickstart guide uses our [**Hosted Authenticate Service**](/docs/capabilities/authentication#hosted-authenticate-service). If you want to use a different identity provider, see [**Custom IdP**](/docs/capabilities/authentication#custom-idp).

:::

## Prerequisites

- [Install kubectl].
- A Kubernetes provider.
- A cluster, with your local `kubectl` authorized to interact with it.
- A domain space. The steps below use `*.localhost.pomerium.io` as a placeholder value. We have set DNS records for this domain space to point to `127.0.0.1` (localhost), so you can use this domain space when testing Pomerium locally.
- A wildcard domain name. The steps below use `*.localhost.pomerium.io` as a placeholder value. We have set DNS records for this domain to point to `127.0.0.1` (localhost), so you can use this domain when testing Pomerium locally.
- [TLS certificates]. If you don't yet have a production environment with trusted certificates, this page will cover using [mkcert] to create locally trusted certificates.

## Certificates
Expand All @@ -57,60 +59,62 @@ mkcert "*.localhost.pomerium.io"

1. Install Pomerium to your cluster:

```sh
kubectl apply -k github.com/pomerium/ingress-controller/config/default\?ref=0-33-0
```

This will create all the components of Pomerium in the `pomerium` namespace, as well as a bootstrap secret:
```sh
kubectl apply -k github.com/pomerium/ingress-controller/config/default\?ref=0-33-0
```

```sh
namespace/pomerium created
customresourcedefinition.apiextensions.k8s.io/pomerium.ingress.pomerium.io created
serviceaccount/pomerium-controller created
serviceaccount/pomerium-gen-secrets created
clusterrole.rbac.authorization.k8s.io/pomerium-controller created
clusterrole.rbac.authorization.k8s.io/pomerium-gen-secrets created
clusterrolebinding.rbac.authorization.k8s.io/pomerium-controller created
clusterrolebinding.rbac.authorization.k8s.io/pomerium-gen-secrets created
service/pomerium-metrics created
service/pomerium-proxy created
deployment.apps/pomerium created
job.batch/pomerium-gen-secrets created
ingressclass.networking.k8s.io/pomerium created
```
This will create all the components of Pomerium in the `pomerium` namespace, as well as a bootstrap secret:

```sh
namespace/pomerium created
customresourcedefinition.apiextensions.k8s.io/pomerium.ingress.pomerium.io created
serviceaccount/pomerium-controller created
serviceaccount/pomerium-gen-secrets created
clusterrole.rbac.authorization.k8s.io/pomerium-controller created
clusterrole.rbac.authorization.k8s.io/pomerium-gen-secrets created
clusterrolebinding.rbac.authorization.k8s.io/pomerium-controller created
clusterrolebinding.rbac.authorization.k8s.io/pomerium-gen-secrets created
service/pomerium-metrics created
service/pomerium-proxy created
deployment.apps/pomerium created
job.batch/pomerium-gen-secrets created
ingressclass.networking.k8s.io/pomerium created
```

2. Add the certificate [created earlier](#certificates) and key to the cluster as a Secret:

```sh
kubectl create secret tls pomerium-wildcard-tls --namespace=pomerium \
--cert=./_wildcard.localhost.pomerium.io.pem --key=./_wildcard.localhost.pomerium.io-key.pem
```
```sh
kubectl create secret tls pomerium-wildcard-tls --namespace=pomerium \
--cert=./_wildcard.localhost.pomerium.io.pem --key=./_wildcard.localhost.pomerium.io-key.pem
```

3. Define the global Pomerium settings:

<GlobalExample />
<GlobalExample />

4. Apply the global settings:
(If you are using your own domain, replace `localhost.pomerium.io` with your domain.)

```sh
kubectl apply -f pomerium.yaml
```
4. Apply the global settings:

The Pomerium Proxy service should now be running in your cluster:
```sh
kubectl apply -f pomerium.yaml
```

```sh {1}
kubectl describe pomerium
Name: global
Namespace:
Labels: <none>
Annotations: <none>
API Version: ingress.pomerium.io/v1
Kind: Pomerium
Metadata:
...
```
The Pomerium Proxy service should now be running in your cluster:

```sh {1}
kubectl describe pomerium
Name: global
Namespace:
Labels: <none>
Annotations: <none>
API Version: ingress.pomerium.io/v1
Kind: Pomerium
Metadata:
...
```

You should now be able to access `https://authenticate.pomerium.app` which, after signing in with our hosted IdP, should redirect you to the `.pomerium` endpoint.
You should now be able to access https://authenticate.localhost.pomerium.io. This should prompt you to sign in with our hosted IdP, and then redirect you to the `.pomerium` endpoint.

## Test Service

Expand Down
2 changes: 2 additions & 0 deletions content/examples/kubernetes/pomerium-global-settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ metadata:
name: global
spec:
secrets: pomerium/bootstrap
authenticate:
url: https://authenticate.localhost.pomerium.io
identityProvider:
provider: hosted
certificates:
Expand Down
Loading