From 0caad1cc2ddd16ef41a7fe870640207d69e21046 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Fri, 23 Feb 2018 18:49:34 +0100 Subject: ADEI cron jobs --- setup/projects/adei/templates/60-adei.yml.j2 | 202 +++++++++++++++++---------- setup/projects/adei/vars/globals.yml | 38 ++++- 2 files changed, 161 insertions(+), 79 deletions(-) diff --git a/setup/projects/adei/templates/60-adei.yml.j2 b/setup/projects/adei/templates/60-adei.yml.j2 index 991fc8d..88bfa89 100644 --- a/setup/projects/adei/templates/60-adei.yml.j2 +++ b/setup/projects/adei/templates/60-adei.yml.j2 @@ -13,6 +13,21 @@ labels: objects: {% for name, cfg in adei_frontends.iteritems() %} {% if (cfg.enabled | default(true)) %} +{% if (cfg.cron is defined) %} +{% set pod_type = "cron" %} +{% set pull_policy = "IfNotPresent" %} +{% set restart_policy = "OnFailure" %} +{# set restart_policy = "Never" #} +{% elif (cfg.node is defined) %} +{% set pod_type = "frontend" %} +{% set pull_policy = "Always" %} +{% set restart_policy = "Always" %} +{% else %} +{% set pod_type = "cacher" %} +{% set pull_policy = "Always" %} +{% set restart_policy = "Always" %} +{% endif %} +{% if (cfg.node is defined) %} - apiVersion: v1 kind: Service metadata: @@ -38,90 +53,118 @@ objects: tls: termination: edge insecureEdgeTerminationPolicy: Allow +{% endif %} +{% if (cfg.cron is defined) %} + - apiVersion: batch/v2alpha1 + kind: CronJob + metadata: + name: "{{ cfg.name }}" + spec: + schedule: "{{ cfg.cron }}" + concurrencyPolicy: "Forbid" + jobTemplate: + spec: + completions: "1" + activeDeadlineSeconds: "3600" +# restartPolicy: "Never" + template: + metadata: + annotations: + alpha.image.policy.openshift.io/resolve-names: "*" +{% else %} - apiVersion: v1 kind: DeploymentConfig metadata: name: "{{ cfg.name }}" spec: - replicas: "{{ cfg.replicas }}" - revisionHistoryLimit: 2 - selector: - name: "{{ cfg.name }}" - strategy: - type: Rolling - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - from: - kind: "ImageStreamTag" - name: "adei:latest" - containerNames: - - "{{ cfg.name }}" - template: - metadata: - name: "{{ cfg.name }}" - labels: - type: "adei" - name: "{{ cfg.name }}" - adei-type: "{{ name }}" - adei-setup: "${setup}" - spec: - volumes: {{ cfg.vols | to_json }} -{% if (cfg.groups is defined) or (cfg.run_as is defined) %} - securityContext: -{% if (cfg.run_as is defined) %} -{% if (kaas_project_config.uids | default(kaas_openshift_uids))[cfg.run_as] is defined %} - - {{ (kaas_project_config.uids | default(kaas_openshift_uids))[cfg.run_as].id }} -{% else %} - - {{ cfg.run_as }} -{% endif %} -{% endif %} + replicas: "{{ cfg.replicas }}" + revisionHistoryLimit: 2 + selector: + name: "{{ cfg.name }}" + strategy: + type: Rolling + triggers: + - type: ConfigChange + - type: ImageChange + imageChangeParams: + automatic: true + from: + kind: "ImageStreamTag" + name: "adei:latest" + containerNames: + - "{{ cfg.name }}" + template: + metadata: +{% endif %} + name: "{{ cfg.name }}" + labels: + app: "adei" + name: "{{ cfg.name }}" + adei-type: "{{ pod_type }}" + adei-name: "{{ name }}" + adei-setup: "${setup}" + spec: + restartPolicy: {{ restart_policy }} + volumes: {{ cfg.vols | to_json }} +{% if (cfg.groups is defined) or (cfg.run_as is defined) %} + securityContext: +{% if (cfg.run_as is defined) %} +{% if (kaas_project_config.uids | default(kaas_openshift_uids))[cfg.run_as] is defined %} + - {{ (kaas_project_config.uids | default(kaas_openshift_uids))[cfg.run_as].id }} +{% else %} + - {{ cfg.run_as }} +{% endif %} +{% endif %} {% if (cfg.groups is defined) %} - supplementalGroups: -{% for group in cfg.groups %} -{% if (kaas_project_config.gids | default(kaas_openshift_gids))[group] is defined %} - - {{ (kaas_project_config.gids | default(kaas_openshift_gids))[group].id }} -{% else %} - - {{ group }} -{% endif %} -{% endfor %} + supplementalGroups: +{% for group in cfg.groups %} +{% if (kaas_project_config.gids | default(kaas_openshift_gids))[group] is defined %} + - {{ (kaas_project_config.gids | default(kaas_openshift_gids))[group].id }} +{% else %} + - {{ group }} +{% endif %} +{% endfor %} +{% endif %} {% endif %} -{% endif %} - containers: - - name: "{{ cfg.name }}" - image: adei - imagePullPolicy: Always - command: - - /opt/scripts/run-apache.sh - ports: - - containerPort: 8080 - env: {{ cfg.env | to_json }} - volumeMounts: {{ cfg.mounts | to_json }} - livenessProbe: - timeoutSeconds: 1 - periodSeconds: 300 - initialDelaySeconds: 300 - httpGet: - path: /adei/probe.php - port: 8080 - readinessProbe: - timeoutSeconds: 1 - periodSeconds: 10 - initialDelaySeconds: 10 - httpGet: - path: /adei/probe.php - port: 8080 - lifecycle: -{% if (cfg.configure | default(false)) %} - postStart: - exec: + containers: + - name: "{{ cfg.name }}" + image: adei + imagePullPolicy: {{ pull_policy }} +{% if (cfg.node is defined) %} command: - - /docker-entrypoint.sh - - /opt/scripts/adei-branch.sh -{% endif %} + - /opt/scripts/run-apache.sh + ports: + - containerPort: 8080 +{% else %} + command: {{ cfg.cmd | to_json }} {% endif %} + env: {{ cfg.env | to_json }} + volumeMounts: {{ cfg.mounts | to_json }} +{% if (cfg.node is defined) %} + livenessProbe: + timeoutSeconds: 1 + periodSeconds: 300 + initialDelaySeconds: 300 + httpGet: + path: /adei/probe.php + port: 8080 + readinessProbe: + timeoutSeconds: 1 + periodSeconds: 10 + initialDelaySeconds: 10 + httpGet: + path: /adei/probe.php + port: 8080 +{% endif %} + lifecycle: +{% if (cfg.configure | default(false)) %} + postStart: + exec: + command: + - /docker-entrypoint.sh + - /opt/scripts/adei-branch.sh +{% endif %} +{% endif %} {% endfor %} parameters: @@ -136,6 +179,15 @@ parameters: description: "Default number of backend caching replicas" - name: apache_servers value: "150" + - name: adei_schedule_cache + value: "*/5 * * * *" + description: "Schedule of caching group updates" + - name: adei_schedule_maintain + value: "*/15 * * * *" + description: "Schedule of maintain tasks" + - name: adei_schedule_clean + value: "9 3 * * *" + description: "Schedule of cleaning tasks" - name: cache_parallel value: "source" description: "Type of caching parallelism: group, source, server" diff --git a/setup/projects/adei/vars/globals.yml b/setup/projects/adei/vars/globals.yml index 9ff9642..60cb212 100644 --- a/setup/projects/adei/vars/globals.yml +++ b/setup/projects/adei/vars/globals.yml @@ -13,8 +13,6 @@ adei_pod_env: value: "adei" - name: "MYSQL_DATABASE" value: "adei" - - name: "APACHE_SERVERS" - value: "${apache_servers}" - name: "ADEI_PORTS" value: "8080" - name: "ADEI_SETUP" @@ -34,6 +32,8 @@ adei_prod_env: value: "${enable_logs}" - name: "ADEI_DEBUG" value: "${enable_debug}" + - name: "APACHE_SERVERS" + value: "${apache_servers}" adei_log_env: - name: "ADEI_RELEASE" @@ -42,6 +42,8 @@ adei_log_env: value: "0" - name: "ADEI_DEBUG" value: "0" + - name: "APACHE_SERVERS" + value: "5" adei_debug_env: - name: "ADEI_RELEASE" @@ -50,11 +52,12 @@ adei_debug_env: value: "0" - name: "ADEI_DEBUG" value: "0" + - name: "APACHE_SERVERS" + value: "5" adei_cron_env: - name: "ADEI_SCHEDULER" - value: "0" - + value: "1" adei_pod_vols: @@ -113,6 +116,33 @@ adei_pod_mounts: #adei_dbg_pod_mounts: "{{ adei_dbg_mounts | union(adei_pod_mounts) }}" adei_frontends: + update: + name: "adei-${setup}-update" + cron: "${adei_schedule_cache}" + cmd: [ "/bin/bash", "/adei/src/scripts/cron/adei.cron.sh" ] + env: "{{ adei_pod_env | union(adei_cron_env) }}" + vols: "{{ adei_pod_vols }}" + mounts: "{{ adei_prod_mounts | union(adei_pod_mounts) }}" + groups: [ "adei" ] + enabled: true + maintain: + name: "adei-${setup}-maintain" + cron: "${adei_schedule_cache}" + cmd: [ "/bin/bash", "/adei/src/scripts/cron/adei_manager.cron.sh" ] + env: "{{ adei_pod_env | union(adei_cron_env) }}" + vols: "{{ adei_pod_vols }}" + mounts: "{{ adei_prod_mounts | union(adei_pod_mounts) }}" + groups: [ "adei" ] + enabled: false + clean: + name: "adei-${setup}-clean" + cron: "${adei_schedule_cache}" + cmd: [ "/bin/bash", "/adei/src/scripts/cron/adei_clean.cron.sh" ] + env: "{{ adei_pod_env | union(adei_cron_env) }}" + vols: "{{ adei_pod_vols }}" + mounts: "{{ adei_prod_mounts | union(adei_pod_mounts) }}" + groups: [ "adei" ] + enabled: false frontend: name: "adei-${setup}" node: "adei-${setup}.{{ adei_domain }}" -- cgit v1.2.1