@@ -17,6 +17,11 @@ Install the following dependencies if you haven't already:
17
17
[ PostgreSQL] ( https://www.postgresql.org/docs/12/admin.html ) instance to store
18
18
data, including workspace information and session tokens.
19
19
20
+ > ⚠️ Coder requires a database in order to function. If Coder's database becomes
21
+ > unavailable, Coder will become unavailable. Ensure that your Coder database is
22
+ > monitored for common issues such as available connections, disk usage, and so
23
+ > on.
24
+
20
25
## For public sector deployments
21
26
22
27
Users with public sector deployments may need to obtain Coder's installation
@@ -31,7 +36,8 @@ resources from
31
36
32
37
## Install Coder
33
38
34
- 1 . Create the Coder [ namespace] ( https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ ) :
39
+ 1 . Create the Coder
40
+ [ namespace] ( https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ ) :
35
41
36
42
``` console
37
43
kubectl create namespace coder
@@ -90,142 +96,143 @@ resources from
90
96
## Set the super admin password
91
97
92
98
** Optional** : change the admin user password by updating ` values.yaml ` as
93
- follows:
94
-
95
- ``` yaml
96
- superAdmin :
97
- # Options for configuring the secret used to specify the password for the
98
- # built-in super admin account.
99
- passwordSecret :
100
- # coderd.superAdmin.passwordSecret.name -- Name of a secret that should
101
- # be used to determine the password for the super admin account. The
102
- # password should be contained in the field `password`, or the manually
103
- # specified one.
104
- name : " "
105
- # coderd.superAdmin.passwordSecret.key -- The key of the secret that
106
- # contains the super admin password.
107
- key : " password"
108
- ` ` `
99
+ follows:
100
+
101
+ ``` yaml
102
+ superAdmin :
103
+ # Options for configuring the secret used to specify the password for the
104
+ # built-in super admin account.
105
+ passwordSecret :
106
+ # coderd.superAdmin.passwordSecret.name -- Name of a secret that should
107
+ # be used to determine the password for the super admin account. The
108
+ # password should be contained in the field `password`, or the manually
109
+ # specified one.
110
+ name : " "
111
+ # coderd.superAdmin.passwordSecret.key -- The key of the secret that
112
+ # contains the super admin password.
113
+ key : " password"
114
+ ` ` `
109
115
110
116
## Connect an external database
111
117
112
- **Optional**: To configure an externally hosted database, set the following
113
- in ` values.yaml`:
114
-
115
- > Ensure that you have superuser privileges to your PostgreSQL database.
116
-
117
- ` ` ` yaml
118
- postgres:
119
- default:
120
- enable: false
121
- host: HOST_ADDRESS
122
- port: PORT_NUMBER
123
- user: YOUR_USER_NAME
124
- database: YOUR_DATABASE
125
- passwordSecret: secret-name
126
- sslMode: require
127
- ` ` `
128
-
129
- a. To create the `passwordSecret`, run :
130
-
131
- ` ` ` console
132
- kubectl create secret generic <NAME> --from-literal="password=UserDefinedPassword"
133
- ` ` `
134
-
135
- > Put a space before the command to prevent it from being saved in your shell
136
- > history.
137
- >
138
- > Running this command could potentially expose your database password to
139
- > other users on your system through `/proc`. If this is a concern, you can
140
- > use `--from-file=password=/dev/stdin` instead of `--from-literal=...` to
141
- > enter your password and press `Ctrl+D` when you're done to submit it.
142
- >
143
- > Ensure that there are no trailing white spaces in your password secret.
144
-
145
- For more detailed configuration instructions,
146
- [see our PostgreSQL setup guide](../guides/deployments/postgres.md).
147
- Alternatively, see our [guide on connecting to AWS RDS via IAM credentials](/guides/admin/awsrds.md).
118
+ **Optional**: To configure an externally hosted database, set the following in
119
+ ` values.yaml`:
120
+
121
+ > Ensure that you have superuser privileges to your PostgreSQL database.
122
+
123
+ ` ` ` yaml
124
+ postgres:
125
+ default:
126
+ enable: false
127
+ host: HOST_ADDRESS
128
+ port: PORT_NUMBER
129
+ user: YOUR_USER_NAME
130
+ database: YOUR_DATABASE
131
+ passwordSecret: secret-name
132
+ sslMode: require
133
+ ` ` `
134
+
135
+ a. To create the `passwordSecret`, run :
136
+
137
+ ` ` ` console
138
+ kubectl create secret generic <NAME> --from-literal="password=UserDefinedPassword"
139
+ ` ` `
140
+
141
+ > Put a space before the command to prevent it from being saved in your shell
142
+ > history.
143
+ >
144
+ > Running this command could potentially expose your database password to other
145
+ > users on your system through `/proc`. If this is a concern, you can use
146
+ > `--from-file=password=/dev/stdin` instead of `--from-literal=...` to enter
147
+ > your password and press `Ctrl+D` when you're done to submit it.
148
+ >
149
+ > Ensure that there are no trailing white spaces in your password secret.
150
+
151
+ For more detailed configuration instructions,
152
+ [see our PostgreSQL setup guide](../guides/deployments/postgres.md).
153
+ Alternatively, see our
154
+ [guide on connecting to AWS RDS via IAM credentials](/guides/admin/awsrds.md).
148
155
149
156
# # Enable dev URLs
150
157
151
158
**Optional**: Enable dev URL usage.
152
- [You must provide a wildcard domain in the Helm chart](../admin/devurls.md).
159
+ [You must provide a wildcard domain in the Helm chart](../admin/devurls.md).
153
160
154
- ` ` ` yaml
155
- coderd:
156
- devurlsHost: "*.my-custom-domain.io"
157
- ` ` `
161
+ ` ` ` yaml
162
+ coderd:
163
+ devurlsHost: "*.my-custom-domain.io"
164
+ ` ` `
158
165
159
166
# # Enable TLS
160
167
161
168
**Optional:** To set up TLS:
162
169
163
- a. You will need to create a TLS secret. To do so, run the following with the
164
- `.pem` files provided by your certificate :
170
+ a. You will need to create a TLS secret. To do so, run the following with the
171
+ `.pem` files provided by your certificate :
165
172
166
- ` ` ` console
167
- kubectl create secret tls tls-secret --key key.pem --cert cert.pem
168
- ` ` `
173
+ ` ` ` console
174
+ kubectl create secret tls tls-secret --key key.pem --cert cert.pem
175
+ ` ` `
169
176
170
- > If your certificate provider does not provide `.pem` files, then you may
171
- > need to attach the certificate to the LoadBalancer manually.
177
+ > If your certificate provider does not provide `.pem` files, then you may need
178
+ > to attach the certificate to the LoadBalancer manually.
172
179
173
- b. Attach the secret to the `coderd` service by setting the following values :
180
+ b. Attach the secret to the `coderd` service by setting the following values :
174
181
175
- ` ` ` yaml
176
- coderd:
177
- tls:
178
- hostSecretName: <tls-secret>
179
- devurlsHostSecretName: <tls-secret>
180
- ` ` `
182
+ ` ` ` yaml
183
+ coderd:
184
+ tls:
185
+ hostSecretName: <tls-secret>
186
+ devurlsHostSecretName: <tls-secret>
187
+ ` ` `
181
188
182
189
# # Set up an ingress controller
183
190
184
191
**Optional:** If you cannot use a load balancer, you may need an ingress
185
- controller. To configure one with Coder, set the following in `values.yaml` :
186
-
187
- > We assume that you already have an ingress controller installed in your
188
- > cluster.
189
-
190
- ` ` ` yaml
191
- coderd:
192
- devurlsHost: "*.devurls.coderhost.com"
193
- serviceSpec:
194
- # The Ingress will route traffic to the internal ClusterIP.
195
- type: ClusterIP
196
- externalTrafficPolicy: ""
197
- tls:
198
- hostSecretName: <tls-secret>
199
- devurlsHostSecretName: <tls-secret>
200
- ingress:
201
- enable: true
202
- # Hostname to use for routing decisions
203
- host: "coder.coderhost.com"
204
- # Custom annotations to apply to the resulting Ingress object
205
- # This is useful for configuring other controllers in the cluster
206
- # such as cert-manager or the ingress controller
207
- annotations: {}
208
- ` ` `
192
+ controller. To configure one with Coder, set the following in `values.yaml` :
193
+
194
+ > We assume that you already have an ingress controller installed in your
195
+ > cluster.
196
+
197
+ ` ` ` yaml
198
+ coderd:
199
+ devurlsHost: "*.devurls.coderhost.com"
200
+ serviceSpec:
201
+ # The Ingress will route traffic to the internal ClusterIP.
202
+ type: ClusterIP
203
+ externalTrafficPolicy: ""
204
+ tls:
205
+ hostSecretName: <tls-secret>
206
+ devurlsHostSecretName: <tls-secret>
207
+ ingress:
208
+ enable: true
209
+ # Hostname to use for routing decisions
210
+ host: "coder.coderhost.com"
211
+ # Custom annotations to apply to the resulting Ingress object
212
+ # This is useful for configuring other controllers in the cluster
213
+ # such as cert-manager or the ingress controller
214
+ annotations: {}
215
+ ` ` `
209
216
210
217
# # Configure a proxy
211
218
212
- **Optional:** To have Coder initiate outbound connections via a proxy, set
213
- the following (applicable) values :
219
+ **Optional:** To have Coder initiate outbound connections via a proxy, set the
220
+ following (applicable) values :
214
221
215
- ` ` ` yaml
216
- coderd:
217
- proxy:
218
- http: ""
219
- https: ""
220
- exempt: "cluster.local"
221
- ` ` `
222
+ ` ` ` yaml
223
+ coderd:
224
+ proxy:
225
+ http: ""
226
+ https: ""
227
+ exempt: "cluster.local"
228
+ ` ` `
222
229
223
- Once you've implemented all of the changes in `values.yaml`, upgrade Coder
224
- with the following command :
230
+ Once you've implemented all of the changes in `values.yaml`, upgrade Coder with
231
+ the following command :
225
232
226
- ` ` ` console
227
- helm upgrade coder coder/coder --namespace coder --version=<VERSION> -f values.yaml
228
- ` ` `
233
+ ` ` ` console
234
+ helm upgrade coder coder/coder --namespace coder --version=<VERSION> -f values.yaml
235
+ ` ` `
229
236
230
237
# # Logging
231
238
0 commit comments