7 changed files with 154 additions and 0 deletions
			
			
		| @ -0,0 +1,32 @@ | |||||
|  | # Uptime-Kuma K8s Deployment | ||||
|  | 
 | ||||
|  | ⚠ Warning: K8s deployment is provided by contributors. I have no experience with K8s and I can't fix error in the future. I only test Docker and Node.js. Use at your own risk. | ||||
|  | 
 | ||||
|  | ## How does it work? | ||||
|  | 
 | ||||
|  | Kustomize is a tool which builds a complete deployment file for all config elements. | ||||
|  | You can edit the files in the ```uptime-kuma``` folder except the ```kustomization.yml``` until you know what you're doing. | ||||
|  | If you want to choose another namespace you can edit the ```kustomization.yml``` in the ```kubernetes```-Folder and change the ```namespace: uptime-kuma``` to something you like. | ||||
|  | 
 | ||||
|  | It creates a certificate with the specified Issuer and creates the Ingress for the Uptime-Kuma ClusterIP-Service. | ||||
|  | 
 | ||||
|  | ## What do I have to edit? | ||||
|  | 
 | ||||
|  | You have to edit the ```ingressroute.yml``` to your needs. | ||||
|  | This ingressroute.yml is for the [nginx-ingress-controller](https://kubernetes.github.io/ingress-nginx/) in combination with the [cert-manager](https://cert-manager.io/). | ||||
|  | 
 | ||||
|  | - Host | ||||
|  | - Secrets and secret names | ||||
|  | - (Cluster)Issuer (optional) | ||||
|  | - The Version in the Deployment-File | ||||
|  |   - Update: | ||||
|  |     - Change to newer version and run the above commands, it will update the pods one after another | ||||
|  | 
 | ||||
|  | ## How To use | ||||
|  | 
 | ||||
|  | - Install [kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) | ||||
|  | - Edit files mentioned above to your needs | ||||
|  | - Run ```kustomize build > apply.yml``` | ||||
|  | - Run ```kubectl apply -f apply.yml``` | ||||
|  | 
 | ||||
|  | Now you should see some k8s magic and Uptime-Kuma should be available at the specified address. | ||||
| @ -0,0 +1,10 @@ | |||||
|  | namespace: uptime-kuma | ||||
|  | namePrefix: uptime-kuma- | ||||
|  | 
 | ||||
|  | commonLabels: | ||||
|  |   app: uptime-kuma | ||||
|  | 
 | ||||
|  | bases: | ||||
|  |    - uptime-kuma | ||||
|  | 
 | ||||
|  | 
 | ||||
| @ -0,0 +1,45 @@ | |||||
|  | apiVersion: apps/v1 | ||||
|  | kind: Deployment | ||||
|  | metadata: | ||||
|  |   labels: | ||||
|  |     component: uptime-kuma | ||||
|  |   name: deployment | ||||
|  | spec: | ||||
|  |   selector: | ||||
|  |     matchLabels: | ||||
|  |       component: uptime-kuma | ||||
|  |   replicas: 1 | ||||
|  |   strategy: | ||||
|  |     type: Recreate | ||||
|  | 
 | ||||
|  |   template: | ||||
|  |     metadata: | ||||
|  |       labels: | ||||
|  |         component: uptime-kuma | ||||
|  |     spec: | ||||
|  |       containers: | ||||
|  |         - name: app | ||||
|  |           image: louislam/uptime-kuma:1 | ||||
|  |           ports: | ||||
|  |             - containerPort: 3001 | ||||
|  |           volumeMounts: | ||||
|  |             - mountPath: /app/data | ||||
|  |               name: storage | ||||
|  |           livenessProbe: | ||||
|  |             exec: | ||||
|  |               command: | ||||
|  |                 - node | ||||
|  |                 - extra/healthcheck.js | ||||
|  |             initialDelaySeconds: 180 | ||||
|  |             periodSeconds: 60 | ||||
|  |             timeoutSeconds: 30 | ||||
|  |           readinessProbe: | ||||
|  |             httpGet: | ||||
|  |               path: / | ||||
|  |               port: 3001 | ||||
|  |               scheme: HTTP | ||||
|  | 
 | ||||
|  |       volumes: | ||||
|  |         - name: storage | ||||
|  |           persistentVolumeClaim: | ||||
|  |             claimName: pvc | ||||
| @ -0,0 +1,39 @@ | |||||
|  | apiVersion: networking.k8s.io/v1 | ||||
|  | kind: Ingress | ||||
|  | metadata: | ||||
|  |   annotations: | ||||
|  |     kubernetes.io/ingress.class: nginx | ||||
|  |     cert-manager.io/cluster-issuer: letsencrypt-prod | ||||
|  |     nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" | ||||
|  |     nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" | ||||
|  |     nginx.ingress.kubernetes.io/server-snippets: | | ||||
|  |       location / { | ||||
|  |         proxy_set_header Upgrade $http_upgrade; | ||||
|  |         proxy_http_version 1.1; | ||||
|  |         proxy_set_header X-Forwarded-Host $http_host; | ||||
|  |         proxy_set_header X-Forwarded-Proto $scheme; | ||||
|  |         proxy_set_header X-Forwarded-For $remote_addr; | ||||
|  |         proxy_set_header Host $host; | ||||
|  |         proxy_set_header Connection "upgrade"; | ||||
|  |         proxy_set_header X-Real-IP $remote_addr; | ||||
|  |         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||||
|  |         proxy_set_header   Upgrade $http_upgrade; | ||||
|  |         proxy_cache_bypass $http_upgrade; | ||||
|  |         } | ||||
|  |   name: ingress | ||||
|  | spec: | ||||
|  |   tls: | ||||
|  |   - hosts: | ||||
|  |     - example.com | ||||
|  |     secretName: example-com-tls | ||||
|  |   rules: | ||||
|  |   - host: example.com | ||||
|  |     http: | ||||
|  |       paths: | ||||
|  |       - path: / | ||||
|  |         pathType: Prefix | ||||
|  |         backend: | ||||
|  |           service: | ||||
|  |             name: service | ||||
|  |             port: | ||||
|  |               number: 3001 | ||||
| @ -0,0 +1,5 @@ | |||||
|  | resources: | ||||
|  |   - deployment.yml | ||||
|  |   - service.yml | ||||
|  |   - ingressroute.yml | ||||
|  |   - pvc.yml | ||||
| @ -0,0 +1,10 @@ | |||||
|  | apiVersion: v1 | ||||
|  | kind: PersistentVolumeClaim | ||||
|  | metadata: | ||||
|  |   name: pvc | ||||
|  | spec: | ||||
|  |   accessModes: | ||||
|  |     - ReadWriteOnce | ||||
|  |   resources: | ||||
|  |     requests: | ||||
|  |       storage: 4Gi | ||||
| @ -0,0 +1,13 @@ | |||||
|  | apiVersion: v1 | ||||
|  | kind: Service | ||||
|  | metadata:   | ||||
|  |   name: service | ||||
|  | spec: | ||||
|  |   selector:     | ||||
|  |     component: uptime-kuma | ||||
|  |   type: ClusterIP | ||||
|  |   ports:   | ||||
|  |   - name: http | ||||
|  |     port: 3001 | ||||
|  |     targetPort: 3001 | ||||
|  |     protocol: TCP | ||||
					Loading…
					
					
				
		Reference in new issue