├── 00-wordpress-mysql-pv.yml ├── 01-mysql-pvc.yml ├── 02-wordpress-pvc.yml ├── 03-secret.yml ├── 04-mysql-deploy-service.yml ├── 05-wordpress-deploy-service.yml ├── README.md └── wordpress-challenge.png /00-wordpress-mysql-pv.yml: -------------------------------------------------------------------------------- 1 | # Create PersistentVolume 2 | # change the ip of NFS server 3 | apiVersion: v1 4 | kind: PersistentVolume 5 | metadata: 6 | name: wordpress-persistent-storage 7 | labels: 8 | app: wordpress 9 | tier: frontend 10 | spec: 11 | capacity: 12 | storage: 1Gi 13 | accessModes: 14 | - ReadWriteMany 15 | nfs: 16 | server: nfs01 17 | # Exported path of your NFS server 18 | path: "/html" 19 | 20 | --- 21 | apiVersion: v1 22 | kind: PersistentVolume 23 | metadata: 24 | name: mysql-persistent-storage 25 | labels: 26 | app: wordpress 27 | tier: mysql 28 | spec: 29 | capacity: 30 | storage: 1Gi 31 | accessModes: 32 | - ReadWriteMany 33 | nfs: 34 | server: nfs01 35 | # Exported path of your NFS server 36 | path: "/mysql" 37 | -------------------------------------------------------------------------------- /01-mysql-pvc.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: mysql-persistent-storage 6 | labels: 7 | app: wordpress 8 | spec: 9 | accessModes: 10 | - ReadWriteMany 11 | resources: 12 | requests: 13 | storage: 1Gi 14 | volumeName: "mysql-persistent-storage" 15 | -------------------------------------------------------------------------------- /02-wordpress-pvc.yml: -------------------------------------------------------------------------------- 1 | --- 2 | apiVersion: v1 3 | kind: PersistentVolumeClaim 4 | metadata: 5 | name: wordpress-persistent-storage 6 | labels: 7 | app: wordpress 8 | spec: 9 | accessModes: 10 | - ReadWriteMany 11 | resources: 12 | requests: 13 | storage: 1Gi 14 | volumeName: "wordpress-persistent-storage" 15 | -------------------------------------------------------------------------------- /03-secret.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: mysql-pass 5 | type: Opaque 6 | data: 7 | password: YWRtaW4= 8 | -------------------------------------------------------------------------------- /04-mysql-deploy-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: wordpress-mysql 5 | labels: 6 | app: wordpress 7 | spec: 8 | ports: 9 | - port: 3306 10 | selector: 11 | app: wordpress 12 | tier: mysql 13 | clusterIP: None 14 | --- 15 | apiVersion: apps/v1beta2 # for versions before 1.9.0 use apps/v1beta2 16 | kind: Deployment 17 | metadata: 18 | name: mysql 19 | labels: 20 | app: wordpress 21 | spec: 22 | selector: 23 | matchLabels: 24 | app: wordpress 25 | tier: mysql 26 | strategy: 27 | type: Recreate 28 | template: 29 | metadata: 30 | labels: 31 | app: wordpress 32 | tier: mysql 33 | spec: 34 | containers: 35 | - image: mysql:5.7 36 | name: mysql 37 | env: 38 | - name: MYSQL_ROOT_PASSWORD 39 | valueFrom: 40 | secretKeyRef: 41 | name: mysql-pass 42 | key: password 43 | ports: 44 | - containerPort: 3306 45 | name: mysql 46 | volumeMounts: 47 | - name: mysql-persistent-storage 48 | mountPath: "/var/lib/mysql" 49 | volumes: 50 | - name: mysql-persistent-storage 51 | persistentVolumeClaim: 52 | claimName: mysql-persistent-storage 53 | -------------------------------------------------------------------------------- /05-wordpress-deploy-service.yml: -------------------------------------------------------------------------------- 1 | # create a service for wordpress 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: wordpress 6 | labels: 7 | app: wordpress 8 | spec: 9 | ports: 10 | - port: 80 11 | nodePort: 31004 12 | selector: 13 | app: wordpress 14 | tier: frontend 15 | type: NodePort 16 | 17 | 18 | 19 | --- 20 | apiVersion: apps/v1beta2 # for versions before 1.9.0 use apps/v1beta2 21 | kind: Deployment 22 | metadata: 23 | name: wordpress 24 | labels: 25 | app: wordpress 26 | spec: 27 | replicas: 2 28 | selector: 29 | matchLabels: 30 | app: wordpress 31 | tier: frontend 32 | strategy: 33 | type: Recreate 34 | template: 35 | metadata: 36 | labels: 37 | app: wordpress 38 | tier: frontend 39 | spec: 40 | containers: 41 | - image: wordpress 42 | name: wordpress 43 | env: 44 | - name: WORDPRESS_DB_HOST 45 | value: wordpress-mysql 46 | - name: WORDPRESS_DB_PASSWORD 47 | valueFrom: 48 | secretKeyRef: 49 | name: mysql-pass 50 | key: password 51 | ports: 52 | - containerPort: 80 53 | name: wordpress 54 | volumeMounts: 55 | - name: wordpress-persistent-storage 56 | mountPath: "/var/www/html" 57 | volumes: 58 | - name: wordpress-persistent-storage 59 | persistentVolumeClaim: 60 | claimName: wordpress-persistent-storage 61 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Kubernetes Challenge - 1 - Wordpress 2 | 3 | This is a solution to the Kubernetes Challenge series hosted at KodeKloud 4 | 5 | Access the hands-on challenge here: 6 | 7 | https://kodekloud.com/p/practice-test-kubernetes-challenge-1-wordpress 8 | 9 | ![alt text](wordpress-challenge.png) -------------------------------------------------------------------------------- /wordpress-challenge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kodekloudhub/kubernetes-challenge-1-wordpress/2bfa43b8185ee9a1ce9e4666279f3533b2fa0f65/wordpress-challenge.png --------------------------------------------------------------------------------