apiVersion: v1 kind: Template metadata: name: "adei" annotations: openshift.io/display-name: "Advanced Data Extraction Infrastructure" descriptions: "A complete ADEI deployment for a single setup" openshift.io/provider-display-name: "KIT" openshift.io/documentation-url: "http://adei.info" openshift.io/support-url: "http://adei.info" labels: app: "adei" 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: name: "{{ cfg.name }}" spec: selector: name: "{{ cfg.name }}" ports: - name: "80" port: 80 targetPort: 8080 - apiVersion: v1 kind: Route metadata: name: "{{ cfg.name }}" spec: host: "{{ cfg.node }}" to: kind: Service name: "{{ cfg.name }}" port: targetPort: 8080 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" successfulJobsHistoryLimit: "2" failedJobsHistoryLimit: "2" 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: {% endif %} name: "{{ cfg.name }}" labels: 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 %} {% endif %} {% endif %} containers: - name: "{{ cfg.name }}" image: adei imagePullPolicy: {{ pull_policy }} {% if (cfg.node is defined) %} command: - /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: - name: setup value: "autogen" description: "ADEI setup" - name: continuous_caching value: "1" description: "Stop cachers if no work or poll the source continously" - name: enable_logs value: "1" description: "Enable detailed ADEI logging (large volume)" - name: enable_debug value: "0" description: "Include debugging information in ADEI logs (huge volume)" - name: adei_replicas value: "2" description: "Number of frontend replics" - name: apache_servers value: "150" - name: sched_parallel value: "sources" description: "Basic unit of scheduling (servers or sources)" - name: cache_replicas value: "2" description: "Default number of backend caching replicas" - name: cache_parallel value: "sources" description: "Type of caching parallelism by a cacher replica: (sources or groups)" - name: update_schedule value: "*/5 * * * *" description: "Schedule of caching group updates" - name: maintain_schedule value: "*/15 * * * *" description: "Schedule of maintain tasks" - name: clean_schedule value: "9 3 * * *" description: "Schedule of cleaning tasks" - name: "adei_revision" value: "last:1"