* use metacontroller's decoratorcontroller to create CrawlJob from Job * scheduled job work: - use existing job name for scheduled crawljob - use suspended job, set startTime, completionTime and succeeded status on job when crawljob is done - simplify cronjob template: remove job_image, cron_namespace, using same namespace as crawls, placeholder job image for cronjobs * move storage quota check to crawljob handler: - add 'skipped_quota_reached' as new failed status type - check for storage quota before checking if crawljob can be started, fail if not (check before any pods/pvcs created) * frontend: - show all crawls in crawl workflow, no need to filter by status - add 'skipped_quota_reached' status, show as 'Skipped (Quota Reached)', render same as failed * migration: make release namespace available as DEFAULT_NAMESPACE, delete old cronjobs in DEFAULT_NAMESPACE and recreate in crawlers namespace with new template
110 lines
2.4 KiB
YAML
110 lines
2.4 KiB
YAML
---
|
|
apiVersion: metacontroller.k8s.io/v1alpha1
|
|
kind: CompositeController
|
|
metadata:
|
|
name: crawljobs-operator
|
|
spec:
|
|
generateSelector: false
|
|
resyncPeriodSeconds: {{ .Values.operator_resync_seconds | default 10 }}
|
|
parentResource:
|
|
apiVersion: btrix.cloud/v1
|
|
resource: crawljobs
|
|
childResources:
|
|
- apiVersion: v1
|
|
resource: pods
|
|
updateStrategy:
|
|
method: OnDelete
|
|
|
|
- apiVersion: v1
|
|
resource: persistentvolumeclaims
|
|
updateStrategy:
|
|
method: InPlace
|
|
|
|
hooks:
|
|
sync:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/crawls/sync
|
|
|
|
finalize:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/crawls/finalize
|
|
|
|
customize:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/crawls/customize
|
|
|
|
---
|
|
apiVersion: metacontroller.k8s.io/v1alpha1
|
|
kind: CompositeController
|
|
metadata:
|
|
name: profilejobs-operator
|
|
spec:
|
|
generateSelector: false
|
|
resyncPeriodSeconds: 30
|
|
parentResource:
|
|
apiVersion: btrix.cloud/v1
|
|
resource: profilejobs
|
|
childResources:
|
|
- apiVersion: v1
|
|
resource: pods
|
|
updateStrategy:
|
|
method: InPlace
|
|
|
|
hooks:
|
|
sync:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/profilebrowsers/sync
|
|
|
|
---
|
|
apiVersion: metacontroller.k8s.io/v1alpha1
|
|
kind: DecoratorController
|
|
metadata:
|
|
name: cron-crawljobs-operator
|
|
spec:
|
|
resyncPeriodSeconds: 30
|
|
resources:
|
|
- apiVersion: batch/v1
|
|
resource: jobs
|
|
labelSelector:
|
|
matchLabels:
|
|
role: scheduled-crawljob
|
|
|
|
attachments:
|
|
- apiVersion: btrix.cloud/v1
|
|
resource: crawljobs
|
|
updateStrategy:
|
|
method: InPlace
|
|
|
|
hooks:
|
|
sync:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/cronjob/sync
|
|
|
|
customize:
|
|
webhook:
|
|
service:
|
|
namespace: {{ .Release.Namespace }}
|
|
name: {{ .Values.name }}-backend
|
|
port: {{ .Values.opPort }}
|
|
path: /op/cronjob/customize
|