Parcourir la source

Add self-hosted Kubernetes steps

Gabriel Simmer il y a 3 ans
Parent
commit
9d85cfa062
1 fichiers modifiés avec 105 ajouts et 0 suppressions
  1. 105 0
      docs/install.md

+ 105 - 0
docs/install.md

@@ -294,3 +294,108 @@ COPY server.yml /etc/ntfy/server.yml
 ENTRYPOINT ["ntfy", "serve"]
 ```
 This image can be pushed to a container registry and shipped independently. All that's needed when running it is mapping ntfy's port to a host port.
+
+## Kubernetes
+
+The setup for Kubernetes is very similar to that for Docker, and requires a fairly minimal deployment or pod definition to function.
+
+
+=== "deployment"
+    ```yaml
+    apiVersion: apps/v1
+    kind: Deployment
+    metadata:
+    name: ntfy
+    spec:
+    selector:
+        matchLabels:
+        app: ntfy
+    template:
+        metadata:
+        labels:
+            app: ntfy
+        spec:
+        containers:
+        - name: ntfy
+            image: binwiederhier/ntfy
+            args: ["serve"]
+            resources:
+            limits:
+                memory: "128Mi"
+                cpu: "500m"
+            ports:
+            - containerPort: 80
+            name: http
+            volumeMounts:
+            - name: config
+            mountPath: "/etc/ntfy"
+            readOnly: true
+        volumes:
+            - name: config
+            configMap:
+                name: ntfy
+    ```
+
+=== "pod"
+    ```yaml
+    apiVersion: v1
+    kind: Pod
+    metadata:
+      labels:
+        app: ntfy
+    spec:
+      containers:
+      - name: ntfy
+        image: binwiederhier/ntfy
+        args: ["serve"]
+        resources:
+          limits:
+            memory: "128Mi"
+            cpu: "500m"
+        ports:
+        - containerPort: 80
+          name: http
+        volumeMounts:
+        - name: config
+          mountPath: "/etc/ntfy"
+          readOnly: true
+      volumes:
+        - name: config
+          configMap:
+            name: ntfy
+    ```
+
+Configuration is relatively straightforward. As an exmaple, a minimal configuration is provided.
+
+=== "resource definition"
+    ```yaml
+    apiVersion: v1
+    kind: ConfigMap
+    metadata:
+    name: ntfy
+    data:
+    server.yml: |
+        # Template: https://github.com/binwiederhier/ntfy/blob/main/server/server.yml
+        base-url: https://ntfy.sh
+    ```
+
+=== "from-file"
+    ```bash
+    kubectl create configmap ntfy --from-file=server.yml 
+    ```
+
+A small service is also required to properly route your traffic to the pod - it is recommended to use an ingress, but a NodePort may also
+be acceptable.
+
+```yaml
+apiVersion: v1
+kind: Service
+metadata:
+  name: ntfy
+spec:
+  selector:
+    app: ntfy
+  ports:
+  - port: 80
+    targetPort: 80
+```