You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+258-2
Original file line number
Diff line number
Diff line change
@@ -211,7 +211,263 @@ For docker-compose, we consider the Vault and the Spire Server as setup and the
211
211
212
212
#### K8s
213
213
214
-
WIP
214
+
HPCS' serverside consists in an web API. The difficulty in the installation of it comes with the underlying services that needs to be available for it to run properly. Here is a scheme of the architecture of a fully-installed HPCS server side.
215
+
216
+
```mermaid
217
+
flowchart LR
218
+
219
+
subgraph SSP[Spire Server pod]
220
+
SSC[Spire Server container]
221
+
SOC[Spire OIDC container]
222
+
NC[Nginx proxy]
223
+
end
224
+
225
+
SSS[Spire server service]
226
+
VS[Vault service]
227
+
228
+
VP[Vault pod]
229
+
230
+
HP[HPCS server pod]
231
+
232
+
SSC <-- TCP:8081--> SSS
233
+
NC <-- HTTPS:443--> SSS
234
+
SSC <--UNIX Socket--> SOC
235
+
SOC <--UNIX Socket--> NC
236
+
SSS <--HTTPS:443--> VP
237
+
HP <--TCP:8081--> SSS
238
+
HP <--UNIX Socket--> SSC
239
+
VS <--HTTP:8200--> VP
240
+
HP <--HTTP:8200--> VS
241
+
242
+
Outside <--HTTP:anyport--> VS
243
+
Outside <--TCP:anyport--> SSS
244
+
```
245
+
(Ports are specified for the serverside, clients ports used for communication doesn't matter)
246
+
247
+
This architecture comes in 3 different main parts :
248
+
- HPCS Server (1 Container, containing Spire-Agent and HPCS Server)
249
+
- Spire Server (3 Containers, spire-server, spire-oidc, and hpcs-nginx)
250
+
- Vault (Helm chart, not managed by HPCS)
251
+
252
+
In order to proceed to the deployment of this architecture, k8s is the supported method, all the code associated is available under `/k8s`.
253
+
254
+
##### Pre-requisite
255
+
256
+
Before proceeding to HPCS' deployment, an original setup is required including :
257
+
- A ready-to-run k8s cluster
258
+
-`kubectl` and `helm` available and able to run kubernetes configurations (`.yaml`)
259
+
-`rbac`, `storage` and `dns` and `helm` kubernetes capabilities, f.e : `microk8s enable rbac storage dns helm` with microk8s.
260
+
261
+
Please note down the name of your k8s cluster in order to run later deployments.
262
+
263
+
##### Configuration
264
+
265
+
Several configurations are to be reviewed before proceeding.
266
+
- Nginx SSL Certificate path : Please review in `/k8s/spire-server-nginx-configmap.yaml` (section `ssl_certificate`) and `/k8s/spire-server-statefulset.yaml` (section `volumeMounts` of container `hpcs-nginx` and section `volumes` of the pod configuration). If you plan to run the deployment using ansible, please review `/k8s/deploy-all.yaml`, section `Copy oidc cert to vault's pod` and `Create spire-oidc {key, csr, cert}` for the host path to the certificate. Create the directory configured before running deployment.
267
+
268
+
- Cluster name : Please review in `/k8s/hpcs-server-configmap.yaml`, section "`agent.conf`", then "`k8s_psat`" and `/k8s/spire-server-configmap.yaml`, section "`server.conf`", then "`k8s_psat`", replace "`docker-desktop`" with your k8s cluster name.
269
+
270
+
- For further information about spire agent/ server configurations under `/k8s/hpcs-server-configmap.yaml` and `/k8s/spire-server-configmap.yaml`, please refer to spire-server [configuration reference](https://spiffe.io/docs/latest/deploying/spire_server) and spire-agent [configuration reference](https://spiffe.io/docs/latest/deploying/spire_agent/).
271
+
272
+
273
+
##### Bash
274
+
275
+
This part of the documentation walks you through the different steps necessary in order to run a manual deployment of HPCS' serverside (including Vault, Spire-Server and HPCS Server).
That's it, you can now use HPCS server as you please.
445
+
446
+
##### Ansible
447
+
448
+
:warning: This method is currently still under development. You could run into non-documented issues.
449
+
450
+
The previously explained steps can be automatically run using an ansible playbook available under `/k8s/deploy-all.yaml`
451
+
452
+
All the pre-requisites listed before are necessary to run this playbook. If you are running kubernetes using `microk8s`, you will need to create aliases or fake commands for `helm`, for example using a script :
453
+
```bash
454
+
#!/bin/bash
455
+
456
+
microk8s helm3 $@
457
+
```
458
+
Written as `/usr/bin/helm`.
459
+
460
+
You will also need ansible k8s and openssl plugins :
@@ -366,4 +622,4 @@ When a client wants to encrypt its data or container and to give access to it to
366
622
- Using cgroupsv2
367
623
- Replacing every calling binary by the hypervisor
368
624
369
-
Since this limitation doesn't represent a confidentiality issue (a client isn't ever provided more than a write-only permission), current mitigations are more practical than secure (again, see #5).
625
+
Since this limitation doesn't represent a confidentiality issue (a client isn't ever provided more than a write-only permission), current mitigations are more practical than secure (again, see #5).
0 commit comments