restructure documentation
This commit is contained in:
parent
6d258fe5ae
commit
ace5df1b43
2 changed files with 47 additions and 41 deletions
47
README.md
47
README.md
|
@ -3,6 +3,10 @@
|
|||
Nix definitions to configure our physical servers.
|
||||
Currently, only one physical server (named jefke) is implemented but more are planned!
|
||||
|
||||
## Additional documentation
|
||||
|
||||
- [Kubernetes](docs/kubernetes.md)
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. Install the Nix package manager or NixOS ([link](https://nixos.org/download))
|
||||
|
@ -24,44 +28,5 @@ Additionally, it deploys an age identity, which is later used for decrypting sec
|
|||
|
||||
## Deployment
|
||||
|
||||
Deployment can simply be done as follows: `deploy`
|
||||
|
||||
## Creating an admin certificate for k3s
|
||||
|
||||
Create the admin's private key:
|
||||
```
|
||||
openssl genpkey -algorithm ed25519 -out <username>-key.pem
|
||||
```
|
||||
|
||||
Create a CSR for the admin:
|
||||
```
|
||||
openssl req -new -key <username>-key.pem -out <username>.csr -subj "/CN=<username>"
|
||||
```
|
||||
|
||||
Create a Kubernetes CSR object on the cluster:
|
||||
```
|
||||
k3s kubectl create -f - <<EOF
|
||||
apiVersion: certificates.k8s.io/v1
|
||||
kind: CertificateSigningRequest
|
||||
metadata:
|
||||
name: <username>-csr
|
||||
spec:
|
||||
request: $(cat <username>.csr | base64 | tr -d '\n')
|
||||
expirationSeconds: 307584000 # 10 years
|
||||
signerName: kubernetes.io/kube-apiserver-client
|
||||
usages:
|
||||
- digital signature
|
||||
- key encipherment
|
||||
- client auth
|
||||
EOF
|
||||
```
|
||||
|
||||
Approve and sign the admin's CSR:
|
||||
```
|
||||
k3s kubectl certificate approve <username>-csr
|
||||
```
|
||||
|
||||
Extract the resulting signed certificate from the CSR object:
|
||||
```
|
||||
k3s kubectl get csr <username>-csr -o jsonpath='{.status.certificate}' | base64 --decode > <username>.crt
|
||||
```
|
||||
To deploy all servers at once: `deploy`
|
||||
To deploy only one server: `deploy --targets .#<host>`
|
||||
|
|
41
docs/kubernetes.md
Normal file
41
docs/kubernetes.md
Normal file
|
@ -0,0 +1,41 @@
|
|||
# Kubernetes
|
||||
|
||||
## Creating an admin certificate for k3s
|
||||
|
||||
Create the admin's private key:
|
||||
```
|
||||
openssl genpkey -algorithm ed25519 -out <username>-key.pem
|
||||
```
|
||||
|
||||
Create a CSR for the admin:
|
||||
```
|
||||
openssl req -new -key <username>-key.pem -out <username>.csr -subj "/CN=<username>"
|
||||
```
|
||||
|
||||
Create a Kubernetes CSR object on the cluster:
|
||||
```
|
||||
k3s kubectl create -f - <<EOF
|
||||
apiVersion: certificates.k8s.io/v1
|
||||
kind: CertificateSigningRequest
|
||||
metadata:
|
||||
name: <username>-csr
|
||||
spec:
|
||||
request: $(cat <username>.csr | base64 | tr -d '\n')
|
||||
expirationSeconds: 307584000 # 10 years
|
||||
signerName: kubernetes.io/kube-apiserver-client
|
||||
usages:
|
||||
- digital signature
|
||||
- key encipherment
|
||||
- client auth
|
||||
EOF
|
||||
```
|
||||
|
||||
Approve and sign the admin's CSR:
|
||||
```
|
||||
k3s kubectl certificate approve <username>-csr
|
||||
```
|
||||
|
||||
Extract the resulting signed certificate from the CSR object:
|
||||
```
|
||||
k3s kubectl get csr <username>-csr -o jsonpath='{.status.certificate}' | base64 --decode > <username>.crt
|
||||
```
|
Loading…
Reference in a new issue