diff --git a/Installation Manual.docx b/Installation Manual.docx index 08e89e1eb34dc5cbcee9e4059cf476c50ae5a61d..d4c5402d07f55da025a78cdc1c0fea8e0a2e4bd5 100644 Binary files a/Installation Manual.docx and b/Installation Manual.docx differ diff --git a/Installation Manual.pdf b/Installation Manual.pdf index 50ea9f47caae84536f388930a2b0dc915d0a2c13..6ed512bbcc5974a4716d484865f3478644e142c3 100644 Binary files a/Installation Manual.pdf and b/Installation Manual.pdf differ diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 9c9bb51ba6e3a67572b6dc5ce90f88892f707cf9..911d7fce3f9f19bd582c6d3b31623820ef7f3b90 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -20,7 +20,6 @@ services: - ./backup/warehouse:/backup/files - ./db/warehouse:/var/lib/mongodb - ./logs/warehouse/mongodb:/var/log/mongodb - - ./logs/warehouse:/logs restart: always slurpit-scraper: @@ -36,8 +35,6 @@ services: SCRAPER_TIMEOUT: 20 SCRAPER_POOLSIZE: 4 SCRAPER_WAREHOUSE_URL: http://slurpit-warehouse - volumes: - - ./logs/scraper:/logs restart: always slurpit-scanner: @@ -53,8 +50,6 @@ services: SCANNER_POOLSIZE: 4 SCANNER_TIMEOUT: 10 SCANNER_WAREHOUSE_URL: http://slurpit-warehouse - volumes: - - ./logs/scanner:/logs restart: always slurpit-portal: diff --git a/docker-compose.yml b/docker-compose.yml index e0d2771d0e622b29ec622b4c4b30ee8baa28c53c..a39f1e378e7f7dd21b00d51eb2c3b5a9ee88bea1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -20,7 +20,6 @@ services: - ./backup/warehouse:/backup/files - ./db/warehouse:/var/lib/mongodb - ./logs/warehouse/mongodb:/var/log/mongodb - - ./logs/warehouse:/logs restart: always slurpit-scraper: @@ -36,8 +35,6 @@ services: SCRAPER_TIMEOUT: 20 SCRAPER_POOLSIZE: 4 SCRAPER_WAREHOUSE_URL: http://slurpit-warehouse - volumes: - - ./logs/scraper:/logs restart: always slurpit-scanner: @@ -53,8 +50,6 @@ services: SCANNER_POOLSIZE: 4 SCANNER_TIMEOUT: 10 SCANNER_WAREHOUSE_URL: http://slurpit-warehouse - volumes: - - ./logs/scanner:/logs restart: always slurpit-portal: diff --git a/k8s-manifests/README.md b/k8s-manifests/README.md new file mode 100644 index 0000000000000000000000000000000000000000..ae6a65f2cec88172c86cd90650801e560cec41d1 --- /dev/null +++ b/k8s-manifests/README.md @@ -0,0 +1,9 @@ +# Storage +In the example the volumes are stored in C:\k8s-data + +# Basic commands +kubectl apply -f . +kubectl delete -f . + +kubectl get pods +kubectl describe pod slurpit-warehouse diff --git a/k8s-manifests/slurpit-claim.yaml b/k8s-manifests/slurpit-claim.yaml new file mode 100644 index 0000000000000000000000000000000000000000..50de72132ed3b76246005df4d27b1c42507adbb2 --- /dev/null +++ b/k8s-manifests/slurpit-claim.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: slurpit-pv +spec: + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + storageClassName: manual + hostPath: + path: "/run/desktop/mnt/host/c/k8s-data/" + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: slurpit-pvc +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: manual \ No newline at end of file diff --git a/k8s-manifests/slurpit-portal-deployment.yaml b/k8s-manifests/slurpit-portal-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..bd290605c82e9a5e61217cf7098ca6b1de428106 --- /dev/null +++ b/k8s-manifests/slurpit-portal-deployment.yaml @@ -0,0 +1,70 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: slurpit-portal + labels: + app: slurpit-portal-app +spec: + replicas: 1 + selector: + matchLabels: + app: slurpit-portal-app + strategy: + type: Recreate + template: + metadata: + labels: + app: slurpit-portal-app + spec: + containers: + - image: slurpit/portal:latest + name: slurpit-portal + env: + - name: PORTAL_BASE_URL + value: http://localhost:30000 + - name: PORTAL_WAREHOUSE_URL + value: http://slurpit-warehouse-service + - name: TZ + value: Europe/Amsterdam + ports: + - containerPort: 80 + volumeMounts: + - name: slurpit-portal-storage + mountPath: /var/log/nginx + subPath: logs/portal/nginx + - name: slurpit-portal-storage + mountPath: /var/log/mysql + subPath: logs/portal/mysql + - name: slurpit-portal-storage + mountPath: /var/log/php + subPath: logs/portal/php + - name: slurpit-portal-storage + mountPath: /etc/nginx/certs + subPath: certs + - name: slurpit-portal-storage + mountPath: /var/lib/mysql + subPath: database/portal + - name: slurpit-portal-storage + mountPath: /backup/files + subPath: backup/portal + volumes: + - name: slurpit-portal-storage + persistentVolumeClaim: + claimName: slurpit-pvc + restartPolicy: Always + +--- +apiVersion: v1 +kind: Service +metadata: + name: slurpit-portal-service +spec: + type: NodePort + selector: + app: slurpit-portal-app + ports: + - protocol: TCP + port: 80 + targetPort: 80 + nodePort: 30000 + \ No newline at end of file diff --git a/k8s-manifests/slurpit-scanner-deployment.yaml b/k8s-manifests/slurpit-scanner-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cb5698fde51bc3ada1a0a5e3c84354617039bb3d --- /dev/null +++ b/k8s-manifests/slurpit-scanner-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: slurpit-scanner + labels: + app: slurpit-scanner-app +spec: + replicas: 1 + selector: + matchLabels: + app: slurpit-scanner-app + strategy: + type: Recreate + template: + metadata: + labels: + app: slurpit-scanner-app + spec: + containers: + - image: slurpit/scanner:latest + name: slurpit-scanner + env: + - name: SCANNER_POOLSIZE + value: "4" + - name: SCANNER_TIMEOUT + value: "10" + - name: SCANNER_WAREHOUSE_URL + value: http://slurpit-warehouse-service + - name: TZ + value: Europe/Amsterdam + restartPolicy: Always + + \ No newline at end of file diff --git a/k8s-manifests/slurpit-scraper-deployment.yaml b/k8s-manifests/slurpit-scraper-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..089bb6f94918fd20576c8ee64b191cdfa1f3cbdc --- /dev/null +++ b/k8s-manifests/slurpit-scraper-deployment.yaml @@ -0,0 +1,41 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: slurpit-scraper + labels: + app: slurpit-scraper-app +spec: + replicas: 1 + selector: + matchLabels: + app: slurpit-scraper-app + strategy: + type: Recreate + template: + metadata: + labels: + app: slurpit-scraper-app + spec: + containers: + - image: slurpit/scraper:latest + name: slurpit-scraper + env: + - name: SCRAPER_POOLSIZE + value: "4" + - name: SCRAPER_TIMEOUT + value: "20" + - name: SCRAPER_WAREHOUSE_URL + value: http://slurpit-warehouse-service + - name: TZ + value: Europe/Amsterdam + volumeMounts: + - name: slurpit-scraper-storage + mountPath: /logs + subPath: logs/scraper + volumes: + - name: slurpit-scraper-storage + persistentVolumeClaim: + claimName: slurpit-pvc + restartPolicy: Always + + \ No newline at end of file diff --git a/k8s-manifests/slurpit-warehouse-deployment.yaml b/k8s-manifests/slurpit-warehouse-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ffa0912c309f631452f64f5dfdb8028dd67192cc --- /dev/null +++ b/k8s-manifests/slurpit-warehouse-deployment.yaml @@ -0,0 +1,70 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: slurpit-warehouse + labels: + app: slurpit-warehouse-app +spec: + replicas: 1 + selector: + matchLabels: + app: slurpit-warehouse-app + strategy: + type: Recreate + template: + metadata: + labels: + app: slurpit-warehouse-app + spec: + containers: + - image: slurpit/warehouse:latest + name: slurpit-warehouse + env: + - name: TZ + value: Europe/Amsterdam + - name: WAREHOUSE_CALLBACK_SCANNER_URL + value: http://slurpit-portal-service/callback/scanner + - name: WAREHOUSE_CALLBACK_SCRAPER_URL + value: http://slurpit-portal-service/callback/scraper + livenessProbe: + exec: + command: + - curl + - -f + - http://localhost/services + failureThreshold: 360 + periodSeconds: 10 + timeoutSeconds: 10 + initialDelaySeconds: 5 + ports: + - containerPort: 80 + volumeMounts: + - name: slurpit-warehouse-storage + mountPath: /var/log/mongodb + subPath: logs/warehouse/mongodb + - name: slurpit-warehouse-storage + mountPath: /var/lib/mongodb + subPath: database/warehouse + - name: slurpit-warehouse-storage + mountPath: /backup/files + subPath: backup/warehouse + volumes: + - name: slurpit-warehouse-storage + persistentVolumeClaim: + claimName: slurpit-pvc + restartPolicy: Always + +--- +apiVersion: v1 +kind: Service +metadata: + name: slurpit-warehouse-service +spec: + type: NodePort + selector: + app: slurpit-warehouse-app + ports: + - protocol: TCP + port: 80 + targetPort: 80 + \ No newline at end of file diff --git a/slurpit/.gitkeep b/slurpit/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/slurpit/.helmignore b/slurpit/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..0e8a0eb36f4ca2c939201c0d54b5d82a1ea34778 --- /dev/null +++ b/slurpit/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/slurpit/Chart.yaml b/slurpit/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c853258a665e72fee781f99949cb1e7ed44825b9 --- /dev/null +++ b/slurpit/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: slurpit +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" diff --git a/slurpit/charts/.gitkeep b/slurpit/charts/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/slurpit/templates/.gitkeep b/slurpit/templates/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/slurpit/templates/_helpers.tpl b/slurpit/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..1920784971c123bb90e90edce73e4db02aeb3efb --- /dev/null +++ b/slurpit/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "slurpit.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "slurpit.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "slurpit.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "slurpit.labels" -}} +helm.sh/chart: {{ include "slurpit.chart" . }} +{{ include "slurpit.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "slurpit.selectorLabels" -}} +app.kubernetes.io/name: {{ include "slurpit.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "slurpit.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "slurpit.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/slurpit/templates/ingress.yaml b/slurpit/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3e8269e2553c51b899fa864624134557f6cb55dc --- /dev/null +++ b/slurpit/templates/ingress.yaml @@ -0,0 +1,69 @@ +{{- if .Values.portal.ingress.enabled -}} +{{- $fullName := include "slurpit.name" . -}} +{{- if and .Values.portal.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.portal.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.portal.ingress.annotations "kubernetes.io/ingress.class" .Values.portal.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "slurpit.labels" . | nindent 4 }} + {{- if or .Values.portal.commonAnnotations .Values.portal.ingress.annotations }} + annotations: + {{- with .Values.portal.ingress.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.portal.commonAnnotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} +spec: + {{- if and .Values.portal.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.portal.ingress.className }} + {{- end }} + {{- if .Values.portal.ingress.tls }} + tls: + {{- range .Values.portal.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.portal.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + {{- if kindIs "string" . }} + - path: {{ . }} + {{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }} + pathType: Prefix + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }}-portal-service + port: + name: http + {{- else }} + serviceName: {{ $fullName }} + servicePort: http + {{- end }} + {{- else }} + - {{ . | toYaml | indent 12 | trim }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/slurpit/templates/portal-deployment.yaml b/slurpit/templates/portal-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..0276c4532717b981ee8b384c31e9ee6e7eb7752d --- /dev/null +++ b/slurpit/templates/portal-deployment.yaml @@ -0,0 +1,44 @@ +{{ if .Values.portal.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "slurpit.name" . }}-portal + namespace: {{ .Release.Namespace }} + labels: + app: {{ include "slurpit.name" . }}-portal-app +spec: + {{- if not .Values.portal.autoscaling.enabled }} + replicas: {{ .Values.portal.replicaCount }} + {{- end }} + selector: + matchLabels: + app: {{ include "slurpit.name" . }}-portal-app + strategy: + type: {{ .Values.portal.strategy }} + template: + metadata: + labels: + app: {{ include "slurpit.name" . }}-portal-app + spec: + containers: + - name: {{ .Chart.Name }}-portal + image: {{ .Values.portal.image.repository }}:{{ .Values.portal.image.tag | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.portal.image.pullPolicy }} + env: + {{- range .Values.portal.env }} + - name: {{ .name }} + value: {{ .value | quote }} + {{- end }} + ports: + - containerPort: {{ .Values.portal.ports.containerPort }} + name: http + {{- with .Values.portal.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: {{ .Chart.Name }}-portal-storage + persistentVolumeClaim: + claimName: {{ .Chart.Name }}-pvc + restartPolicy: {{ .Values.portal.restartPolicy }} +{{ end }} diff --git a/slurpit/templates/portal-service.yaml b/slurpit/templates/portal-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3747b44c1a618157518d72360b56a59b313680ee --- /dev/null +++ b/slurpit/templates/portal-service.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "slurpit.name" . }}-portal-service + namespace: {{ .Release.Namespace }} +spec: + selector: + app: {{ include "slurpit.name" . }}-portal-app + type: {{ .Values.portal.service.type }} + ports: + - protocol: TCP + port: {{ .Values.portal.service.port }} + name: http + targetPort: {{ .Values.portal.ports.containerPort }} + {{- if eq $.Values.portal.service.type "NodePort" }} + nodePort: {{ .Values.portal.service.nodePort }} + {{ end }} diff --git a/slurpit/templates/pvc.yaml b/slurpit/templates/pvc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1d398d09b6c7746935bf78a97d73d7e950af8152 --- /dev/null +++ b/slurpit/templates/pvc.yaml @@ -0,0 +1,24 @@ +{{- if and .Values.global.persistence.enabled (not .Values.global.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ include "slurpit.name" . }}-pvc + namespace: {{ .Release.Namespace }} +{{- with .Values.global.persistence.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +spec: + accessModes: + - {{ .Values.global.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.global.persistence.size | quote }} +{{- if .Values.global.persistence.storageClass }} +{{- if (eq "-" .Values.global.persistence.storageClass) }} + storageClassName: "" +{{- else }} + storageClassName: "{{ .Values.global.persistence.storageClass }}" +{{- end }} +{{- end }} +{{- end }} diff --git a/slurpit/templates/scanner-deployment.yaml b/slurpit/templates/scanner-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ded96736f4b9ef74c18fd80f7e5b0e8a451a7bd6 --- /dev/null +++ b/slurpit/templates/scanner-deployment.yaml @@ -0,0 +1,33 @@ +{{ if .Values.scanner.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "slurpit.name" . }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ include "slurpit.name" . }}-scanner-app +spec: + {{- if not .Values.scanner.autoscaling.enabled }} + replicas: {{ .Values.scanner.replicaCount }} + {{- end }} + selector: + matchLabels: + app: {{ include "slurpit.name" . }}-scanner-app + strategy: + type: {{ .Values.scanner.strategy }} + template: + metadata: + labels: + app: {{ include "slurpit.name" . }}-scanner-app + spec: + containers: + - name: {{ .Chart.Name }}-scanner + image: {{ .Values.scanner.image.repository }}:{{ .Values.scanner.image.tag | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.scanner.image.pullPolicy }} + env: + {{- range .Values.scanner.env }} + - name: {{ .name }} + value: {{ .value | quote }} + {{- end }} + restartPolicy: {{ .Values.scanner.restartPolicy }} +{{ end }} diff --git a/slurpit/templates/scraper-deployment.yaml b/slurpit/templates/scraper-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5a6ef2ac01430e9d9b1f5204f0fb925d9249038a --- /dev/null +++ b/slurpit/templates/scraper-deployment.yaml @@ -0,0 +1,41 @@ +{{ if .Values.scraper.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "slurpit.name" . }}-scraper + namespace: {{ .Release.Namespace }} + labels: + app: {{ include "slurpit.name" . }}-scraper-app +spec: + {{- if not .Values.scraper.autoscaling.enabled }} + replicas: {{ .Values.scraper.replicaCount }} + {{- end }} + selector: + matchLabels: + app: {{ include "slurpit.name" . }}-scraper-app + strategy: + type: {{ .Values.scraper.strategy }} + template: + metadata: + labels: + app: {{ include "slurpit.name" . }}-scraper-app + spec: + containers: + - name: {{ .Chart.Name }}-scraper + image: {{ .Values.scraper.image.repository }}:{{ .Values.scraper.image.tag | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.scraper.image.pullPolicy }} + env: + {{- range .Values.scraper.env }} + - name: {{ .name }} + value: {{ .value | quote }} + {{- end }} + {{- with .Values.scraper.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: {{ .Chart.Name }}-scraper-storage + persistentVolumeClaim: + claimName: {{ .Chart.Name }}-pvc + restartPolicy: {{ .Values.scraper.restartPolicy }} +{{ end }} diff --git a/slurpit/templates/warehouse-deployment.yaml b/slurpit/templates/warehouse-deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..13cc2a5cc64f939c598ecacb48fb3a7b38e97d0f --- /dev/null +++ b/slurpit/templates/warehouse-deployment.yaml @@ -0,0 +1,53 @@ +{{ if .Values.warehouse.enabled }} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "slurpit.name" . }}-warehouse + namespace: {{ .Release.Namespace }} + labels: + app: {{ include "slurpit.name" . }}-warehouse-app +spec: + {{- if not .Values.warehouse.autoscaling.enabled }} + replicas: {{ .Values.warehouse.replicaCount }} + {{- end }} + selector: + matchLabels: + app: {{ include "slurpit.name" . }}-warehouse-app + strategy: + type: {{ .Values.warehouse.strategy }} + template: + metadata: + labels: + app: {{ include "slurpit.name" . }}-warehouse-app + spec: + containers: + - name: {{ .Chart.Name }}-warehouse + image: {{ .Values.warehouse.image.repository }}:{{ .Values.warehouse.image.tag | default .Chart.AppVersion }} + imagePullPolicy: {{ .Values.warehouse.image.pullPolicy }} + env: + {{- range .Values.warehouse.env }} + - name: {{ .name }} + value: {{ .value | quote }} + {{- end }} + livenessProbe: + {{- toYaml .Values.warehouse.livenessProbe | nindent 12 }} + {{- with .Values.warehouse.readinessProbe }} + readinessProbe: + {{- toYaml .Values.warehouse.readinessProbe | nindent 12 }} + {{ end }} + {{- with .Values.warehouse.resources }} + resources: + {{- toYaml .Values.warehouse.resources | nindent 12 }} + {{ end }} + ports: + - containerPort: {{ .Values.warehouse.ports.containerPort }} + {{- with .Values.warehouse.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: {{ .Chart.Name }}-warehouse-storage + persistentVolumeClaim: + claimName: {{ .Chart.Name }}-pvc + restartPolicy: {{ .Values.warehouse.restartPolicy }} +{{ end }} diff --git a/slurpit/templates/warehouse-service.yaml b/slurpit/templates/warehouse-service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..94237179e04082c69b81e7fa7096b0a14132d5cc --- /dev/null +++ b/slurpit/templates/warehouse-service.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "slurpit.name" . }}-warehouse-service + namespace: {{ .Release.Namespace }} +spec: + selector: + app: {{ include "slurpit.name" . }}-warehouse-app + type: {{ .Values.warehouse.service.type }} + ports: + - protocol: TCP + port: {{ .Values.warehouse.service.port }} + name: http + targetPort: {{ .Values.warehouse.ports.containerPort }} diff --git a/slurpit/values.yaml b/slurpit/values.yaml new file mode 100644 index 0000000000000000000000000000000000000000..d7bf1fb9d08f02f481db9e520f7d13ac7dbc31f0 --- /dev/null +++ b/slurpit/values.yaml @@ -0,0 +1,190 @@ +global: + imageRegistry: "" + imagePullSecrets: [] + + persistence: + enabled: true + storageClass: "longhorn" + accessMode: ReadWriteMany + size: 10Gi + annotations: {} + persistentVolumeReclaimPolicy: Retain + # hostPath: + # path: "/run/desktop/mnt/host/c/k8s-data/" + +portal: + enabled: true + autoscaling: + enabled: false + replicaCount: 1 + strategy: Recreate + image: + repository: slurpit/portal + tag: latest + pullPolicy: IfNotPresent + # [ Always, IfNotPresent, Never] + env: + - name: TZ + value: "Europe/Amsterdam" + - name: PORTAL_BASE_URL + value: "http://slurpit.gtc.local" + - name: PORTAL_WAREHOUSE_URL + value: "http://slurpit-warehouse-service" + ports: + containerPort: 80 + volumeMounts: + - name: slurpit-portal-storage + mountPath: /var/log/nginx + subPath: logs/portal/nginx + - name: slurpit-portal-storage + mountPath: /var/log/mysql + subPath: logs/portal/mysql + - name: slurpit-portal-storage + mountPath: /var/log/php + subPath: logs/portal/php + - name: slurpit-portal-storage + mountPath: /etc/nginx/certs + subPath: certs + - name: slurpit-portal-storage + mountPath: /var/lib/mysql + subPath: database/portal + - name: slurpit-portal-storage + mountPath: /backup/files + subPath: backup/portal + volumes: + - name: slurpit-portal-storage + persistentVolumeClaim: + claimName: slurpit-pvc + restartPolicy: Always + + service: + # type: NodePort + type: ClusterIP + port: 80 + name: http + nodePort: 30000 + + ingress: + enabled: true + className: nginx + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: slurpit.gtc.local + paths: + # - path: /* + # backend: + # serviceName: slurpit-portal-service + # servicePort: http + - / + + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +scanner: + enabled: true + autoscaling: + enabled: false + replicaCount: 1 + strategy: Recreate + image: + repository: slurpit/warehouse + tag: latest + pullPolicy: IfNotPresent + # [ Always, IfNotPresent, Never] + env: + - name: TZ + value: "Europe/Amsterdam" + - name: SCANNER_POOLSIZE + value: "4" + - name: SCANNER_TIMEOUT + value: "10" + - name: SCANNER_WAREHOUSE_URL + value: "http://slurpit-warehouse-service" + restartPolicy: Always + +scraper: + enabled: true + autoscaling: + enabled: false + replicaCount: 1 + strategy: Recreate + image: + repository: slurpit/scraper + tag: latest + pullPolicy: IfNotPresent + # [ Always, IfNotPresent, Never] + env: + - name: TZ + value: "Europe/Amsterdam" + - name: SCRAPER_POOLSIZE + value: "4" + - name: SCRAPER_TIMEOUT + value: "20" + - name: SCRAPER_WAREHOUSE_URL + value: "http://slurpit-warehouse-service" + volumeMounts: + - name: slurpit-scraper-storage + mountPath: /logs + subPath: logs/scraper + volumes: + - name: slurpit-scraper-storage + persistentVolumeClaim: + claimName: slurpit-pvc + restartPolicy: Always + +warehouse: + enabled: true + autoscaling: + enabled: false + replicaCount: 1 + strategy: Recreate + image: + repository: slurpit/warehouse + tag: latest + pullPolicy: IfNotPresent + # [ Always, IfNotPresent, Never] + env: + - name: TZ + value: "Europe/Amsterdam" + - name: WAREHOUSE_CALLBACK_SCANNER_URL + value: "http://slurpit-portal-service/callback/scanner" + - name: WAREHOUSE_CALLBACK_SCRAPER_URL + value: "http://slurpit-portal-service/callback/scraper" + livenessProbe: + exec: + command: + - curl + - -f + - http://localhost/services + failureThreshold: 360 + periodSeconds: 10 + timeoutSeconds: 10 + initialDelaySeconds: 5 + # readinessProbe: [] + # resources: [] + ports: + containerPort: 80 + volumeMounts: + - name: slurpit-warehouse-storage + mountPath: /var/log/mongodb + subPath: logs/warehouse/mongodb + - name: slurpit-warehouse-storage + mountPath: /var/lib/mongodb + subPath: database/warehouse + - name: slurpit-warehouse-storage + mountPath: /backup/files + subPath: backup/warehouse + # volumes: + # - name: slurpit-warehouse-storage + # persistentVolumeClaim: + # claimName: slurpit-pvc + restartPolicy: Always + + service: + type: ClusterIP + port: 80 + name: http