re-format and cleanup
This commit is contained in:
parent
2fb7523d06
commit
0234041e1e
1 changed files with 145 additions and 157 deletions
300
docs/install.md
300
docs/install.md
|
@ -439,164 +439,152 @@ Configuration is relatively straightforward. As an example, a minimal configurat
|
||||||
kubectl create configmap ntfy --from-file=server.yml
|
kubectl create configmap ntfy --from-file=server.yml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Kustomization
|
## Kustomize
|
||||||
Create new folder, name it nfty and create kustomization.yaml within along all resources listed below.
|
|
||||||
Ingress is optional - you can skip this one if planning to expose service using different service type (hash it out from kustomization file)
|
|
||||||
|
|
||||||
```yaml
|
`ntfy` can be deployed in Kubernetes cluster with [Kustomize](https://github.com/kubernetes-sigs/kustomize) - tool used to customize Kubernetes objects using kustomization file.
|
||||||
|
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
1. Create new folder - `ntfy`
|
||||||
kind: Kustomization
|
2. Add all files listed below
|
||||||
resources:
|
1. kustomization.yaml - stores all configmaps and resources used in deployment
|
||||||
- ntfy-deployment.yaml # main deployment
|
2. ntfy-deployment.yam - define deployment type and it's parameters-
|
||||||
- ntfy-svc.yaml # service connecting two pods together
|
3. ntfy-pvc.yaml - describes how [persistent volume](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) will be created
|
||||||
- ntfy-pvc.yaml # pvc uset to store cache and attachment
|
4. ntfy-svc.yaml - expose application to the internal kubernetes network
|
||||||
- ntfy-ingress.yaml # ingress traefik
|
5. ntfy-ingress.yaml - expose service to outside network using [Ingress controller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/)
|
||||||
|
6. server.yaml - simple server configuration
|
||||||
configMapGenerator: # will parse config from raw config to configmap,it allows for dynamic reload of application if additional app is deployed ie https://github.com/stakater/Reloader
|
4. Replace **TESTNAMESPACE** within kustomization.yaml with designated namespace
|
||||||
- name: server-config
|
5. Replace **ntfy.test** within ntfy-ingress.yaml with desired DNS name
|
||||||
files:
|
6. Apply configuration to cluster set in current context:
|
||||||
- server.yml
|
|
||||||
|
|
||||||
namespace: TESTNAMESPACE # select namaespace for whole application
|
|
||||||
|
|
||||||
----
|
|
||||||
|
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1 #local resources
|
|
||||||
kind: Kustomization
|
|
||||||
resources:
|
|
||||||
- git@github.com:gituser/kustomize.git/kustomize/main/ #WIP when complete config will be stored in repo
|
|
||||||
|
|
||||||
namespace: TESTNAMESPACE # select namaespace for whole application
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### ntfy-deployment.yaml
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: ntfy-deployment
|
|
||||||
labels:
|
|
||||||
app: ntfy-deployment
|
|
||||||
spec:
|
|
||||||
revisionHistoryLimit: 1
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: ntfy-pod
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: ntfy-pod
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: ntfy
|
|
||||||
image: binwiederhier/ntfy:v1.28.0 # select version here latest is not the greatest idea !
|
|
||||||
args: ["serve"]
|
|
||||||
env: #example of adjustments made in environmental variables
|
|
||||||
- name: TZ # set timezone
|
|
||||||
value: XXXXXXX
|
|
||||||
- name: NTFY_DEBUG # enable/disable debug
|
|
||||||
value: "false"
|
|
||||||
- name: NTFY_LOG_LEVEL # adjust log level
|
|
||||||
value: INFO
|
|
||||||
- name: NTFY_BASE_URL # add base url
|
|
||||||
value: XXXXXXXXXX
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
name: http-ntfy
|
|
||||||
resources:
|
|
||||||
limits:
|
|
||||||
memory: 300Mi
|
|
||||||
cpu: 200m
|
|
||||||
requests:
|
|
||||||
cpu: 150m
|
|
||||||
memory: 150Mi
|
|
||||||
volumeMounts:
|
|
||||||
- mountPath: /etc/ntfy/server.yml
|
|
||||||
subPath: server.yml
|
|
||||||
name: config-volume # generated vie configMapGenerator from kustomization file
|
|
||||||
- mountPath: /var/cache/ntfy
|
|
||||||
name: cache-volume #cache volume mounted to persistent volume
|
|
||||||
volumes:
|
|
||||||
- name: config-volume
|
|
||||||
configMap: # uses configmap generator to parse server.yml to configmap
|
|
||||||
name: server-config
|
|
||||||
- name: cache-volume
|
|
||||||
persistentVolumeClaim: # stores /cache/ntfy in defined pv
|
|
||||||
claimName: ntfy-pvc
|
|
||||||
```
|
|
||||||
|
|
||||||
### ntfy-pvc.yaml
|
|
||||||
Stores all in cache folder for event of the pod re-deployment
|
|
||||||
```yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: ntfy-pvc
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
storageClassName: local-path # adjust storage if needed
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 1Gi
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### ntfy-svc.yaml
|
|
||||||
Exposes pod to internal network of the cluster
|
|
||||||
```yaml
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: ntfy-svc
|
|
||||||
spec:
|
|
||||||
type: ClusterIP
|
|
||||||
selector:
|
|
||||||
app: ntfy-pod
|
|
||||||
ports:
|
|
||||||
- name: http-ntfy-out
|
|
||||||
protocol: TCP
|
|
||||||
port: 80
|
|
||||||
targetPort: http-ntfy
|
|
||||||
```
|
|
||||||
|
|
||||||
### ntfy-ingress.yaml
|
|
||||||
If cluster uses Ingress controller you have to deploy ingress to access application externally. It will not have TLS/SSL enabled so you have to deploy cert-manager and generate CA cert along certificate for service
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
apiVersion: networking.k8s.io/v1
|
|
||||||
kind: Ingress
|
|
||||||
metadata:
|
|
||||||
name: ntfy-ingress
|
|
||||||
spec:
|
|
||||||
rules:
|
|
||||||
- host: ntfy.test #select own
|
|
||||||
http:
|
|
||||||
paths:
|
|
||||||
- path: /
|
|
||||||
pathType: Prefix
|
|
||||||
backend:
|
|
||||||
service:
|
|
||||||
name: ntfy-svc
|
|
||||||
port:
|
|
||||||
number: 80
|
|
||||||
```
|
|
||||||
|
|
||||||
### server.yml
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
cache-file: "/var/cache/ntfy/cache.db"
|
|
||||||
attachment-cache-dir: "/var/cache/ntfy/attachments"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Deploying from kustomization
|
|
||||||
Go one level up from folder where all resources were created and apply configuration
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl apply -k /nfty
|
kubectl apply -k /ntfy
|
||||||
```
|
```
|
||||||
|
|
||||||
|
=== "kustomization.yaml"
|
||||||
|
```yaml
|
||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- ntfy-deployment.yaml # deployment definition
|
||||||
|
- ntfy-svc.yaml # service connecting pods to cluster network
|
||||||
|
- ntfy-pvc.yaml # pvc used to store cache and attachment
|
||||||
|
- ntfy-ingress.yaml # ingress definition
|
||||||
|
configMapGenerator: # will parse config from raw config to configmap,it allows for dynamic reload of application if additional app is deployed ie https://github.com/stakater/Reloader
|
||||||
|
- name: server-config
|
||||||
|
files:
|
||||||
|
- server.yml
|
||||||
|
namespace: TESTNAMESPACE # select namespace for whole application
|
||||||
|
```
|
||||||
|
=== "ntfy-deployment.yaml"
|
||||||
|
```yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: ntfy-deployment
|
||||||
|
labels:
|
||||||
|
app: ntfy-deployment
|
||||||
|
spec:
|
||||||
|
revisionHistoryLimit: 1
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: ntfy-pod
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: ntfy-pod
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: ntfy
|
||||||
|
image: binwiederhier/ntfy:v1.28.0 # set deployed version
|
||||||
|
args: ["serve"]
|
||||||
|
env: #example of adjustments made in environmental variables
|
||||||
|
- name: TZ # set timezone
|
||||||
|
value: XXXXXXX
|
||||||
|
- name: NTFY_DEBUG # enable/disable debug
|
||||||
|
value: "false"
|
||||||
|
- name: NTFY_LOG_LEVEL # adjust log level
|
||||||
|
value: INFO
|
||||||
|
- name: NTFY_BASE_URL # add base url
|
||||||
|
value: XXXXXXXXXX
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
name: http-ntfy
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 300Mi
|
||||||
|
cpu: 200m
|
||||||
|
requests:
|
||||||
|
cpu: 150m
|
||||||
|
memory: 150Mi
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /etc/ntfy/server.yml
|
||||||
|
subPath: server.yml
|
||||||
|
name: config-volume # generated vie configMapGenerator from kustomization file
|
||||||
|
- mountPath: /var/cache/ntfy
|
||||||
|
name: cache-volume #cache volume mounted to persistent volume
|
||||||
|
volumes:
|
||||||
|
- name: config-volume
|
||||||
|
configMap: # uses configmap generator to parse server.yml to configmap
|
||||||
|
name: server-config
|
||||||
|
- name: cache-volume
|
||||||
|
persistentVolumeClaim: # stores /cache/ntfy in defined pv
|
||||||
|
claimName: ntfy-pvc
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "ntfy-pvc.yaml"
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: ntfy-pvc
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
storageClassName: local-path # adjust storage if needed
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "ntfy-svc.yaml"
|
||||||
|
```yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: ntfy-svc
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
selector:
|
||||||
|
app: ntfy-pod
|
||||||
|
ports:
|
||||||
|
- name: http-ntfy-out
|
||||||
|
protocol: TCP
|
||||||
|
port: 80
|
||||||
|
targetPort: http-ntfy
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "ntfy-ingress.yaml"
|
||||||
|
```yaml
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: ntfy-ingress
|
||||||
|
spec:
|
||||||
|
rules:
|
||||||
|
- host: ntfy.test #select own
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: Prefix
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: ntfy-svc
|
||||||
|
port:
|
||||||
|
number: 80
|
||||||
|
```
|
||||||
|
|
||||||
|
=== "server.yml"
|
||||||
|
```yaml
|
||||||
|
cache-file: "/var/cache/ntfy/cache.db"
|
||||||
|
attachment-cache-dir: "/var/cache/ntfy/attachments"
|
||||||
|
```
|
Loading…
Reference in a new issue