-
Notifications
You must be signed in to change notification settings - Fork 432
/
devspace.yaml
240 lines (222 loc) · 5.8 KB
/
devspace.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
version: v2beta1
name: vcluster
# Variables used
vars:
# Make sure vcluster is the default namespace
DEVSPACE_FLAGS: "-n vcluster"
SYNCER_IMAGE: ghcr.io/loft-sh/loft-enterprise/dev-vcluster
COMMON_VALUES: ./test/commonValues.yaml
CONFORMANCE_VALUES: ./test/conformanceValues.yaml
PRO_VALUES: ./test/proValues.yaml
VALUES_FILE: ./test/e2e/values.yaml
# Images DevSpace will build for vcluster
images:
vcluster:
dockerfile: ./Dockerfile
image: ${SYNCER_IMAGE}
rebuildStrategy: ignoreContextChanges
target: builder
buildKit: {}
# Deployment used for vcluster
deployments:
vcluster-k8s:
helm:
releaseName: vcluster
chart:
name: ./chart
values:
controlPlane:
distro:
k8s:
enabled: true
statefulSet:
image:
registry: ""
repository: image(${SYNCER_IMAGE})
tag: tag(${SYNCER_IMAGE})
scheduling:
tolerations:
- operator: "Exists"
service:
spec:
type: NodePort
advanced:
serviceAccount:
enabled: false
name: default
telemetry:
enabled: false
vcluster-k3s:
helm:
releaseName: vcluster
chart:
name: ./chart
values:
controlPlane:
distro:
k3s:
enabled: true
statefulSet:
image:
registry: ""
repository: image(${SYNCER_IMAGE})
tag: tag(${SYNCER_IMAGE})
scheduling:
tolerations:
- operator: "Exists"
service:
spec:
type: NodePort
advanced:
serviceAccount:
enabled: false
name: default
telemetry:
enabled: false
vcluster-k0s:
helm:
releaseName: vcluster
chart:
name: ./chart
values:
controlPlane:
distro:
k0s:
enabled: true
statefulSet:
image:
registry: ""
repository: image(${SYNCER_IMAGE})
tag: tag(${SYNCER_IMAGE})
scheduling:
tolerations:
- operator: "Exists"
service:
spec:
type: NodePort
advanced:
serviceAccount:
enabled: false
name: default
telemetry:
enabled: false
# Dev Configuration for vcluster
dev:
vcluster:
imageSelector: ${SYNCER_IMAGE}
container: syncer
workingDir: /vcluster-dev
resources:
limits:
cpu: "0" # to prevent CPU throttling during compilation
memory: "0" # to prevent OOM kills which can happen during first compilation due to high number of deps
terminal:
command: "./devspace_start.sh"
ports:
- port: 2346:2345
sync:
- excludePaths:
- "**"
- "!/pkg"
- "cmd/vclusterctl/cmd/charts"
- "!/cmd"
- "!/vendor"
- "!/config"
- "!/hack"
- "!/go.mod"
- "!/go.sum"
- "!/devspace_start.sh"
- "!/manifests"
- "/manifests/coredns" # shouldn't sync to this path because it is mounted from a ConfigMap as ReadOnly
# Pipelines used for vcluster
pipelines:
dev:
flags:
- name: distro
description: "Virtual cluster distribution to use"
default: "k8s"
type: string
run: |-
# Deploy the vcluster
run_pipelines deploy --set-flag distro=$(get_flag distro)
# Start dev mode
start_dev --all
deploy:
flags:
- name: distro
description: "Virtual cluster distribution to use"
default: "k8s"
type: string
run: |-
# Make sure pull secrets are there
ensure_pull_secrets --all
# Build the vcluster image
build_images --all
if $(is_in "test-conformance" "${DEVSPACE_PROFILES}"); then
minikube image load $(get_image "vcluster") --overwrite=false || true
fi
# Deploy the vcluster
if is_equal $(get_flag distro) k8s; then
create_deployments vcluster-k8s
elif is_equal $(get_flag distro) k0s; then
create_deployments vcluster-k0s
else
create_deployments vcluster-k3s
fi
purge:
run: |-
# Purge the vcluster
run_default_pipeline purge
# Make sure the pvcs are deleted as well
kubectl delete pvc --all -n ${DEVSPACE_NAMESPACE}
profiles:
- name: test-k3s
patches:
- op: add
path: deployments.vcluster-k3s.helm
value:
valuesFiles:
- ${COMMON_VALUES}
- ${VALUES_FILE}
- name: test-k8s
patches:
- op: add
path: deployments.vcluster-k8s.helm
value:
valuesFiles:
- ${COMMON_VALUES}
- ${VALUES_FILE}
- name: test-k0s
patches:
- op: add
path: deployments.vcluster-k0s.helm
value:
valuesFiles:
- ${COMMON_VALUES}
- ${VALUES_FILE}
- name: test-pro
patches:
- op: add
path: deployments.vcluster-k8s.helm
value:
valuesFiles:
- ${COMMON_VALUES}
- ${VALUES_FILE}
- ${PRO_VALUES}
- name: test-conformance
patches:
- op: replace
path: images.vcluster.buildKit
value:
preferMinikube: false
- op: add
path: deployments.vcluster-k8s.helm
value:
valuesFiles:
- ${CONFORMANCE_VALUES}
commands:
# e.g. devspace run test k3s
# e.g. devspace run test k3s --var VALUES_FILE=./test/e2e_node
test: |-
devspace purge -n ${DEVSPACE_NAMESPACE} --debug
devspace dev -n ${DEVSPACE_NAMESPACE} --profile test-$@