forked from Sonal0409/DevOps_ClassNotes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWordpressApp
More file actions
166 lines (146 loc) · 3.78 KB
/
WordpressApp
File metadata and controls
166 lines (146 loc) · 3.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
kind: PersitentVolumeClaim
apiVersion: v1
metadata:
name: mysql-volumeclaim
spec:
accessMode:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
#Here we are just making a claim for 200GB Volume in Read-write mode
#The volume will be provisioned first, and then it will be claimed by our MySQL pod
# Now we can create deployment file for our MySQL pod
---
piVersion: apps/v1
kind: Deployment
metadata:
name: mysql
labels:
app: mysql
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
spec:
containers:
- image: mysql:5.6
name: mysql
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql
key: password
ports:
- containerPort: 3306
name: mysql
volumeMounts:
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-volumeclaim
Here we are only creating a single replica, so we don’t have any issue with our read-write volume
We are passing a Environment variable in our MySQL container for its root password using a secret object.
Now, if you look at our mysql-deployment.yaml you can see we are associating our persistent volume object with this deployment and then mounting it inside the MySQL container
Now we will create mysql-service.yaml
This will create an internal service to access our MySQL deployment
---
apiVersion: v1
kind: Service
metadata:
name: mysql
lables:
app: mysql
spec:
type: ClusterIP
ports:
- port: 3306
selector:
app: mysql
We will create a persistent volume claim for our Wordpress Application
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: wordpress-volumeclaim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 200Gi
create a deployment.yaml for Wordpress application.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
containers:
- image: wordpress
name: wordpress
env:
- name: WORDPRESS_DB_HOST
value: mysql:3306
- name: WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name: mysql
key: password
ports:
- containerPort: 80
name: wordpress
volumeMounts:
- name: wordpress-persistent-storage
mountPath: /var/www/html
volumes:
- name: wordpress-persistent-storage
persistentVolumeClaim:
claimName: wordpress-volumeclaim
#create a service definition to expose our Wordpress Application for the outside world
---
apiVersion: v1
kind: Service
metadata:
labels:
app: wordpress
name: wordpress
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: wordpress
kubectl apply -f mysql-volumeclaim.yaml -f wordpress-volumeclaim.yaml
kubectl get pvc
kubectl create secrete generic mysql --from-literal=password=YOURPASSWORD
kubectl apply -f mysql-deployments.yaml -f mysql-service.yaml
kubectl get pods
kubectl get svc
kubectl apply -f wordpress-deployment.yaml -f wordpress-serice.yaml
kubectl get pods
kubectl get svc
You will get public IP for your Wordpress blog copy it and past it in a new tab of browser.And you get the Wordpress initial setup tour something like this.
Thanks.