re-format and cleanup

This commit is contained in:
Maciek 2022-11-05 15:42:56 +01:00
parent 2fb7523d06
commit 0234041e1e

View file

@ -439,49 +439,50 @@ 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
4. Replace **TESTNAMESPACE** within kustomization.yaml with designated namespace
5. Replace **ntfy.test** within ntfy-ingress.yaml with desired DNS name
6. Apply configuration to cluster set in current context:
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 ```bash
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 - name: server-config
files: files:
- server.yml - server.yml
namespace: TESTNAMESPACE # select namespace for whole application
namespace: TESTNAMESPACE # select namaespace for whole application ```
=== "ntfy-deployment.yaml"
---- ```yaml
apiVersion: apps/v1
apiVersion: kustomize.config.k8s.io/v1beta1 #local resources kind: Deployment
kind: Kustomization metadata:
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 name: ntfy-deployment
labels: labels:
app: ntfy-deployment app: ntfy-deployment
spec: spec:
revisionHistoryLimit: 1 revisionHistoryLimit: 1
replicas: 1 replicas: 1
selector: selector:
@ -494,7 +495,7 @@ spec:
spec: spec:
containers: containers:
- name: ntfy - name: ntfy
image: binwiederhier/ntfy:v1.28.0 # select version here latest is not the greatest idea ! image: binwiederhier/ntfy:v1.28.0 # set deployed version
args: ["serve"] args: ["serve"]
env: #example of adjustments made in environmental variables env: #example of adjustments made in environmental variables
- name: TZ # set timezone - name: TZ # set timezone
@ -528,33 +529,30 @@ spec:
- name: cache-volume - name: cache-volume
persistentVolumeClaim: # stores /cache/ntfy in defined pv persistentVolumeClaim: # stores /cache/ntfy in defined pv
claimName: ntfy-pvc claimName: ntfy-pvc
``` ```
### ntfy-pvc.yaml === "ntfy-pvc.yaml"
Stores all in cache folder for event of the pod re-deployment ```yaml
```yaml apiVersion: v1
apiVersion: v1 kind: PersistentVolumeClaim
kind: PersistentVolumeClaim metadata:
metadata:
name: ntfy-pvc name: ntfy-pvc
spec: spec:
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
storageClassName: local-path # adjust storage if needed storageClassName: local-path # adjust storage if needed
resources: resources:
requests: requests:
storage: 1Gi storage: 1Gi
```
``` === "ntfy-svc.yaml"
```yaml
### ntfy-svc.yaml apiVersion: v1
Exposes pod to internal network of the cluster kind: Service
```yaml metadata:
apiVersion: v1
kind: Service
metadata:
name: ntfy-svc name: ntfy-svc
spec: spec:
type: ClusterIP type: ClusterIP
selector: selector:
app: ntfy-pod app: ntfy-pod
@ -563,17 +561,15 @@ spec:
protocol: TCP protocol: TCP
port: 80 port: 80
targetPort: http-ntfy targetPort: http-ntfy
``` ```
### ntfy-ingress.yaml === "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
```yaml kind: Ingress
apiVersion: networking.k8s.io/v1 metadata:
kind: Ingress
metadata:
name: ntfy-ingress name: ntfy-ingress
spec: spec:
rules: rules:
- host: ntfy.test #select own - host: ntfy.test #select own
http: http:
@ -585,18 +581,10 @@ spec:
name: ntfy-svc name: ntfy-svc
port: port:
number: 80 number: 80
``` ```
### server.yml === "server.yml"
```yaml
```yaml cache-file: "/var/cache/ntfy/cache.db"
cache-file: "/var/cache/ntfy/cache.db" attachment-cache-dir: "/var/cache/ntfy/attachments"
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
kubectl apply -k /nfty
```