본문 바로가기
미니 프로젝트

쿠버네티스를 이용한 wordpress/mysql 미니프로젝트

by 종바깅 2021. 5. 4.

Wordpress / Mysql 구성

Wordpress

  • ReplicaSet: 2
  • NFS 스토리지 연결(Static Provision)
  • Service: LoadBalancer
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
#replecaset : 2
  replicas: 2
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - image: wordpress
        name: wordpress
        env: 
          - name: WORDPRESS_DB_HOST
            value: mysql-svc
          - name: WORDPRESS_DB_USER
            value: user
          - name: WORDPRESS_DB_PASSWORD
            value: password
          - name: WORDPRESS_DB_NAME
            value: wordpress
        volumeMounts:
        - mountPath: /www/var/html
          name: wordpress-contents
        ports:
        - containerPort: 80
      volumes:
      - name: wordpress-contents
        persistentVolumeClaim:
          claimName: wordpress-pvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wordpress-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  volumeName: wordpress-pv

---
# nfs 볼륨 마운트
# 리클레임 정책 delete >> pvc삭제시 연계된 스토리지의 볼륨도 삭제
apiVersion: v1
kind: PersistentVolume
metadata:
  name: wordpress-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  nfs:
    server: 192.168.201.11
    path: /nfs-volume
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress-svc
spec:
  type: LoadBalancer
  selector:
    app: wordpress
  ports:
  - port: 80
    targetPort: 80

MySQL

  • Pod
  • hostPath 스토리지 연결
  • Service: ClusterIP
# mysql pod 설정
apiVersion : v1
kind: Pod
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  containers:
  - name: mysql
    image: mysql:5.7
    env:
      - name: MYSQL_ROOT_PASSWORD
        value: password
      - name: MYSQL_USER
        value: user
      - name: MYSQL_PASSWORD
        value: password
      - name: MYSQL_DATABASE
        value: wordpress
    ports:
    - containerPort: 3306
  volumes:
#mysql-pvc에 db 저장
  - name: mysql-db
    persistentVolumeClaim:
      claimName: mysql-pvc
---
# mysql pvc설정
# 여러노드가 읽고 쓰기 할 수 있도록 마운트
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  volumeName: mysql-pv
---
# mysql pv설정
# 리클레임 정책 : delete >> pvc가 해제되면 외부 스토리지 볼륨 삭제
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  hostPath:
    path: /mysql
    type: DirectoryOrCreate
---
# 서비스 설정
apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
spec:
  selector:
    app: mysql
  ports:
  - port: 3306
    targetPort: 3306

댓글