Se añaden las pruebas de readyness y liveness para la app final y un volumen...

Se añaden las pruebas de readyness y liveness para la app final y un volumen para almacenar todo lo de activestorage
parent f283f64b
apiVersion: v1
kind: PersistentVolume
metadata:
name: rails-storage
labels:
app: rails-app
component: active-storage
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
gcePersistentDisk:
pdName: rails-activestorage-disk
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: rails-activestorage-claim
labels:
app: rails-app
spec:
accessModes:
- ReadWriteOnce
storageClassName: ""
resources:
requests:
storage: 10Gi
selector:
matchLabels:
app: rails-app
component: active-storage
\ No newline at end of file
...@@ -11,7 +11,7 @@ spec: ...@@ -11,7 +11,7 @@ spec:
spec: spec:
initContainers: initContainers:
- name: setup-database - name: setup-database
image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.2 image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.4
command: ["rails","db:create"] command: ["rails","db:create"]
envFrom: envFrom:
- configMapRef: - configMapRef:
...@@ -20,15 +20,15 @@ spec: ...@@ -20,15 +20,15 @@ spec:
- name: "MYSQL_USER" - name: "MYSQL_USER"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: username key: username
- name: "MYSQL_PASSWORD" - name: "MYSQL_PASSWORD"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: password key: password
- name: schema-migration - name: schema-migration
image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.2 image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.4
command: ["rails","db:migrate"] command: ["rails","db:migrate"]
envFrom: envFrom:
- configMapRef: - configMapRef:
...@@ -37,16 +37,16 @@ spec: ...@@ -37,16 +37,16 @@ spec:
- name: "MYSQL_USER" - name: "MYSQL_USER"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: username key: username
- name: "MYSQL_PASSWORD" - name: "MYSQL_PASSWORD"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: password key: password
containers: containers:
- name: demo - name: demo
image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.2 image: eu.gcr.io/wdps-prj-terraform-e8b60c97/cool-app:v.0.4
command: ["foreman","start","-f","Procfile.dev"] command: ["foreman","start","-f","Procfile.dev"]
envFrom: envFrom:
- configMapRef: - configMapRef:
...@@ -55,16 +55,37 @@ spec: ...@@ -55,16 +55,37 @@ spec:
- name: "MYSQL_USER" - name: "MYSQL_USER"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: username key: username
- name: "MYSQL_PASSWORD" - name: "MYSQL_PASSWORD"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: password key: password
ports: ports:
- containerPort: 5000 - containerPort: 5000
name: foreman-port name: foreman-port
volumeMounts:
- name: activestorage
mountPath: /app/storage
livenessProbe:
httpGet:
path: /monitoring/alive
port: foreman-port
initialDelaySeconds: 30
timeoutSeconds: 5
periodSeconds: 15
readinessProbe:
httpGet:
path: /monitoring/ready
port: foreman-port
initialDelaySeconds: 15
timeoutSeconds: 5
periodSeconds: 15
volumes:
- name: activestorage
persistentVolumeClaim:
claimName: rails-activestorage-claim
#Montar el Liveness #Montar el Liveness
--- ---
apiVersion: v1 apiVersion: v1
......
apiVersion: v1 apiVersion: v1
kind: Secret kind: Secret
metadata: metadata:
name: mysql-secret name: mysql-rails-secret
type: Opaque type: Opaque
data: data:
password: ZG51ZWhFUkZBRWFjbmV4dTQ4MzdxNDE4M2U= password: ZG51ZWhFUkZBRWFjbmV4dTQ4MzdxNDE4M2U=
......
...@@ -4,6 +4,7 @@ metadata: ...@@ -4,6 +4,7 @@ metadata:
name: rails-database name: rails-database
labels: labels:
app: rails-app app: rails-app
component: database
spec: spec:
capacity: capacity:
storage: 10Gi storage: 10Gi
...@@ -29,3 +30,4 @@ spec: ...@@ -29,3 +30,4 @@ spec:
selector: selector:
matchLabels: matchLabels:
app: rails-app app: rails-app
component: database
\ No newline at end of file
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1
kind: Deployment kind: Deployment
metadata: metadata:
name: mysql-server name: mysql-server-rails
labels: labels:
app: database app: database
spec: spec:
...@@ -19,17 +19,17 @@ spec: ...@@ -19,17 +19,17 @@ spec:
- name: "MYSQL_ROOT_PASSWORD" - name: "MYSQL_ROOT_PASSWORD"
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: root key: root
- name: MYSQL_USER - name: MYSQL_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: username key: username
- name: MYSQL_PASSWORD - name: MYSQL_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: mysql-secret name: mysql-rails-secret
key: password key: password
- name: MYSQL_DATABASE - name: MYSQL_DATABASE
valueFrom: valueFrom:
......
...@@ -21,6 +21,19 @@ class PostsController < ApplicationController ...@@ -21,6 +21,19 @@ class PostsController < ApplicationController
def edit def edit
end end
def alive
render text: "alive!", status: :ok
end
def ready
@posts = Post.all
unless @posts.nil?
render text: "Ready!", status: :ok
else
render text: "Wait...", status: :unprocessable_entity
end
end
# POST /posts # POST /posts
# POST /posts.json # POST /posts.json
def create def create
......
Rails.application.routes.draw do Rails.application.routes.draw do
resources :posts resources :posts
match '/monitoring/alive', to: 'posts#alive', via: 'get', as: :alive
match '/monitoring/ready', to: 'posts#ready', via: 'get', as: :ready
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
root "posts#index" root "posts#index"
end end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment