1
0
mirror of https://github.com/jcwimer/wrestlingApp synced 2026-03-25 01:14:43 +00:00

Add kubernetes manifests

This commit is contained in:
2019-04-15 14:40:18 -04:00
parent e16e807b54
commit edb8885f00
7 changed files with 304 additions and 241 deletions

View File

@@ -64,8 +64,6 @@ services:
database: database:
caching: caching:
restart: always restart: always
healthcheck:
test: kill -0 1
command: bundle exec bin/delayed_job -n 1 run command: bundle exec bin/delayed_job -n 1 run
memcached: memcached:

View File

@@ -1,16 +1,16 @@
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1
kind: Ingress kind: Ingress
metadata: metadata:
name: wrestlingdev-app-ingress name: wrestlingdev-app-ingress
spec: spec:
rules: rules:
- host: kube.wrestlingdev.com - host: wrestlingdev.jqw43.platform-lab.cloud.cas.org
http: http:
paths: paths:
- path: / - path: /
backend: backend:
serviceName: wrestlingdev-app serviceName: wrestlingdev-app
servicePort: 80 servicePort: 80
tls: tls:
- hosts: - hosts:
- kube.wrestlingdev.com - wrestlingdev.jqw43.platform-lab.cloud.cas.org

View File

@@ -1,66 +1,66 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: wrestlingdev-mysql name: wrestlingdev-mariadb
labels: labels:
app: wrestlingdev app: wrestlingdev
spec: spec:
ports: ports:
- port: 3306 - port: 3306
selector: selector:
app: wrestlingdev app: wrestlingdev
tier: mysql tier: mariadb
clusterIP: None clusterIP: None
--- ---
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: wrestlingdev-mysql-pv-claim name: wrestlingdev-mariadb-pv-claim
labels: labels:
app: wrestlingdev app: wrestlingdev
spec: spec:
storageClassName: standard storageClassName: standard
accessModes: accessModes:
- ReadWriteOnce - ReadWriteOnce
resources: resources:
requests: requests:
storage: 20Gi storage: 20Gi
--- ---
apiVersion: apps/v1beta1 apiVersion: apps/v1beta1
kind: Deployment kind: Deployment
metadata: metadata:
name: wrestlingdev-mysql name: wrestlingdev-mariadb
labels: labels:
app: wrestlingdev app: wrestlingdev
spec: spec:
strategy: strategy:
type: Recreate type: Recreate
template: template:
metadata: metadata:
labels: labels:
app: wrestlingdev app: wrestlingdev
tier: mysql tier: mariadb
spec: spec:
containers: containers:
- image: mysql:5.6 - image: mariadb:10.3
name: mysql name: mariadb
env: env:
- name: MYSQL_ROOT_PASSWORD - name: MYSQL_ROOT_PASSWORD
value: password value: password
ports: ports:
- containerPort: 3306 - containerPort: 3306
name: mysql name: mariadb
volumeMounts: volumeMounts:
- name: wrestlingdev-mysql-persistent-storage - name: wrestlingdev-mariadb-persistent-storage
mountPath: /var/lib/mysql mountPath: /var/lib/mysql
resources: resources:
limits: limits:
cpu: "0.5" cpu: "0.5"
memory: "512Mi" memory: "512Mi"
requests: requests:
memory: "256Mi" memory: "256Mi"
cpu: "0.2" cpu: "0.2"
volumes: volumes:
- name: wrestlingdev-mysql-persistent-storage - name: wrestlingdev-mariadb-persistent-storage
persistentVolumeClaim: persistentVolumeClaim:
claimName: wrestlingdev-mysql-pv-claim claimName: wrestlingdev-mariadb-pv-claim

View File

@@ -1,43 +1,43 @@
apiVersion: v1 apiVersion: v1
kind: Service kind: Service
metadata: metadata:
name: wrestlingdev-memcached name: wrestlingdev-memcached
labels: labels:
app: wrestlingdev app: wrestlingdev
spec: spec:
ports: ports:
- port: 11211 - port: 11211
selector: selector:
app: wrestlingdev app: wrestlingdev
tier: memcached tier: memcached
clusterIP: None clusterIP: None
--- ---
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
name: wrestlingdev-memcached-deployment name: wrestlingdev-memcached-deployment
labels: labels:
app: wrestlingdev app: wrestlingdev
spec: spec:
replicas: 1 replicas: 1
selector: selector:
matchLabels: matchLabels:
app: wrestlingdev app: wrestlingdev
template: template:
metadata: metadata:
labels: labels:
app: wrestlingdev app: wrestlingdev
tier: memcached tier: memcached
spec: spec:
containers: containers:
- name: wrestlingdev-memcached - name: wrestlingdev-memcached
image: memcached image: memcached
ports: ports:
- containerPort: 11211 - containerPort: 11211
resources: resources:
limits: limits:
cpu: "0.2" cpu: "0.2"
memory: "64Mi" memory: "64Mi"
requests: requests:
memory: "64Mi" memory: "64Mi"
cpu: "0.1" cpu: "0.1"

View File

@@ -0,0 +1,177 @@
apiVersion: v1
kind: Service
metadata:
name: wrestlingdev-app
labels:
app: wrestlingdev
spec:
ports:
- port: 80
selector:
app: wrestlingdev
tier: frontend
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrestlingdev-app-deployment
labels:
app: wrestlingdev
spec:
replicas: 1
selector:
matchLabels:
app: wrestlingdev
template:
metadata:
labels:
app: wrestlingdev
tier: frontend
spec:
containers:
- name: wrestlingdev-app
image: jcwimer/wrestlingdev:prod
imagePullPolicy: Always
command: ["bundle"]
args: ["exec", "passenger", "start", "-p", "80", "--max-pool-size", "3","--environment", "production"]
ports:
- containerPort: 80
env:
- name: RAILS_ENV
value: production
- name: WRESTLINGDEV_DB_NAME
value: wrestlingtourney
- name: WRESTLINGDEV_DB_USR
value: root
- name: WRESTLINGDEV_DB_PWD
value: password
- name: WRESTLINGDEV_DB_PORT
value: "3306"
- name: MEMCACHIER_SERVERS
value: wrestlingdev-memcached:11211
- name: WRESTLINGDEV_DB_HOST
value: wrestlingdev-mariadb
- name: WRESTLINGDEV_DEVISE_SECRET_KEY
value: 2f29d49db6704377ba263f7cb9db085b386bcb301c0cd501126a674686ab1a109754071165b08cd72af03cec4642a4dd04361c994462254dd5d85e9594e8b9aa
- name: WRESTLINGDEV_SECRET_KEY_BASE
value: 077cdbef5c2ccf22543fb17a67339f234306b7fa2e1e4463d851c444c10a5611829a2290b253da78339427f131571fac9a42c83d960b2d25ecc10a4a0a7ce1a2
resources:
limits:
cpu: "0.5"
memory: "512Mi"
requests:
memory: "512Mi"
cpu: "0.5"
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 20
periodSeconds: 10
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: wrestlingdev-app-deployment-autoscale
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: wrestlingdev-app-deployment
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 50
# - type: Resource
# resource:
# name: memory
# targetAverageValue: 100Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrestlingdev-worker-deployment
labels:
app: wrestlingdev
spec:
replicas: 1
selector:
matchLabels:
app: wrestlingdev
template:
metadata:
labels:
app: wrestlingdev
tier: worker
spec:
containers:
- name: wrestlingdev-worker
image: jcwimer/wrestlingdev:prod
imagePullPolicy: Always
env:
- name: RAILS_ENV
value: production
- name: WRESTLINGDEV_DB_NAME
value: wrestlingtourney
- name: WRESTLINGDEV_DB_USR
value: root
- name: WRESTLINGDEV_DB_PWD
value: password
- name: WRESTLINGDEV_DB_PORT
value: "3306"
- name: MEMCACHIER_SERVERS
value: wrestlingdev-memcached:11211
- name: WRESTLINGDEV_DB_HOST
value: wrestlingdev-mariadb
- name: WRESTLINGDEV_DEVISE_SECRET_KEY
value: 2f29d49db6704377ba263f7cb9db085b386bcb301c0cd501126a674686ab1a109754071165b08cd72af03cec4642a4dd04361c994462254dd5d85e9594e8b9aa
- name: WRESTLINGDEV_SECRET_KEY_BASE
value: 077cdbef5c2ccf22543fb17a67339f234306b7fa2e1e4463d851c444c10a5611829a2290b253da78339427f131571fac9a42c83d960b2d25ecc10a4a0a7ce1a2
command: ["bundle"]
args: ["exec", "bin/delayed_job", "-n", "1", "run"]
resources:
limits:
cpu: "0.5"
memory: "512Mi"
requests:
memory: "512Mi"
cpu: "0.2"
---
apiVersion: batch/v1
kind: Job
metadata:
name: wrestlingdev-db-create-migrate
spec:
template:
spec:
containers:
- name: wrestlingdev-db-create-migrate
image: jcwimer/wrestlingdev:prod
imagePullPolicy: Always
command: ["/bin/sh","-c"]
args: ["bundle exec rake db:create; bundle exec rake db:migrate"]
env:
- name: RAILS_ENV
value: production
- name: WRESTLINGDEV_DB_NAME
value: wrestlingtourney
- name: WRESTLINGDEV_DB_USR
value: root
- name: WRESTLINGDEV_DB_PWD
value: password
- name: WRESTLINGDEV_DB_PORT
value: "3306"
- name: MEMCACHIER_SERVERS
value: wrestlingdev-memcached:11211
- name: WRESTLINGDEV_DB_HOST
value: wrestlingdev-mariadb
- name: WRESTLINGDEV_DEVISE_SECRET_KEY
value: 2f29d49db6704377ba263f7cb9db085b386bcb301c0cd501126a674686ab1a109754071165b08cd72af03cec4642a4dd04361c994462254dd5d85e9594e8b9aa
- name: WRESTLINGDEV_SECRET_KEY_BASE
value: 077cdbef5c2ccf22543fb17a67339f234306b7fa2e1e4463d851c444c10a5611829a2290b253da78339427f131571fac9a42c83d960b2d25ecc10a4a0a7ce1a2
restartPolicy: OnFailure
backoffLimit: 10

View File

@@ -1,113 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: wrestlingdev-app
labels:
app: wrestlingdev
spec:
ports:
- port: 80
selector:
app: wrestlingdev
tier: frontend
clusterIP: None
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrestlingdev-app-deployment
labels:
app: wrestlingdev
spec:
replicas: 3
selector:
matchLabels:
app: wrestlingdev
template:
metadata:
labels:
app: wrestlingdev
tier: frontend
spec:
containers:
- name: wrestlingdev-app
image: jcwimer/wrestlingdev:prod
imagePullPolicy: Always
ports:
- containerPort: 80
env:
- name: RAILS_ENV
value: production
- name: WRESTLINGDEV_DB_NAME
value: wrestlingtourneyprod
- name: WRESTLINGDEV_DB_USR
value: root
- name: WRESTLINGDEV_DB_PWD
value: password
- name: WRESTLINGDEV_DB_PORT
value: "3306"
- name: MEMCACHIER_SERVERS
value: wrestlingdev-memcached:11211
- name: WRESTLINGDEV_DB_HOST
value: wrestlingdev-mysql
- name: WRESTLINGDEV_DEVISE_SECRET_KEY
value: 2f29d49db6704377ba263f7cb9db085b386bcb301c0cd501126a674686ab1a109754071165b08cd72af03cec4642a4dd04361c994462254dd5d85e9594e8b9aa
- name: WRESTLINGDEV_SECRET_KEY_BASE
value: 077cdbef5c2ccf22543fb17a67339f234306b7fa2e1e4463d851c444c10a5611829a2290b253da78339427f131571fac9a42c83d960b2d25ecc10a4a0a7ce1a2
resources:
limits:
cpu: "0.5"
memory: "512Mi"
requests:
memory: "512Mi"
cpu: "0.2"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wrestlingdev-worker-deployment
labels:
app: wrestlingdev
spec:
replicas: 1
selector:
matchLabels:
app: wrestlingdev
template:
metadata:
labels:
app: wrestlingdev
tier: worker
spec:
containers:
- name: wrestlingdev-worker
image: jcwimer/wrestlingdev:prod
imagePullPolicy: Always
env:
- name: RAILS_ENV
value: production
- name: WRESTLINGDEV_DB_NAME
value: wrestlingtourneyprod
- name: WRESTLINGDEV_DB_USR
value: root
- name: WRESTLINGDEV_DB_PWD
value: password
- name: WRESTLINGDEV_DB_PORT
value: "3306"
- name: MEMCACHIER_SERVERS
value: wrestlingdev-memcached:11211
- name: WRESTDEV_DB_HOST
value: wrestlingdev-mysql
- name: WRESTLINGDEV_DEVISE_SECRET_KEY
value: 2f29d49db6704377ba263f7cb9db085b386bcb301c0cd501126a674686ab1a109754071165b08cd72af03cec4642a4dd04361c994462254dd5d85e9594e8b9aa
- name: WRESTLINGDEV_SECRET_KEY_BASE
value: 077cdbef5c2ccf22543fb17a67339f234306b7fa2e1e4463d851c444c10a5611829a2290b253da78339427f131571fac9a42c83d960b2d25ecc10a4a0a7ce1a2
command: ["bundle"]
args: ["exec", "bin/delayed_job", "-n", "1", "run"]
resources:
limits:
cpu: "0.5"
memory: "512Mi"
requests:
memory: "512Mi"
cpu: "0.2"

View File

@@ -51,6 +51,7 @@ EXPOSE 443
# Tini solves the zombie PID problem # Tini solves the zombie PID problem
ENTRYPOINT ["/tini", "--"] ENTRYPOINT ["/tini", "--"]
CMD bundle exec puma -w 3 -t 5:5 -b 'tcp://0.0.0.0:80' -e production CMD bundle exec passenger start --max-pool-size 3 --environment production -p 80
#CMD bundle exec puma -w 3 -t 5:5 -b 'tcp://0.0.0.0:80' -e production
#CMD bundle exec puma -w 3 -t 5:5 -b 'ssl://0.0.0.0:443?key=/ssl/server.key&verify_mode=none&cert=/ssl/server.crt' -e production #CMD bundle exec puma -w 3 -t 5:5 -b 'ssl://0.0.0.0:443?key=/ssl/server.key&verify_mode=none&cert=/ssl/server.crt' -e production
#CMD bundle exec passenger start --max-pool-size 3 --environment production --ssl --ssl-certificate /ssl/server.crt --ssl-certificate-key /ssl/server.key #CMD bundle exec passenger start --max-pool-size 3 --environment production --ssl --ssl-certificate /ssl/server.crt --ssl-certificate-key /ssl/server.key