Skip to content

Commit e7c0d54

Browse files
committed
add: code-server
1 parent fd7d998 commit e7c0d54

File tree

2 files changed

+28
-93
lines changed

2 files changed

+28
-93
lines changed

examples/templates/kubernetes-multi-service/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,5 +74,5 @@ Then start the Coder host with `serviceAccountName: coder` in the pod spec.
7474

7575
## Persistence
7676

77-
Each container in this Kubernetes pod example will have their `/home/coder` directory
78-
persisted via the attached PersistentVolumeClaim.
77+
The `/home/coder` directory in this example is persisted via the attached PersistentVolumeClaim.
78+
Any data saved outside of this directory will be wiped when the workspace stops.

examples/templates/kubernetes-multi-service/main.tf

Lines changed: 26 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ terraform {
66
}
77
kubernetes = {
88
source = "hashicorp/kubernetes"
9-
version = "~> 2.10"
9+
version = "~> 2.12.1"
1010
}
1111
}
1212
}
@@ -29,7 +29,7 @@ variable "workspaces_namespace" {
2929
type = string
3030
sensitive = true
3131
description = "The namespace to create workspaces in (must exist prior to creating workspaces)"
32-
default = "coder-workspaces"
32+
default = "coder-workspace"
3333
}
3434

3535
variable "disk_size" {
@@ -45,19 +45,25 @@ provider "kubernetes" {
4545

4646
data "coder_workspace" "me" {}
4747

48-
resource "coder_agent" "go" {
48+
resource "coder_agent" "main" {
4949
os = "linux"
5050
arch = "amd64"
51-
}
51+
startup_script = <<EOT
52+
#!/bin/bash
5253
53-
resource "coder_agent" "java" {
54-
os = "linux"
55-
arch = "amd64"
54+
# install and start code-server
55+
curl -fsSL https://code-server.dev/install.sh | sh | tee code-server-install.log
56+
code-server --auth none --port 13337 | tee code-server-install.log &
57+
EOT
5658
}
5759

58-
resource "coder_agent" "ubuntu" {
59-
os = "linux"
60-
arch = "amd64"
60+
# code-server
61+
resource "coder_app" "code-server" {
62+
agent_id = coder_agent.main.id
63+
name = "code-server"
64+
icon = "/icon/code.svg"
65+
url = "http://localhost:13337?folder=/home/coder"
66+
relative_path = true
6167
}
6268

6369
resource "kubernetes_pod" "main" {
@@ -67,92 +73,36 @@ resource "kubernetes_pod" "main" {
6773
namespace = var.workspaces_namespace
6874
}
6975
spec {
70-
container {
71-
name = "go"
72-
image = "codercom/enterprise-golang:ubuntu"
73-
command = ["sh", "-c", coder_agent.go.init_script]
74-
security_context {
75-
run_as_user = "1000"
76-
}
77-
env {
78-
name = "CODER_AGENT_TOKEN"
79-
value = coder_agent.go.token
80-
}
81-
volume_mount {
82-
mount_path = "/home/coder"
83-
name = "go-home-directory"
84-
}
85-
}
86-
volume {
87-
name = "go-home-directory"
88-
persistent_volume_claim {
89-
claim_name = kubernetes_persistent_volume_claim.go-home-directory.metadata.0.name
90-
}
76+
security_context {
77+
run_as_user = "1000"
78+
fs_group = "1000"
9179
}
9280
container {
93-
name = "java"
94-
image = "codercom/enterprise-java:ubuntu"
95-
command = ["sh", "-c", coder_agent.java.init_script]
96-
security_context {
97-
run_as_user = "1000"
98-
}
99-
env {
100-
name = "CODER_AGENT_TOKEN"
101-
value = coder_agent.java.token
102-
}
103-
volume_mount {
104-
mount_path = "/home/coder"
105-
name = "java-home-directory"
106-
}
107-
}
108-
volume {
109-
name = "java-home-directory"
110-
persistent_volume_claim {
111-
claim_name = kubernetes_persistent_volume_claim.java-home-directory.metadata.0.name
112-
}
113-
}
114-
container {
115-
name = "ubuntu"
81+
name = "dev"
11682
image = "codercom/enterprise-base:ubuntu"
117-
command = ["sh", "-c", coder_agent.ubuntu.init_script]
83+
command = ["sh", "-c", coder_agent.main.init_script]
11884
security_context {
11985
run_as_user = "1000"
12086
}
12187
env {
12288
name = "CODER_AGENT_TOKEN"
123-
value = coder_agent.ubuntu.token
89+
value = coder_agent.main.token
12490
}
12591
volume_mount {
12692
mount_path = "/home/coder"
127-
name = "ubuntu-home-directory"
93+
name = "home-directory"
12894
}
12995
}
13096
volume {
131-
name = "ubuntu-home-directory"
97+
name = "home-directory"
13298
persistent_volume_claim {
133-
claim_name = kubernetes_persistent_volume_claim.ubuntu-home-directory.metadata.0.name
134-
}
135-
}
136-
137-
}
138-
}
139-
140-
resource "kubernetes_persistent_volume_claim" "go-home-directory" {
141-
metadata {
142-
name = "home-coder-go-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
143-
namespace = var.workspaces_namespace
144-
}
145-
spec {
146-
access_modes = ["ReadWriteOnce"]
147-
resources {
148-
requests = {
149-
storage = "${var.disk_size}Gi"
99+
claim_name = kubernetes_persistent_volume_claim.home-directory.metadata.0.name
150100
}
151101
}
152102
}
153103
}
154104

155-
resource "kubernetes_persistent_volume_claim" "java-home-directory" {
105+
resource "kubernetes_persistent_volume_claim" "home-directory" {
156106
metadata {
157107
name = "home-coder-java-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
158108
namespace = var.workspaces_namespace
@@ -166,18 +116,3 @@ resource "kubernetes_persistent_volume_claim" "java-home-directory" {
166116
}
167117
}
168118
}
169-
170-
resource "kubernetes_persistent_volume_claim" "ubuntu-home-directory" {
171-
metadata {
172-
name = "home-coder-ubuntu-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
173-
namespace = var.workspaces_namespace
174-
}
175-
spec {
176-
access_modes = ["ReadWriteOnce"]
177-
resources {
178-
requests = {
179-
storage = "${var.disk_size}Gi"
180-
}
181-
}
182-
}
183-
}

0 commit comments

Comments
 (0)