Skip to content

Commit 90c710b

Browse files
committed
feat: promote single-tailnet out of experimental
1 parent 2883cad commit 90c710b

File tree

9 files changed

+30
-115
lines changed

9 files changed

+30
-115
lines changed

coderd/apidoc/docs.go

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -445,25 +445,19 @@ func New(options *Options) *API {
445445

446446
api.Auditor.Store(&options.Auditor)
447447
api.TailnetCoordinator.Store(&options.TailnetCoordinator)
448-
if api.Experiments.Enabled(codersdk.ExperimentSingleTailnet) {
449-
api.agentProvider, err = NewServerTailnet(api.ctx,
450-
options.Logger,
451-
options.DERPServer,
452-
api.DERPMap,
453-
options.DeploymentValues.DERP.Config.ForceWebSockets.Value(),
454-
func(context.Context) (tailnet.MultiAgentConn, error) {
455-
return (*api.TailnetCoordinator.Load()).ServeMultiAgent(uuid.New()), nil
456-
},
457-
wsconncache.New(api._dialWorkspaceAgentTailnet, 0),
458-
api.TracerProvider,
459-
)
460-
if err != nil {
461-
panic("failed to setup server tailnet: " + err.Error())
462-
}
463-
} else {
464-
api.agentProvider = &wsconncache.AgentProvider{
465-
Cache: wsconncache.New(api._dialWorkspaceAgentTailnet, 0),
466-
}
448+
api.agentProvider, err = NewServerTailnet(api.ctx,
449+
options.Logger,
450+
options.DERPServer,
451+
api.DERPMap,
452+
options.DeploymentValues.DERP.Config.ForceWebSockets.Value(),
453+
func(context.Context) (tailnet.MultiAgentConn, error) {
454+
return (*api.TailnetCoordinator.Load()).ServeMultiAgent(uuid.New()), nil
455+
},
456+
wsconncache.New(api._dialWorkspaceAgentTailnet, 0),
457+
api.TracerProvider,
458+
)
459+
if err != nil {
460+
panic("failed to setup server tailnet: " + err.Error())
467461
}
468462

469463
workspaceAppsLogger := options.Logger.Named("workspaceapps")

codersdk/deployment.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,11 +2066,6 @@ const (
20662066
// only Coordinator
20672067
ExperimentTailnetPGCoordinator Experiment = "tailnet_pg_coordinator"
20682068

2069-
// ExperimentSingleTailnet replaces workspace connections inside coderd to
2070-
// all use a single tailnet, instead of the previous behavior of creating a
2071-
// single tailnet for each agent.
2072-
ExperimentSingleTailnet Experiment = "single_tailnet"
2073-
20742069
// ExperimentTemplateAutostopRequirement allows template admins to have more
20752070
// control over when workspaces created on a template are required to
20762071
// stop, and allows users to ensure these restarts never happen during their
@@ -2099,7 +2094,6 @@ const (
20992094
// not be included here and will be essentially hidden.
21002095
var ExperimentsAll = Experiments{
21012096
ExperimentDeploymentHealthPage,
2102-
ExperimentSingleTailnet,
21032097
}
21042098

21052099
// Experiments is a list of experiments.

docs/api/schemas.md

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

enterprise/wsproxy/wsproxy.go

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -239,27 +239,19 @@ func New(ctx context.Context, opts *Options) (*Server, error) {
239239
return nil, xerrors.Errorf("parse app security key: %w", err)
240240
}
241241

242-
var agentProvider workspaceapps.AgentProvider
243-
if opts.Experiments.Enabled(codersdk.ExperimentSingleTailnet) {
244-
stn, err := coderd.NewServerTailnet(ctx,
245-
s.Logger,
246-
nil,
247-
func() *tailcfg.DERPMap {
248-
return s.latestDERPMap.Load()
249-
},
250-
regResp.DERPForceWebSockets,
251-
s.DialCoordinator,
252-
wsconncache.New(s.DialWorkspaceAgent, 0),
253-
s.TracerProvider,
254-
)
255-
if err != nil {
256-
return nil, xerrors.Errorf("create server tailnet: %w", err)
257-
}
258-
agentProvider = stn
259-
} else {
260-
agentProvider = &wsconncache.AgentProvider{
261-
Cache: wsconncache.New(s.DialWorkspaceAgent, 0),
262-
}
242+
agentProvider, err := coderd.NewServerTailnet(ctx,
243+
s.Logger,
244+
nil,
245+
func() *tailcfg.DERPMap {
246+
return s.latestDERPMap.Load()
247+
},
248+
regResp.DERPForceWebSockets,
249+
s.DialCoordinator,
250+
wsconncache.New(s.DialWorkspaceAgent, 0),
251+
s.TracerProvider,
252+
)
253+
if err != nil {
254+
return nil, xerrors.Errorf("create server tailnet: %w", err)
263255
}
264256

265257
workspaceAppsLogger := opts.Logger.Named("workspaceapps")

enterprise/wsproxy/wsproxy_test.go

Lines changed: 1 addition & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import (
1717
"cdr.dev/slog/sloggers/slogtest"
1818
"github.com/coder/coder/v2/agent/agenttest"
1919
"github.com/coder/coder/v2/cli/clibase"
20-
"github.com/coder/coder/v2/coderd"
2120
"github.com/coder/coder/v2/coderd/coderdtest"
2221
"github.com/coder/coder/v2/coderd/healthcheck/derphealth"
2322
"github.com/coder/coder/v2/coderd/httpmw"
@@ -434,7 +433,7 @@ resourceLoop:
434433
require.False(t, p2p)
435434
}
436435

437-
func TestWorkspaceProxyWorkspaceApps_Wsconncache(t *testing.T) {
436+
func TestWorkspaceProxyWorkspaceApps(t *testing.T) {
438437
t.Parallel()
439438

440439
apptest.Run(t, false, func(t *testing.T, opts *apptest.DeploymentOptions) *apptest.Deployment {
@@ -491,60 +490,3 @@ func TestWorkspaceProxyWorkspaceApps_Wsconncache(t *testing.T) {
491490
}
492491
})
493492
}
494-
495-
func TestWorkspaceProxyWorkspaceApps_SingleTailnet(t *testing.T) {
496-
t.Parallel()
497-
498-
apptest.Run(t, false, func(t *testing.T, opts *apptest.DeploymentOptions) *apptest.Deployment {
499-
deploymentValues := coderdtest.DeploymentValues(t)
500-
deploymentValues.DisablePathApps = clibase.Bool(opts.DisablePathApps)
501-
deploymentValues.Dangerous.AllowPathAppSharing = clibase.Bool(opts.DangerousAllowPathAppSharing)
502-
deploymentValues.Dangerous.AllowPathAppSiteOwnerAccess = clibase.Bool(opts.DangerousAllowPathAppSiteOwnerAccess)
503-
deploymentValues.Experiments = []string{
504-
string(codersdk.ExperimentMoons),
505-
string(codersdk.ExperimentSingleTailnet),
506-
"*",
507-
}
508-
509-
client, _, api, user := coderdenttest.NewWithAPI(t, &coderdenttest.Options{
510-
Options: &coderdtest.Options{
511-
DeploymentValues: deploymentValues,
512-
AppHostname: "*.primary.test.coder.com",
513-
IncludeProvisionerDaemon: true,
514-
RealIPConfig: &httpmw.RealIPConfig{
515-
TrustedOrigins: []*net.IPNet{{
516-
IP: net.ParseIP("127.0.0.1"),
517-
Mask: net.CIDRMask(8, 32),
518-
}},
519-
TrustedHeaders: []string{
520-
"CF-Connecting-IP",
521-
},
522-
},
523-
WorkspaceAppsStatsCollectorOptions: opts.StatsCollectorOptions,
524-
},
525-
LicenseOptions: &coderdenttest.LicenseOptions{
526-
Features: license.Features{
527-
codersdk.FeatureWorkspaceProxy: 1,
528-
},
529-
},
530-
})
531-
532-
// Create the external proxy
533-
if opts.DisableSubdomainApps {
534-
opts.AppHost = ""
535-
}
536-
proxyAPI := coderdenttest.NewWorkspaceProxy(t, api, client, &coderdenttest.ProxyOptions{
537-
Name: "best-proxy",
538-
Experiments: coderd.ReadExperiments(api.Logger, deploymentValues.Experiments.Value()),
539-
AppHostname: opts.AppHost,
540-
DisablePathApps: opts.DisablePathApps,
541-
})
542-
543-
return &apptest.Deployment{
544-
Options: opts,
545-
SDKClient: client,
546-
FirstUser: user,
547-
PathAppBaseURL: proxyAPI.Options.AccessURL,
548-
}
549-
})
550-
}

site/src/api/typesGenerated.ts

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

site/src/pages/DeploySettingsPage/GeneralSettingsPage/GeneralSettingsPageView.stories.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ const meta: Meta<typeof GeneralSettingsPageView> = {
3434
description:
3535
"Enable one or more experiments. These are not ready for production. Separate multiple experiments with commas, or enter '*' to opt-in to all available experiments.",
3636
flag: "experiments",
37-
value: ["single_tailnet"],
37+
value: ["workspace_actions"],
3838
flag_shorthand: "",
3939
hidden: false,
4040
},
4141
],
4242
deploymentDAUs: MockDeploymentDAUResponse,
43-
safeExperiments: ["single_tailnet", "deployment_health_page"],
43+
safeExperiments: ["deployment_health_page"],
4444
},
4545
};
4646

@@ -102,6 +102,6 @@ export const allExperimentsEnabled: Story = {
102102
hidden: false,
103103
},
104104
],
105-
safeExperiments: ["single_tailnet", "deployment_health_page"],
105+
safeExperiments: ["deployment_health_page"],
106106
},
107107
};

0 commit comments

Comments
 (0)