Tidy up examples, StatefulSet example

This commit is contained in:
Gabriel Simmer 2022-10-26 16:00:17 +01:00 committed by GitHub
parent 9d85cfa062
commit 956e092413
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -297,7 +297,9 @@ This image can be pushed to a container registry and shipped independently. All
## Kubernetes ## Kubernetes
The setup for Kubernetes is very similar to that for Docker, and requires a fairly minimal deployment or pod definition to function. The setup for Kubernetes is very similar to that for Docker, and requires a fairly minimal deployment or pod definition to function. There
are a few options to mix and match, including a deployment without a cache file, a stateful set with a persistant cache, and a standalone
unmanaged pod.
=== "deployment" === "deployment"
@ -305,35 +307,88 @@ The setup for Kubernetes is very similar to that for Docker, and requires a fair
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: ntfy name: ntfy
spec: spec:
selector: selector:
matchLabels: matchLabels:
app: ntfy app: ntfy
template: template:
metadata: metadata:
labels: labels:
app: ntfy app: ntfy
spec: spec:
containers: containers:
- name: ntfy - name: ntfy
image: binwiederhier/ntfy image: binwiederhier/ntfy
args: ["serve"] args: ["serve"]
resources: resources:
limits: limits:
memory: "128Mi" memory: "128Mi"
cpu: "500m" cpu: "500m"
ports: ports:
- containerPort: 80 - containerPort: 80
name: http name: http
volumeMounts: volumeMounts:
- name: config - name: config
mountPath: "/etc/ntfy" mountPath: "/etc/ntfy"
readOnly: true readOnly: true
volumes: volumes:
- name: config - name: config
configMap: configMap:
name: ntfy name: ntfy
---
# Basic service for port 80
apiVersion: v1
kind: Service
metadata:
name: ntfy
spec:
selector:
app: ntfy
ports:
- port: 80
targetPort: 80
```
=== "stateful set"
```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: ntfy
spec:
selector:
matchLabels:
app: ntfy
serviceName: ntfy
template:
metadata:
labels:
app: ntfy
spec:
containers:
- name: ntfy
image: binwiederhier/ntfy
args: ["serve", "--cache-file /var/cache/ntfy/cache.db"]
ports:
- containerPort: 80
name: http
volumeMounts:
- name: config
mountPath: "/etc/ntfy"
readOnly: true
volumes:
- name: config
configMap:
name: ntfy
volumeClaimTemplates:
- metadata:
name: cache
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
``` ```
=== "pod" === "pod"
@ -372,7 +427,7 @@ Configuration is relatively straightforward. As an exmaple, a minimal configurat
apiVersion: v1 apiVersion: v1
kind: ConfigMap kind: ConfigMap
metadata: metadata:
name: ntfy name: ntfy
data: data:
server.yml: | server.yml: |
# Template: https://github.com/binwiederhier/ntfy/blob/main/server/server.yml # Template: https://github.com/binwiederhier/ntfy/blob/main/server/server.yml
@ -383,19 +438,3 @@ Configuration is relatively straightforward. As an exmaple, a minimal configurat
```bash ```bash
kubectl create configmap ntfy --from-file=server.yml 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
```