Deploying laravel application to Digital ocean kubernetes — Part 3

Deploying laravel application on Cloud Kubernetes.

We will be using digital ocean cloud managed kubernetes, so if you don’t have account on Digital ocean, you can use this link https://m.do.co/c/37201cd07b6d to create account in Digital Ocean get $100 credit.

FROM php:7.2-fpm
COPY app /var/www/
EXPOSE 9000
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
labels:
tier: backend
data:
config : |
server {
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;

root /code/app/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
tier: backend
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
tier: backend
template:
metadata:
labels:
app: nginx
tier: backend
spec:
volumes:
- name: dir
hostPath:
path: /code
- name: config
configMap:
name: nginx-config
items:
- key: config
path: site.conf
containers:
- name: nginx
image: nginx
volumeMounts:
- name: dir
mountPath: /code
- name: config
mountPath: /etc/nginx/conf.d
ports:
- containerPort: 80
name: http
protocol: TCP
kind: Service
apiVersion: v1
metadata:
name: nginx
labels:
tier: backend
app: nginx
spec:
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 32380
selector:
tier: backend
app: nginx
type: LoadBalancer
apiVersion: apps/v1
kind: Deployment
metadata:
name: php
labels:
tier: backend
spec:
replicas: 5
selector:
matchLabels:
app: php
tier: backend
template:
metadata:
labels:
app: php
tier: backend
spec:
volumes:
- name: dir
hostPath:
path: /code
containers:
- name: php
image: hirenkavad/laravel-k8:1.5.1
volumeMounts:
- name: dir
mountPath: /code
apiVersion: v1
kind: Service
metadata:
name: php
labels:
tier: backend
spec:
selector:
app: php
tier: backend
ports:
- protocol: TCP
port: 9000
kubectl -kubeconfig="laravel-k8-config.yaml" apply -f nginx_configMap.yamlkubectl -kubeconfig="laravel-k8-config.yaml" apply -f php_deployment.yamlkubectl -kubeconfig="laravel-k8-config.yaml" apply -f php_service.yamlkubectl -kubeconfig="laravel-k8-config.yaml" apply -f nginx_deployment.yamlkubectl -kubeconfig="laravel-k8-config.yaml" apply -f nginx_service.yaml
Live application
Accessing kubernetes dashboard from digital ocean
Scaling from Kubernetes dashboard

We are here for quick tutorials, it may be server administration, server setup, dev ops, simple programming tips, simple hacks for server and many other things.