기초 환경 설정
! 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 설치
- https://docs.docker.com/docker-for-windows/install/#download-docker-forwindows
- Down from docker hub > docker for windows (stable) 설치
- stable : 분기 별 안정적인 최신 프로그램, edge : 매일 새로운 최신 프로그램 - exe 설치 프로그램 실행 > check 박스에서 wsl2 다운로드 체크 후 install
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.yaml은 Wordpress 사이트와 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. 성공 화면
'IT_Engineer > DevOps_Cloud' 카테고리의 다른 글
[VM] Virtual Machine (가상머신) 에 대하여 (0) | 2020.12.14 |
---|---|
[K8S] Kubernetes! 기초 용어 정리 (0) | 2020.12.09 |
[Docker] Docker, Docker-ce 설치 (0) | 2020.11.02 |
[클라우드 컴퓨팅] Docker 싱글 서버 구축 (0) | 2020.10.27 |
[클라우드 컴퓨팅] 클라우드 컴퓨팅 개념 (0) | 2020.10.26 |