1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/asciibinder-template.yml
Vikram Goyal d3e3233ae9 Initial Commit
2018-05-29 11:28:00 +10:00

480 lines
14 KiB
YAML

---
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"
template.openshift.io/long-description: "This template defines resources needed to develop an AsciiBinder application, including a build configuration and application deployment configuration."
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}"