본문 바로가기
Kubernetes

minikube를 활용한 wordpress mysql 연동 예제

by 판매자명단 2023. 10. 23.

[Docker] - docker, kubernetes 기초설정, 예제

 

docker, kubernetes 기초설정, 예제

* ubuntu 22.04 / ip 192.168.2.10/24 / hostname ubuntu sudo -i DOCKER_USER=ubuntu DOCKER_COMPOSE_VERSION=2.17.3 #의존성 설치 apt update -y && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release #docker가 제공하

y7712.tistory.com

minikube start
minikube ip
minikube addons enable metallb
minikube addons configure metallb

우선 minikube에 metallb addon을 활성화시켜주고 metallb에 ip설정을 한다

현재 환경에선 loadbalancer를 구현하기 어려우므로 비슷하게 구현하기 위한 설정

mkdir test
cd test
nano wordpress.yml
nano mysql.yml
nano nodeport.yml
nano loadbalancer.yml
#wordpress.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
        - image: wordpress:5.9.1-php8.1-apache
          name: wordpress
          env:
            - name: WORDPRESS_DB_HOST
              value: wordpress-mysql
            - name: WORDPRESS_DB_NAME
              value: wordpress
            - name: WORDPRESS_DB_USER
              value: root
            - name: WORDPRESS_DB_PASSWORD
              value: password
          ports:
            - containerPort: 80
              name: wordpress
#mysql.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: mysql
  template:
    metadata:
      labels:
        app: wordpress
        tier: mysql
    spec:
      containers:
        - image: mariadb:10.7
          name: mysql
          env:
            - name: MYSQL_DATABASE
              value: wordpress
            - name: MYSQL_ROOT_PASSWORD
              value: password
          ports:
            - containerPort: 3306
              name: mysql
---
apiVersion: v1
kind: Service
metadata:
  name: wordpress-mysql
  labels:
    app: wordpress
spec:
  ports:
    - port: 3306
  selector:
    app: wordpress
    tier: mysql
#nodeport.yml
apiVersion: v1
kind: Service
metadata:
  name: wordpress-np
  labels:
    app: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
      protocol: TCP
      nodePort: 31000
  selector:
    app: wordpress
    tier: frontend
#loadbalancer.yml
apiVersion: v1
kind: Service
metadata:
  name: wordpress-lb
spec:
  type: LoadBalancer
  ports:
    - port: 30000
      targetPort: 80
      protocol: TCP
  selector:
    app: wordpress
    tier: frontend

우선 테스트용 폴더를 만들고 폴더 안에 각 yml파일들을 만들어 준다

wordpress와 mysql을 각각 다른 pod에 생성하고 서로 연동되는것을 확인해보려고 한다

kubectl apply -f wordpress.yml,mysql.yml,nodeport.yml,loadbalancer.yml
kubectl get pod
kubectl get svc

모든 yml 파일들을 실행시켜주고 잘 실행 됐는지 확인해 본다

각 wordpress와 mysql이 다른 pod임에도 잘 연동되었고 nodeport와 loadbalancer도 정상 작동 하는 걸 볼 수 있다

 

* DB 연동 확인

만약 DB연동이 안되어있다면 위와 같은 메세지가 뜬다

따라서 설치 페이지가 정상적으로 뜬다면 DB가 연동되어 있다는 것이다