diff options
| author | Ellie Huxtable <ellie@elliehuxtable.com> | 2023-02-25 23:29:59 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-25 23:29:59 +0000 |
| commit | c558da5bebfebf239dde867f36cc35d56849accf (patch) | |
| tree | 2e75e2c479fa1d89632eafd8119e084243bafa5e /docs/k8s.md | |
| parent | Revert "Remove shortcut numbers (#708)" (#724) (diff) | |
| download | atuin-c558da5bebfebf239dde867f36cc35d56849accf.zip | |
Add fancy web docs (#725)
* Add initial site
* WIP again
* Replace docs with web docs
* Bring back translations
* Update README.md
* remove images
Diffstat (limited to 'docs/k8s.md')
| -rw-r--r-- | docs/k8s.md | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/docs/k8s.md b/docs/k8s.md deleted file mode 100644 index c15e8389..00000000 --- a/docs/k8s.md +++ /dev/null @@ -1,194 +0,0 @@ -# Kubernetes - -You could host your own Atuin server using the Kubernetes platform. - -Create a [`secrets.yaml`](../k8s/secrets.yaml) file for the database credentials: - -```yaml -apiVersion: v1 -kind: Secret -metadata: - name: atuin-secrets -type: Opaque -stringData: - ATUIN_DB_USERNAME: atuin - ATUIN_DB_PASSWORD: seriously-insecure - ATUIN_HOST: "127.0.0.1" - ATUIN_PORT: "8888" - ATUIN_OPEN_REGISTRATION: "true" - ATUIN_DB_URI: "postgres://atuin:seriously-insecure@localhost/atuin" -immutable: true -``` - -Create a [`atuin.yaml`](../k8s/atuin.yaml) file for the Atuin server: - -```yaml ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: atuin -spec: - replicas: 1 - selector: - matchLabels: - io.kompose.service: atuin - template: - metadata: - labels: - io.kompose.service: atuin - spec: - containers: - - args: - - server - - start - env: - - name: ATUIN_DB_URI - valueFrom: - secretKeyRef: - name: atuin-secrets - key: ATUIN_DB_URI - optional: false - - name: ATUIN_HOST - value: 0.0.0.0 - - name: ATUIN_PORT - value: "8888" - - name: ATUIN_OPEN_REGISTRATION - value: "true" - image: ghcr.io/ellie/atuin:main - name: atuin - ports: - - containerPort: 8888 - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: - - mountPath: /config - name: atuin-claim0 - - name: postgresql - image: postgres:14 - ports: - - containerPort: 5432 - env: - - name: POSTGRES_DB - value: atuin - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: atuin-secrets - key: ATUIN_DB_PASSWORD - optional: false - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: atuin-secrets - key: ATUIN_DB_USERNAME - optional: false - resources: - limits: - cpu: 250m - memory: 1Gi - requests: - cpu: 250m - memory: 1Gi - volumeMounts: - - mountPath: /var/lib/postgresql/data/ - name: database - volumes: - - name: database - persistentVolumeClaim: - claimName: database - - name: atuin-claim0 - persistentVolumeClaim: - claimName: atuin-claim0 ---- -apiVersion: v1 -kind: Service -metadata: - labels: - io.kompose.service: atuin - name: atuin -spec: - type: NodePort - ports: - - name: "8888" - port: 8888 - nodePort: 30530 - selector: - io.kompose.service: atuin ---- -kind: PersistentVolume -apiVersion: v1 -metadata: - name: database-pv - labels: - app: database - type: local -spec: - storageClassName: manual - capacity: - storage: 300Mi - accessModes: - - ReadWriteOnce - hostPath: - path: "/Users/firstname.lastname/.kube/database" ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - labels: - io.kompose.service: database - name: database -spec: - storageClassName: manual - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 300Mi ---- -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - labels: - io.kompose.service: atuin-claim0 - name: atuin-claim0 -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 10Mi -``` - -Finally, you may want to use a separate namespace for atuin, by creating a [`namespace.yaml`](../k8s/namespaces.yaml) file: - -```yaml -apiVersion: v1 -kind: Namespace -metadata: - name: atuin-namespace - labels: - name: atuin -``` - -Note that this configuration will store the database folder _outside_ the kubernetes cluster, in the folder `/Users/firstname.lastname/.kube/database` of the host system by configuring the `storageClassName` to be `manual`. In a real enterprise setup, you would probably want to store the database content permanently in the cluster, and not in the host system. - -You should also change the password string in `ATUIN_DB_PASSWORD` and `ATUIN_DB_URI` in the`secrets.yaml` file to a more secure one. - -The atuin service on the port `30530` of the host system. That is configured by the `nodePort` property. Kubernetes has a strict rule that you are not allowed to expose a port numbered lower than 30000. To make the clients work, you can simply set the port in in your `config.toml` file, e.g. `sync_address = "http://192.168.1.10:30530"`. - -Deploy the Atuin server using `kubectl`: - -```shell - kubectl apply -f ./namespaces.yaml - kubectl apply -n atuin-namespace \ - -f ./secrets.yaml \ - -f ./atuin.yaml -``` - -The sample files above are also in the [k8s](../k8s) folder of the atuin repository. |
