This commit is contained in:
gregory hendrickson
2023-01-26 04:15:16 -08:00
parent d81610555b
commit 32045ef028
6 changed files with 35 additions and 31 deletions

1
.gitignore vendored
View File

@@ -15,3 +15,4 @@
Thumbs.db
*-config-map.yaml
*-secrets.yaml

View File

@@ -1,14 +1,14 @@
Ghost Blog on Kubernetes
This repository contains the configuration files necessary to deploy a Ghost blog on Kubernetes using a MySQL backend and an nginx-proxy for routing traffic.
Prerequisites
A running Kubernetes cluster
The kubectl command-line tool installed on your local machine
Deployment
- A running Kubernetes cluster
- The kubectl command-line tool installed on your local machine
Deployment
kubectl apply -f namespace.yaml
kubectl apply -f blog-config-map.yaml
kubectl apply -f deployments/ghost-blog-deployment.yaml
kubectl apply -f deployments/mysql-deployment.yaml
kubectl apply -f deployments/nginx-proxy-deployment.yaml
@@ -16,7 +16,6 @@ kubectl apply -f services/ghost-blog-service.yaml
kubectl apply -f services/ingress-service.yaml
kubectl apply -f services/mysql-service.yaml
kubectl apply -f services/nginx-proxy-service.yaml
kubectl apply -f volumes/nginx-pv.yaml
kubectl apply -f volumes/nginx-pvc.yaml
kubectl apply -f volumes/mysql-pv.yaml
@@ -27,9 +26,4 @@ kubectl apply -f volumes/blog-pvc.yaml
This will create the necessary resources in the cluster, including a deployment for the Ghost app, a service for connecting to the MySQL server, and an ingress service for routing traffic to the Ghost app via the nginx-proxy with https and http.
Volumes
This configuration is using a Persistent Volume to store the Ghost blog data, this can be done by creating a persistent volume and persistent volume claim, and then referencing it in the ghost-blog-deployment.yaml file.
ingress-service.yaml
In this example, $(VAR_HOST) and $(SECRET_NAME) are variables that are stored in a configMap and a Secret, respectively. These variables can be managed and updated separately from the YAML files, making it easier to update and maintain your configuration.
To use variables in your YAML files, you'll first need to create a configMap and a Secret that contains the variables you need. You can do this using the kubectl
This configuration is using a Persistent Volume to store the Ghost blog data, this can be done by creating a persistent volume and persistent

View File

@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: traefik-loadbalancer
spec:
selector:
app: traefik
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
type: LoadBalancer

View File

@@ -1,13 +0,0 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: nginx-proxy-pv
namespace: blog
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data/nginx-proxy"
persistentVolumeReclaimPolicy: Retain

11
volumes/traefik-pv.yaml Normal file
View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: traefik-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data/traefik"

View File

@@ -1,14 +1,10 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-proxy-pvc
namespace: blog
name: traefik-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
selector:
matchLabels:
app: nginx-proxy
storage: 10Gi