You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

335 lines
8.7 KiB

---
kind: Template
apiVersion: v1
metadata:
name: edivorce
annotations:
description: An example Django application with a PostgreSQL database
tags: edivorce,python,django,postgresql
iconClass: icon-python
labels:
template: edivorce-environment-template
objects:
- kind: Service
apiVersion: v1
metadata:
name: "${NAME}"
annotations:
description: Exposes and load balances the application pods
spec:
ports:
- name: web
port: 8080
targetPort: 8080
selector:
name: "${NAME}"
- kind: DeploymentConfig
apiVersion: v1
metadata:
name: "${NAME}"
annotations:
description: Defines how to deploy the application server
spec:
strategy:
type: Rolling
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- edivorce-django
from:
kind: ImageStreamTag
namespace: "${APP_IMAGE_NAMESPACE}"
name: "${APP_IMAGE_NAME}:deploy-to-${ENVIRONMENT_TYPE}"
- type: ConfigChange
replicas: 1
selector:
name: "${NAME}"
template:
metadata:
name: "${NAME}"
labels:
name: "${NAME}"
spec:
containers:
- name: edivorce-django
image: " "
ports:
- containerPort: 8080
readinessProbe:
timeoutSeconds: 3
initialDelaySeconds: 3
httpGet:
path: "/health"
port: 8080
livenessProbe:
timeoutSeconds: 3
initialDelaySeconds: 30
httpGet:
path: "/health"
port: 8080
env:
- name: DATABASE_SERVICE_NAME
value: "${DATABASE_SERVICE_NAME}"
- name: DATABASE_ENGINE
value: "${DATABASE_ENGINE}"
- name: DATABASE_NAME
value: "${DATABASE_NAME}"
- name: DATABASE_USER
value: "${DATABASE_USER}"
- name: DATABASE_PASSWORD
value: "${DATABASE_PASSWORD}"
- name: APP_CONFIG
value: "${APP_CONFIG}"
- name: DJANGO_SECRET_KEY
value: "${DJANGO_SECRET_KEY}"
- name: ENVIRONMENT_TYPE
value: "${ENVIRONMENT_TYPE}"
- name: PROXY_NETWORK
value: "${PROXY_NETWORK}"
resources:
limits:
memory: "${MEMORY_LIMIT}"
- kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: "${DATABASE_SERVICE_NAME}"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "${VOLUME_CAPACITY}"
- kind: Service
apiVersion: v1
metadata:
name: "${DATABASE_SERVICE_NAME}"
annotations:
description: Exposes the database server
spec:
ports:
- name: postgresql
port: 5432
targetPort: 5432
selector:
name: "${DATABASE_SERVICE_NAME}"
- kind: DeploymentConfig
apiVersion: v1
metadata:
name: "${DATABASE_SERVICE_NAME}"
annotations:
description: Defines how to deploy the database
spec:
strategy:
type: Recreate
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- postgresql
from:
kind: ImageStreamTag
namespace: "${NAMESPACE}"
name: postgresql:9.5
- type: ConfigChange
replicas: 1
selector:
name: "${DATABASE_SERVICE_NAME}"
template:
metadata:
name: "${DATABASE_SERVICE_NAME}"
labels:
name: "${DATABASE_SERVICE_NAME}"
spec:
volumes:
- name: "${DATABASE_SERVICE_NAME}-data"
persistentVolumeClaim:
claimName: "${DATABASE_SERVICE_NAME}"
containers:
- name: postgresql
image: " "
ports:
- containerPort: 5432
env:
- name: POSTGRESQL_USER
value: "${DATABASE_USER}"
- name: POSTGRESQL_PASSWORD
value: "${DATABASE_PASSWORD}"
- name: POSTGRESQL_DATABASE
value: "${DATABASE_NAME}"
volumeMounts:
- name: "${DATABASE_SERVICE_NAME}-data"
mountPath: "/var/lib/pgsql/data"
readinessProbe:
timeoutSeconds: 1
initialDelaySeconds: 5
exec:
command:
- "/bin/sh"
- "-i"
- "-c"
- psql -h 127.0.0.1 -U ${POSTGRESQL_USER} -q -d ${POSTGRESQL_DATABASE} -c 'SELECT 1'
livenessProbe:
timeoutSeconds: 1
initialDelaySeconds: 30
tcpSocket:
port: 5432
resources:
limits:
memory: "${MEMORY_POSTGRESQL_LIMIT}"
- kind: ImageStream
apiVersion: v1
metadata:
name: weasyprint
labels:
name: weasyprint
spec:
tags:
- name: latest
annotations:
openshift.io/imported-from: aquavitae/weasyprint
from:
kind: DockerImage
name: aquavitae/weasyprint
- kind: Service
apiVersion: v1
metadata:
name: weasyprint
labels:
name: weasyprint
spec:
ports:
- name: 5001-tcp
protocol: TCP
port: 5001
targetPort: 5001
selector:
name: weasyprint
- kind: DeploymentConfig
apiVersion: v1
metadata:
name: weasyprint
labels:
app: weasyprint
annotations:
description: Weasyprint microservice using aquavitae/weasyprint
spec:
strategy:
type: Recreate
triggers:
- type: ImageChange
imageChangeParams:
automatic: true
containerNames:
- weasyprint
from:
kind: ImageStreamTag
namespace: aquavitae
name: 'weasyprint:latest'
replicas: 1
selector:
name: weasyprint
template:
metadata:
name: weasyprint
labels:
name: weasyprint
annotations:
openshift.io/container.weasyprint.image.entrypoint: '["/bin/sh","-c","gunicorn --bind 0.0.0.0:5001 wsgi:app"]'
spec:
containers:
- name: weasyprint
image: 'aquavitae/weasyprint'
ports:
- containerPort: 5001
protocol: TCP
resources:
limits:
cpu: '2'
memory: 1Gi
requests:
cpu: 250m
memory: 512Mi
livenessProbe:
httpGet:
path: /health
port: 5001
scheme: HTTP
initialDelaySeconds: 120
timeoutSeconds: 30
periodSeconds: 60
successThreshold: 1
failureThreshold: 5
parameters:
- name: NAME
displayName: Name
description: The name assigned to all of the frontend objects defined in this template.
required: true
value: edivorce-django
- name: NAMESPACE
displayName: Namespace
required: true
description: The OpenShift Namespace where the ImageStream resides.
value: openshift
- name: MEMORY_LIMIT
displayName: Memory Limit
required: true
description: Maximum amount of memory the Django container can use.
value: 512Mi
- name: MEMORY_POSTGRESQL_LIMIT
displayName: Memory Limit (PostgreSQL)
required: true
description: Maximum amount of memory the PostgreSQL container can use.
value: 512Mi
- name: VOLUME_CAPACITY
displayName: Volume Capacity
description: Volume space available for data, e.g. 512Mi, 2Gi
value: 1Gi
required: true
- name: DATABASE_SERVICE_NAME
displayName: Database Service Name
required: true
value: postgresql
- name: DATABASE_ENGINE
displayName: Database Engine
required: true
description: 'Database engine: postgresql, mysql or sqlite (default).'
value: postgresql
- name: DATABASE_NAME
displayName: Database Name
required: true
value: default
- name: DATABASE_USER
displayName: Database Username
required: true
value: django
- name: DATABASE_PASSWORD
displayName: Database User Password
generate: expression
from: "[a-zA-Z0-9]{16}"
- name: APP_CONFIG
displayName: Application Configuration File Path
value: gunicorn_config.py
description: Relative path to Gunicorn configuration file (optional).
- name: DJANGO_SECRET_KEY
displayName: Django Secret Key
description: Set this to a long random string.
generate: expression
from: "[\\w]{50}"
- name: APP_IMAGE_NAME
displayName: Application image name.
value: edivorce-django
required": true
- name: APP_IMAGE_NAMESPACE
displayName: Namespace containing application images.
value: jag-csb-edivorce-tools
required: true
- name: ENVIRONMENT_TYPE
displayName: Type of environnment (dev,test or prod).
required: true
- name: PROXY_NETWORK
displayName: Network of upstream proxy
value: 0.0.0.0/0
required: true