2018-05-29 11:28:00 +10:00
---
kind : "Template"
apiVersion : "v1"
metadata :
name : "public-asciibinder-website"
annotations :
openshift.io/display-name : "Public AsciiBinder Static Website"
description : "Takes files created for static site generator AsciiBinder (http://asciibinder.org/) from a public source repo, builds them in Ruby, and deploys them in a PHP container."
tags : "ruby,asciibinder"
iconClass : "icon-shadowman"
2019-02-08 16:46:08 -05:00
template.openshift.io/long-description : "This template defines resources needed to develop an AsciiBinder application, including a build configuration and application DeploymentConfig."
2018-05-29 11:28:00 +10:00
template.openshift.io/provider-display-name : "Red Hat, Inc."
message : "The following service(s) have been created in your project: ${NAME}."
labels :
template : "asciibinder-website"
objects :
- kind : "Service"
apiVersion : "v1"
metadata :
name : "commercial-${NAME}"
annotations :
description : "Exposes and load balances the frontend application pods for the commercial deployment"
labels :
app : "${NAME}"
spec :
ports :
- name : "https"
port : 8443
targetPort : 8080
selector :
name : "commercial-${NAME}"
- kind : "Service"
apiVersion : "v1"
metadata :
name : "community-${NAME}"
annotations :
description : "Exposes and load balances the frontend application pods for the community deployment"
labels :
app : "${NAME}"
spec :
ports :
- name : "https"
port : 8443
targetPort : 8080
selector :
name : "community-${NAME}"
- kind : "Route"
apiVersion : "v1"
metadata :
name : "commercial-${NAME}"
labels :
app : "${NAME}"
spec :
host : "${COMMERCIAL_APPLICATION_DOMAIN}"
to :
kind : "Service"
name : "commercial-${NAME}"
weight : 1
port :
targetPort : "https"
tls :
termination : "edge"
insecureEdgeTerminationPolicy : "Redirect"
- kind : "Route"
apiVersion : "v1"
metadata :
name : "community-${NAME}"
labels :
app : "${NAME}"
spec :
host : "${COMMUNITY_APPLICATION_DOMAIN}"
to :
kind : "Service"
name : "community-${NAME}"
weight : 1
port :
targetPort : "https"
tls :
termination : "edge"
insecureEdgeTerminationPolicy : "Redirect"
- kind : "ImageStream"
apiVersion : "v1"
metadata :
name : "stg1-${NAME}"
annotations :
description : "Keeps track of changes in the stg1-${NAME} application image"
labels :
app : "${NAME}"
- kind : "ImageStream"
apiVersion : "v1"
metadata :
name : "final-commercial-${NAME}"
annotations :
description : "Keeps track of changes in the final-commercial-${NAME} application image"
labels :
app : "${NAME}"
- kind : "ImageStream"
apiVersion : "v1"
metadata :
name : "final-community-${NAME}"
annotations :
description : "Keeps track of changes in the final-community-${NAME} application image"
labels :
app : "${NAME}"
- kind : "ImageStream"
apiVersion : "v1"
metadata :
name : "httpd-24-rhel7"
annotations :
description : "Upstream httpd 2.4 s2i image"
labels :
app : "${NAME}"
spec :
lookupPolicy :
local : false
tags :
- annotations : null
from :
kind : "DockerImage"
name : "registry.access.redhat.com/rhscl/httpd-24-rhel7"
generation : 0
importPolicy :
scheduled : true
name : "latest"
referencePolicy :
type : "Source"
- kind : "BuildConfig"
apiVersion : "v1"
metadata :
name : "stg1-${NAME}"
annotations :
description : "Defines how to perform stage 1 build for ${NAME}"
labels :
app : "${NAME}"
spec :
nodeSelector :
source :
type : "Git"
git :
uri : "${SOURCE_REPOSITORY_URL}"
ref : "${SOURCE_REPOSITORY_REF}"
contextDir : "${CONTEXT_DIR}"
strategy :
type : "Source"
sourceStrategy :
from :
kind : "ImageStreamTag"
namespace : "${NAMESPACE}"
name : "ruby:2.3"
output :
to :
kind : "ImageStreamTag"
name : "stg1-${NAME}:latest"
triggers :
- type : "ImageChange"
- type : "ConfigChange"
- type : "GitHub"
github :
secret : "${GITHUB_WEBHOOK_SECRET}"
- kind : "BuildConfig"
apiVersion : "v1"
metadata :
name : "final-commercial-${NAME}"
annotations :
description : "Defines how to perform final commercial build for ${NAME} before deployment"
labels :
app : "${NAME}"
spec :
nodeSelector :
source :
type : "Images"
images :
- from :
kind : "ImageStreamTag"
name : "stg1-${NAME}:latest"
paths :
- sourcePath : "/opt/app-root/src/commercial_package/commercial/."
destinationDir : "."
strategy :
type : "Source"
sourceStrategy :
from :
kind : "ImageStreamTag"
name : "httpd-24-rhel7:latest"
output :
to :
kind : "ImageStreamTag"
name : "final-commercial-${NAME}:latest"
triggers :
- imageChange :
from :
kind : ImageStreamTag
name : 'stg1-${NAME}:latest'
type : "ImageChange"
- type : "ConfigChange"
- kind : "BuildConfig"
apiVersion : "v1"
metadata :
name : "final-community-${NAME}"
annotations :
description : "Defines how to perform final community build for ${NAME} before deployment"
labels :
app : "${NAME}"
spec :
nodeSelector :
source :
type : "Images"
images :
- from :
kind : "ImageStreamTag"
name : "stg1-${NAME}:latest"
paths :
- sourcePath : "/opt/app-root/src/community_package/community/."
destinationDir : "."
strategy :
type : "Source"
sourceStrategy :
from :
kind : "ImageStreamTag"
name : "httpd-24-rhel7:latest"
output :
to :
kind : "ImageStreamTag"
name : "final-community-${NAME}:latest"
triggers :
- imageChange :
from :
kind : ImageStreamTag
name : 'stg1-${NAME}:latest'
type : "ImageChange"
- type : "ConfigChange"
- kind : "DeploymentConfig"
apiVersion : "v1"
metadata :
name : "commercial-${NAME}"
annotations :
description : "Defines how to deploy the ${COMMERCIAL_APPLICATION_DOMAIN} domain"
labels :
app : "${NAME}"
spec :
strategy :
type : "Rolling"
triggers :
- type : "ImageChange"
imageChangeParams :
automatic : true
containerNames :
- "commercial-${NAME}"
from :
kind : "ImageStreamTag"
name : "final-commercial-${NAME}:latest"
- type : "ConfigChange"
replicas : 1
test : false
selector :
name : "commercial-${NAME}"
template :
metadata :
name : "commercial-${NAME}"
labels :
name : "commercial-${NAME}"
app : "${NAME}"
spec :
containers :
- name : "commercial-${NAME}"
ports :
- containerPort : 8080
readinessProbe :
timeoutSeconds : 5
initialDelaySeconds : 10
httpGet :
path : "/${HEALTHCHECK_PATH}"
port : 8080
livenessProbe :
timeoutSeconds : 5
initialDelaySeconds : 10
periodSeconds : 30
httpGet :
path : "/${HEALTHCHECK_PATH}"
port : 8080
resources :
requests :
cpu : "${CPU_REQUEST}"
memory : "${MEMORY_REQUEST}"
limits :
cpu : "${CPU_LIMIT}"
memory : "${MEMORY_LIMIT}"
- kind : "DeploymentConfig"
apiVersion : "v1"
metadata :
name : "community-${NAME}"
annotations :
description : "Defines how to deploy the ${COMMUNITY_APPLICATION_DOMAIN} domain"
labels :
app : "${NAME}"
spec :
strategy :
type : "Rolling"
triggers :
- type : "ImageChange"
imageChangeParams :
automatic : true
containerNames :
- "community-${NAME}"
from :
kind : "ImageStreamTag"
name : "final-community-${NAME}:latest"
- type : "ConfigChange"
replicas : 1
test : false
selector :
name : "community-${NAME}"
template :
metadata :
name : "community-${NAME}"
labels :
name : "community-${NAME}"
app : "${NAME}"
spec :
containers :
- name : "community-${NAME}"
ports :
- containerPort : 8080
readinessProbe :
timeoutSeconds : 5
initialDelaySeconds : 10
httpGet :
path : "/${HEALTHCHECK_PATH}"
port : 8080
livenessProbe :
timeoutSeconds : 5
initialDelaySeconds : 10
periodSeconds : 30
httpGet :
path : "/${HEALTHCHECK_PATH}"
port : 8080
resources :
requests :
cpu : "${CPU_REQUEST}"
memory : "${MEMORY_REQUEST}"
limits :
cpu : "${CPU_LIMIT}"
memory : "${MEMORY_LIMIT}"
- kind : "HorizontalPodAutoscaler"
apiVersion : "extensions/v1beta1"
metadata :
name : "commercial-${NAME}"
labels :
app : "${NAME}"
spec :
scaleRef :
kind : DeploymentConfig
name : "commercial-${NAME}"
apiVersion : "v1"
subresource : "scale"
minReplicas : ${MIN_REPLICAS}
maxReplicas : ${MAX_REPLICAS}
cpuUtilization :
targetPercentage : ${TARGET_PERCENTAGE}
- kind : "HorizontalPodAutoscaler"
apiVersion : "extensions/v1beta1"
metadata :
name : "community-${NAME}"
labels :
app : "${NAME}"
spec :
scaleRef :
kind : DeploymentConfig
name : "community-${NAME}"
apiVersion : "v1"
subresource : "scale"
minReplicas : ${MIN_REPLICAS}
maxReplicas : ${MAX_REPLICAS}
cpuUtilization :
targetPercentage : ${TARGET_PERCENTAGE}
parameters :
- name : "NAME"
displayName : "Application name"
description : "The name assigned to all of the application components defined in this template."
required : true
- name : "COMMERCIAL_APPLICATION_DOMAIN"
displayName : "Commercial Application Hostname"
description : "The exposed hostname that will route to the httpd service for commercial content."
value : ""
- name : "COMMUNITY_APPLICATION_DOMAIN"
displayName : "Community Application Hostname"
description : "The exposed hostname that will route to the httpd service for community content."
value : ""
- name : "HEALTHCHECK_PATH"
displayName : "URI path to a known, working web page."
description : "The URI path to a known, working web page for testing liveness and readiness probes. Exclude leading '/'"
required : true
value : "index.html"
- name : "SOURCE_REPOSITORY_URL"
displayName : "Git Repository URL"
description : "The URL of the repository with your application source code."
required : true
value : "https://github.com/openshift/openshift-docs.git"
- name : "SOURCE_REPOSITORY_REF"
displayName : "Git Reference"
description : "Set this to a branch name, tag or other ref of your repository if you are not using the default branch."
- name : "CONTEXT_DIR"
displayName : "Context Directory"
description : "Set this to the relative path to your project if it is not in the root of your repository."
- name : "CPU_REQUEST"
displayName : "CPU Request"
description : "Requested amount of CPU the httpd container will use."
required : true
value : "200m"
- name : "CPU_LIMIT"
displayName : "CPU Limit"
description : "Maximum amount of CPU the httpd container can use."
required : true
value : "2"
- name : "MEMORY_REQUEST"
displayName : "Memory Request"
description : "Requested amount of memory the httpd container will use."
required : true
value : "1Gi"
- name : "MEMORY_LIMIT"
displayName : "Memory Limit"
description : "Maximum amount of memory the httpd container can use."
required : true
value : "2Gi"
- name : "MIN_REPLICAS"
displayName : "Minimum pod replicas"
description : "The minimum number of replicas to run in autoscaling."
required : true
value : "2"
- name : "MAX_REPLICAS"
displayName : "Maximum pod replicas"
description : "The maximum number of replicas to run in autoscaling."
required : true
value : "10"
- name : "TARGET_PERCENTAGE"
displayName : "Autoscaling target CPU percentage (as an integer)."
description : "The percentage of the requested CPU that each pod should ideally be using."
required : true
value : "80"
- name : "NAMESPACE"
displayName : "Namespace"
description : "The OpenShift Namespace where the Ruby s2i builder ImageStream resides."
required : true
value : "openshift"
- name : "GITHUB_WEBHOOK_SECRET"
displayName : "GitHub Webhook Secret"
description : "A secret string used to configure the GitHub webhook."
generate : "expression"
from : "[a-zA-Z0-9]{40}"