Skip to content
This repository was archived by the owner on Aug 18, 2025. It is now read-only.

Commit 4a0f684

Browse files
Katie HornejohnstcndeansheatherEmyrk
authored
Release 1.28 (#839)
Co-authored-by: Cian Johnston <cian@coder.com> Co-authored-by: Dean Sheather <dean@deansheather.com> Co-authored-by: Steven Masley <Emyrk@users.noreply.github.com>
1 parent f306945 commit 4a0f684

File tree

17 files changed

+360
-18
lines changed

17 files changed

+360
-18
lines changed

admin/access-control/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The **Authentication** tab allows you to choose how your users log in and gain
77
access to Coder. Currently, you can choose between **Built-In Authentication**
88
and **OpenID Connect**.
99

10-
## Built-In authentication
10+
## Built-in authentication
1111

1212
Built-in authentication, which is the default method, allows you (or any admin)
1313
to manually create users who log in with their email address and temporary

admin/access-control/manage.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ domain name for the OIDC token callback; use
2323

2424
Once you've registered a Coder application with your OIDC provider, you'll need
2525
to return to Coder and complete the setup process. Under **Admin** > **Manage** >
26-
**Authentication**, make sure that you've selected **OpenID Connect** as the
26+
**Authentication**, ensure that you've selected **OpenID Connect** as the
2727
authentication type. Then, provide the following parameters:
2828

2929
- **Client ID**: The client ID for the Coder application you registered with the
@@ -42,7 +42,10 @@ you:
4242
- **Enable Access Tokens:** Toggle **On** if you'd like to allow users to fetch
4343
tokens from `https://<yourDomain>/api/v0/users/me/oidc-access-token`
4444
- **Additional Scopes:** Specify any scopes (beyond the default) that you would
45-
like Coder to request during the login process
45+
like Coder to request from the authentication provider. By default, Coder
46+
requests the scopes `openid`, `email`, and `profile`. Consult your
47+
authentication provider's documentation for information on which scopes they
48+
support.
4649
- **Disable built-in authentication:** Choose whether Coder removes the ability
4750
to log in with an email/password option when you've enabled OIDC
4851
authentication
@@ -55,6 +58,9 @@ have OIDC configured.
5558
![Login page with built-in authentication
5659
disabled](../../assets/admin/disable-built-in-auth.png)
5760

61+
To do so, navigate to **Manage** > **Admin** > **Authentication**. Then, toggle
62+
**Disable built-in authentication** to **On** and click **Save preferences**.
63+
5864
[Site managers](users/user-roles#site-manager-permissions) can still use
5965
built-in authentication. To view this option on the login page, add the
6066
following query parameter to the URL you use to access your Coder deployment:
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
---
2+
title: Global access URL configuration
3+
description: |
4+
Learn how to configure your primary and satellite deployments so that they
5+
share an access URL.
6+
state: alpha
7+
---
8+
9+
By default, the primary deployment and satellite deployments have different
10+
access URLs. Using two access URLs can confuse engineering teams when it comes
11+
time to determine which one they should use for Coder.
12+
13+
To prevent confusion, Coder supports an optional unified hostname configuration
14+
where the primary deployment and all satellite deployments share a hostname. All
15+
users who access Coder use the same URL; meanwhile, your DNS server or anycast
16+
configuration ensures that users are still accessing a deployment that is near
17+
to them geographically, offering low latency when connecting to their
18+
workspaces.
19+
20+
GeoDNS (also known as _geographical split-horizon DNS_) is a DNS load balancing
21+
technique that helps users connect to their geographically nearest servers
22+
without relying on anycast IP routing. This guide will focus on GeoDNS setup,
23+
though it will still work with anycast routing.
24+
25+
## Requirements
26+
27+
You will need the following:
28+
29+
- A primary access URL (e.g. `https://primary.example.com`)
30+
- One or more satellite access URLs (e.g. `https://sydney.example.com`,
31+
`https://london.example.com`)
32+
- A "unified" access URL (e.g. `https://coder.example.com`). If you are using
33+
GeoDNS, you should set the default backend to the primary access URL. Set the
34+
backend for each region with a satellite to the corresponding satellite access
35+
URL or IP address
36+
- A TLS certificate for the primary deployment that has both the primary
37+
hostname and the corresponding unified hostname
38+
- A TLS certificate for _each_ satellite with the satellite's hostname and the
39+
corresponding unified hostname
40+
41+
> Please note that:
42+
>
43+
> - If you are using cert-manager, you can add hostnames to a certificate by
44+
> including them in the `spec.dnsNames` section.
45+
> - We recommend maintaining a separate "regional" hostname or IP address for
46+
> each primary or satellite so you can access them explicitly to aid in
47+
> debugging. This guide will walk you through preserving the existing regional
48+
> access URL.
49+
50+
## Configure a unified access URL on Coder
51+
52+
1. Configure your geo DNS or anycast routing so the primary Coder deployment and
53+
all satellites share a single hostname, as well as their individual
54+
hostnames. (We have provided instructions on
55+
[how to create a GeoDNS load balancer on Cloudflare](#create-a-geodns-load-balancer-on-cloudflare)
56+
below.)
57+
58+
1. In the primary Helm values file, set `coderd.alternateHostnames` to your
59+
primary hostname and unified hostname:
60+
61+
```yaml
62+
coderd:
63+
alternateHostnames:
64+
- "primary.example.com"
65+
- "coder.example.com"
66+
```
67+
68+
1. In _each_ of your satellite deployments' Helm values file:
69+
70+
1. Set `coderd.satellite.accessURL` to your unified access URL (this value
71+
will be used as the default URL).
72+
73+
1. Set `coderd.alternateHostnames` to your satellite's specific hostname and
74+
your unified hostname:
75+
76+
```yaml
77+
coderd:
78+
alternateHostnames:
79+
- "satellite.example.com"
80+
- "coder.example.com"
81+
```
82+
83+
1. Redeploy your primary and satellite deployments with your new Helm values.
84+
85+
1. Once you've fully deployed your primary and satellite deployments, log into
86+
Coder on your original primary access URL and go to **Manage** > **Admin**.
87+
88+
1. On the **Infrastructure** tab, set the **Access URL** field to your unified
89+
access URL (e.g. `https://coder.example.com`).
90+
91+
1. If you've enabled logins via OIDC, log into your OIDC identity provider's
92+
admin page and update Coder's redirect URI to reflect your new access URL
93+
(e.g. `https://coder.example.com/oidc/callback`).
94+
95+
1. If you've enabled Git account linking, log into each Git provider and update
96+
Coder's redirect URI to reflect your new access URL.
97+
98+
At this point, all users should be able to access Coder via the unified access
99+
URL. Your DNS server will automatically route users to their nearest
100+
geographical primary or satellite deployment for low latency. OIDC logins should
101+
work as expected across all domain names, including the primary access URL.
102+
103+
## Create a geo DNS load balancer on Cloudflare
104+
105+
To create a geo DNS load balancer on Cloudflare:
106+
107+
1. Log in to Cloudflare, and select the domain on which you want your geo DNS
108+
hostname to exist.
109+
110+
1. Expand the **Traffic** app on the sidebar and select **Load Balancing**.
111+
112+
1. Enable **Load Balancing** if you haven't already.
113+
114+
1. Ensure that your Cloudflare plan has enough origin servers for your
115+
deployments; you will need one origin server for the primary deployment and
116+
one for each satellite deployment.
117+
118+
1. Click **Create Load Balancer**.
119+
120+
1. Enter the unified hostname you wish to use (e.g. `coder.example.com`).
121+
122+
![Enter hostname](../../assets/admin/cloudflare-geodns/hostname.png)
123+
124+
1. **Optional:** Disable Cloudflare proxying by **unchecking** the orange cloud.
125+
We recommend disabling Cloudflare proxying when using satellites, since
126+
proxying adds additional hops that will increase latency.
127+
128+
1. Click **Next** to proceed.
129+
130+
1. For the primary deployment and _each_ satellite deployment, do the following
131+
steps:
132+
133+
1. Click **+ Create an Origin Pool**.
134+
135+
1. Set the **Pool Name** and **Pool Description**.
136+
137+
1. Specify a single origin with **Origin Address** set to the hostname or IP
138+
address of the deployment. Then, set the **Weight** to **1**.
139+
140+
1. Click **Configure co-ordinates for Proximity Steering** and drag the
141+
marker to roughly where the deployment is located geographically.
142+
143+
1. Click **Save**.
144+
145+
![Create pool](../../assets/admin/cloudflare-geodns/create-pool.png)
146+
147+
1. Once you have completed the above steps for the primary and each satellite
148+
deployment, ensure that all origin pools have been assigned to the load
149+
balancer.
150+
151+
1. Set the **Fallback Pool** to your primary deployment's origin pool.
152+
153+
![Pools](../../assets/admin/cloudflare-geodns/pools.png)
154+
155+
1. Click **Next** until you reach the **Traffic Steering** step.
156+
157+
1. Set the traffic steering policy to **Proximity steering**.
158+
159+
1. Click **Next** until you reach the **Review** step.
160+
161+
1. Review your changes; then, click **Save and Deploy**.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
title: TUN device enablement
3+
description: Learn how to enable TUN devices for VPN usage within Coder.
4+
state: alpha
5+
---
6+
7+
By default, Coder workspaces do not contain a TUN device, making it difficult to
8+
run a VPN. However, Coder offers an admin configuration setting that, when
9+
enabled, automatically creates a TUN device within all Kubernetes [CVM-enabled
10+
workspaces](cvms/index.md).
11+
12+
> At this time, Coder does not support TUN devices for other workspace types
13+
> (such as EC2 or Docker).
14+
>
15+
> If you're working with EC2 workspaces, we recommend enabling privileged mode
16+
> in the workspace provider settings, which will allow users to create their own
17+
> TUN device.
18+
19+
## Enable TUN devices in Coder
20+
21+
To enable TUN devices for Kubernetes [CVM-enabled workspaces](cvms/index.md):
22+
23+
1. Log into Coder, and go to **Manage** > **Admin**.
24+
1. On the **Infrastructure** page, scroll down to the **Workspace container
25+
runtime** section.
26+
1. Under **Enable TUN device**, click the toggle to switch this feature **On**.
27+
1. Click **Save workspaces**.
28+
29+
![Enabling TUN devices](../../assets/admin/tun.png)
30+
31+
The new setting will apply to workspaces **after** you rebuild them.
32+
33+
Users running workspaces with TUN devices should be able to run VPN clients
34+
within their workspace as long as they have root (or `sudo`) access within their
35+
workspace.
36+
37+
> We've tested this feature using the [Tailscale](https://tailscale.com/) VPN
38+
> within Coder.
123 KB
Loading
78.9 KB
Loading
157 KB
Loading

assets/admin/tun.png

17.9 KB
Loading

changelog/1.28.0.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
---
2+
title: "1.28.0"
3+
description: "Released on 02/16/2022"
4+
---
5+
6+
### Breaking changes ❗
7+
8+
- infra: Coder v1.28.x requires the use of Kubernetes v1.21 or later. See
9+
Coder's [version support policy] for more information.
10+
11+
<!-- Turn off linting to avoid changing the link -->
12+
<!-- markdownlint-disable MD044 -->
13+
14+
[version support policy]:
15+
../setup/kubernetes/index.md#supported-kubernetes-versions
16+
17+
<!-- markdownlint-enable MD044 -->
18+
19+
### Features ✨
20+
21+
- web: added support for requesting additional scopes from the OIDC
22+
authentication provider.
23+
- web: added prompt for new users to link their Git accounts when signing in for
24+
the first time.
25+
- C4D: added ability to view Docker workspace providers in the dashboard and
26+
edit its name and organizations whitelist.
27+
- C4D: added support for remote Postgres databases to Coder for Docker.
28+
- cli: added ability for authenticated users to obtain their OIDC access token
29+
from the Coder CLI using `coder tokens get-oidc-access-token` once an admin
30+
has enabled access tokens.
31+
- api: added `autostart_at` field to the information returned about users.
32+
- infra: updated code-server to 4.0.2.
33+
- infra: added
34+
[support for a single access URL](../admin/satellites/global-access-url.md) to
35+
be used for both primary and satellite deployments using GeoDNS.
36+
- infra: updated Coder to pass `X-Forwarded-For` headers to dev URL connections.
37+
- infra: add client TLS support for Coder, which is used for connections to
38+
registries and Git providers.
39+
- infra: added a `labels` field to all logged entries for AWS EKS.
40+
- infra: added
41+
[support for TUN devices](../admin/workspace-management/tun-device.md) to
42+
CVM-enabled workspaces.
43+
44+
### Bug fixes 🐛
45+
46+
- web: fixed issue with Coder not persisting custom resource allocation
47+
requests.
48+
- web: fixed issue where existing OIDC users cannot log in when the license is
49+
at maximum usage.
50+
- web: fixed issue with dormant user accounts not being redirected home properly
51+
after being reactivated.
52+
- web: fixed issue with workspace provider tooltip interfering with the
53+
workspace start button.
54+
- web: removed ability to use double-hyphens in workspaces, causing conflict
55+
with dev URLs.
56+
- web: fix issue with custom apps not working with satellites.
57+
- C4D: fixed issue with access URLs not being saved.
58+
- C4D: fixed issue with inability to rebuild workspaces relying on templates.
59+
- cli: fixed issue where the `coder-cli` location was not appended to the `PATH`
60+
in terminal sessions.
61+
- infra: added functionality to clean up and remove image pull secrets during
62+
workspace clean-up.
63+
- infra: fixed issues with `coderd` certificate injection.
64+
65+
### Security updates 🔐
66+
67+
- web: added requirement to authenticate when auto-creating dev URLs.
68+
69+
### Known issues 🔧
70+
71+
- web: the service banner (if enabled) reappears for all users, even if they've
72+
previously dismissed it.
73+
- web: using the web terminal in Coder can occasionally result in the connection
74+
being reset and needing to be restarted.
75+
- web: the **Switch workspace** drop-down menu shows a workspace's status as
76+
**Building** even though the build process is completed.
77+
- web: users installing v1.24 (or later) into an air-gapped environment cannot
78+
upload their license when prompted.
File renamed without changes.

0 commit comments

Comments
 (0)