Skip to content

Commit fd7d998

Browse files
committed
add: persistence & coder images
1 parent b0fe9bc commit fd7d998

File tree

2 files changed

+89
-3
lines changed

2 files changed

+89
-3
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,7 @@ roleRef:
7272

7373
Then start the Coder host with `serviceAccountName: coder` in the pod spec.
7474

75+
## Persistence
76+
77+
Each container in this Kubernetes pod example will have their `/home/coder` directory
78+
persisted via the attached PersistentVolumeClaim.

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

Lines changed: 85 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@ variable "workspaces_namespace" {
3232
default = "coder-workspaces"
3333
}
3434

35+
variable "disk_size" {
36+
type = number
37+
description = "Disk size (__ GB)"
38+
default = 10
39+
}
40+
3541
provider "kubernetes" {
3642
# Authenticate via ~/.kube/config or a Coder-specific ServiceAccount, depending on admin preferences
3743
config_path = var.use_kubeconfig == true ? "~/.kube/config" : null
@@ -63,7 +69,7 @@ resource "kubernetes_pod" "main" {
6369
spec {
6470
container {
6571
name = "go"
66-
image = "mcr.microsoft.com/vscode/devcontainers/go:1"
72+
image = "codercom/enterprise-golang:ubuntu"
6773
command = ["sh", "-c", coder_agent.go.init_script]
6874
security_context {
6975
run_as_user = "1000"
@@ -72,10 +78,20 @@ resource "kubernetes_pod" "main" {
7278
name = "CODER_AGENT_TOKEN"
7379
value = coder_agent.go.token
7480
}
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+
}
7591
}
7692
container {
7793
name = "java"
78-
image = "mcr.microsoft.com/vscode/devcontainers/java"
94+
image = "codercom/enterprise-java:ubuntu"
7995
command = ["sh", "-c", coder_agent.java.init_script]
8096
security_context {
8197
run_as_user = "1000"
@@ -84,10 +100,20 @@ resource "kubernetes_pod" "main" {
84100
name = "CODER_AGENT_TOKEN"
85101
value = coder_agent.java.token
86102
}
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+
}
87113
}
88114
container {
89115
name = "ubuntu"
90-
image = "mcr.microsoft.com/vscode/devcontainers/base:ubuntu"
116+
image = "codercom/enterprise-base:ubuntu"
91117
command = ["sh", "-c", coder_agent.ubuntu.init_script]
92118
security_context {
93119
run_as_user = "1000"
@@ -96,6 +122,62 @@ resource "kubernetes_pod" "main" {
96122
name = "CODER_AGENT_TOKEN"
97123
value = coder_agent.ubuntu.token
98124
}
125+
volume_mount {
126+
mount_path = "/home/coder"
127+
name = "ubuntu-home-directory"
128+
}
129+
}
130+
volume {
131+
name = "ubuntu-home-directory"
132+
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"
150+
}
151+
}
152+
}
153+
}
154+
155+
resource "kubernetes_persistent_volume_claim" "java-home-directory" {
156+
metadata {
157+
name = "home-coder-java-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
158+
namespace = var.workspaces_namespace
159+
}
160+
spec {
161+
access_modes = ["ReadWriteOnce"]
162+
resources {
163+
requests = {
164+
storage = "${var.disk_size}Gi"
165+
}
166+
}
167+
}
168+
}
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+
}
99181
}
100182
}
101183
}

0 commit comments

Comments
 (0)