본문 바로가기
IT_Engineer/DevOps_Cloud

[K8S] Windows WSL Minikube 및 Wordpress 설치

by 좋은데이피치 2020. 11. 30.
728x90

기초 환경 설정

! Windows Docker 설치 가능 환경

  • Windows 7 이상 (Windows8, Windows10)
  • 컴퓨터 하드웨어가 가상화(Virtualization) 지원
  • 작업관리자(ctrl+ alt+ delete) > 성능 탭 > 가상화 : 사용

  • 윈도우의 Hyper-V 실행 :
    프로그램 제거 또는 변경 > Windows 기능 켜기/끄기 > Hyper-V 체크 후 확인

 


수행 내용

  • Winodws Docker, WSL2, minikube 설치
  • minikube를 통해서 mysql 과 연동된 wordpress 구축

1. Docker for Windows 설치

! Docker for Windows 설치

2.  WSL2 설치

  • https://docs.microsoft.com/ko-kr/windows/wsl/install-win10 > 4단계
    x64 머신용 최신 WSL2 Linux 커널 업데이트 패키지 클릭 및 다운로드
  • wsl_update_x64.exe 설치 프로그램 실행
  • WSL 프로그램 실행
  • Microsoft Store > Ubuntu, Windows Terminal 설치
  • Windows Terminal에서 상단의 버튼 누르면 Ubuntu 열림
  • Windows Powershell 마우스 오른쪽 클릭 > 관리자 모드 실행 > wsl 확인
> wsl l -v # wsl Version 2 확인

 
> wsl 진입
# apt-get 패키지 업데이트
> sudo apt-get update && sudo apt-get install
           apt-transport-https
           ca-certificates
           curl
           software-properties-common


#docker 설치
> sudo apt-get install docker
> sudo apt-get install docker.io
> docker version # docker 설치 버전 확인
 

 

3. Kubernetes(minikube) 설치

! minikube 설치

  • Docker for Windows > Settings > Resources > NETWORK, WSL ~ 모두 체크
  • Docker for Windows > Settings > Kubernetes 모두 체크

# minikube 설치
$ curl LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg i minikube_latest_amd64.deb


# minikube 실행
$ minikube start driver=docker
$ minikube kubectl

 

 

4. mysql을 연동한 wordpress 구축

! kustomization.yaml 생성하기

  • 시크릿 생성자 추가
# kustomization.yaml 생성
# password (password 부분) 수정 가능
$ cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass 
  literals: 
  - password=password(#본인 비밀번호)
EOF

 

  • MySQL 디플로이먼트 단일 인스턴스 기술
  • MySQL 컨테이너는 퍼시스턴트볼륨을 /var/lib/mysql에 마운트
  • MYSQL_ROOT_PASSWORD 환경변수는 시크릿에서 가져와 DB 암호 설정
  • MySQL deployment 구성 파일 다운로드
# MySQL 디플로이먼트 구성 파일 다운로드
$ curl LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml


# Wordpress 디플로이먼트 구성 파일 다운로드
$curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml



 

  • 위 두 yaml 파일을 kustomization.yaml에 추가
$ cat <<EOF >>./kustomization.yaml
resources: 
     - mysql-deployment.yaml
     - wordpress-deployment.yaml
EOF

! yaml 내용

  • mysql-deployment.yaml 파일 내용
더보기

# mysql-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

ports:

- port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: None

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: mysql-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress-mysql

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: mysql

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: mysql

spec:

containers:

- image: mysql:5.6

name: mysql

env:

- name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 3306

name: mysql

volumeMounts:

- name: mysql-persistent-storage

mountPath: /var/lib/mysql

volumes:

- name: mysql-persistent-storage

persistentVolumeClaim:

claimName: mysql-pv-claim

  • wordpress-deployment.yaml 내용
더보기

# wordpress-deployment.yaml

apiVersion: v1

kind: Service

metadata:

name: wordpress

labels:

app: wordpress

spec:

ports:

- port: 80

selector:

app: wordpress

tier: frontend

type: LoadBalancer

---

apiVersion: v1

kind: PersistentVolumeClaim

metadata:

name: wp-pv-claim

labels:

app: wordpress

spec:

accessModes:

- ReadWriteOnce

resources:

requests:

storage: 20Gi

---

apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2

kind: Deployment

metadata:

name: wordpress

labels:

app: wordpress

spec:

selector:

matchLabels:

app: wordpress

tier: frontend

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: frontend

spec:

containers:

- image: wordpress:4.8-apache

name: wordpress

env:

- name: WORDPRESS_DB_HOST

value: wordpress-mysql

- name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysql-pass

key: password

ports:

- containerPort: 80

name: wordpress

volumeMounts:

- name: wordpress-persistent-storage

mountPath: /var/www/html

volumes:

- name: wordpress-persistent-storage

persistentVolumeClaim:

claimName: wp-pv-claim

 

 

5. yaml 파일 적용 및 확인

  • kustomization.yamlWordpress 사이트와 MySQL 데이터베이스를 배포하는 모든 리소스를 포함
  • 다음과 같이 디렉토리 적용 가능
$ kubectl apply k ./

 

  • 적용 확인
# 시크릿 존재 확인
$ kubectl get secrets


# 퍼시스턴트 볼륨이 동적으로 프로비저닝이 되었는지 확인
$ kubectl get pvc


# 파드 확인
$ kubectl get pods


# 워드프레스 서비스가 실행중인지 확인
$ kubectl get services wordpress


# 워드프레스 서비스 IP주소 확인
$ minikube service wordpress —url

 

6. 웹 브라우저를 통한 확인

  • kubectl을 통한 pvc, service, url 확인 커맨드

  • URL 주소를 복사하여 웹 브라우저에서 사이트 확인

  • Wordpress 설치 환경 설정

 

7. 성공 화면

 

 

 

728x90

최근댓글

최근글