본문 바로가기

혼자하는 프로젝트/Wordpress (워드프레스)

EKS에 Wordpress(워드프레스) 설치하기

# EKS에 워드프레스 설치하기

1. Helm CLI 설치

- Helm CLI 설치 전 

Helm CLI란?

Kubernetes를 위한 패키지 매니징 툴, Kubernets용으로 제작된 소프트웨어를 찾고 공유하고 사용하는 툴이다.
node.js의 npm과 비슷한 형태로 Kubernetes의 패키지 배포를 가능하게 하는 툴이라고 보면 된다.
chart라고 부르는 패키지 포맷을 사용하는데 chart는 Kubernetes 리소스를 describe하는 파일들의 집합이다.

- 설치 전, 상호 작용할 command line 툴 설치

curl -sSL https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

- 버전 확인

helm version --short

2. Helm CLI 설치

- Chart 리포지토리 구성

첫번째로, Chart 리포지토리를 구성한다.
Chart 리포지토리는 Linux에서의 APT 또는 yum 리포지토리와 비슷하거나 macOS에서 Homebrew용 Taps와 유사하다.
stable 리포지토리를 다운로드한다.

helm -n wordpress-cwi install understood-zebu bitnami/wordpress
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/wordpress

- 설치가능한 charts 출력

설치한 후엔 설치할 수 있는 charts 를 나열할 수 있다.

helm search repo stable

- helm의 bash 쉘 자동 완성 활성화

helm completion bash >> ~/.bash_completion
. /etc/profile.d/bash_completion.sh
. ~/.bash_completion
source <(helm completion bash)

3. WordPress 설치

- WordPress 설치

- WordPress를 EKS cluster에 설치

bitnami charts 레포지토리를 사용해 WordPress를 EKS cluster에 설치한다.
Cloud9 Workspace 터미널에선 아래와 같은 명령을 실행해 WordPress 및 해당 데이터베이스를 배포하면 된다.

# Create a namespace wordpress
kubectl create namespace wordpress-cwi

# Add the bitnami Helm Charts Repository
helm repo add bitnami https://charts.bitnami.com/bitnami

# Deploy WordPress in its own namespace
helm -n wordpress-cwi install understood-zebu bitnami/wordpress

위의 chart가 생성한 것

- 2개의 persistent volumes
- 다수의 secrets
- MariaDB를 위한 1개의 StatefulSet
- WordPress를 위한 1개의 배포

- 생성된 pod 상태 확인

seungkim:~/environment $ kubectl get pod
NAME                                    READY   STATUS    RESTARTS   AGE
my-release-mariadb-0                    1/1     Running   0          4m18s
my-release-wordpress-5b47857bbb-xzfct   1/1     Running   0          4m18s

- 배포 상태 확인

kubectl -n wordpress-cwi rollout status deployment understood-zebu-wordpress

제대로 배포됐다면 아래와같이 화면에 나타난다.

- WordPress 접속

public URL 테스트

LoadBalancer를 사용할 수 있으려면 몇 분이 소요된다.

LoadBalancer 서비스 타입을 NodePort나 ClusterIP 형태의 서비스 타입으로 변경 할 수 있으며, 잉그레스로 선언하여 사용이 가능하다.

WordPress 사이트의 URL을 출력한다.

export SERVICE_URL=$(kubectl get svc -n wordpress-cwi understood-zebu-wordpress --template "{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}")

echo "Public URL: http://$SERVICE_URL/"

- 시작 페이지 확인

위에 출력된 URL로 들어가보면 샘플 템플릿이 적용된 WordPress 사이트가 나온다.

- admin 인터페이스 테스트

위의 상태로는 관리자 페이지로 들어갈 수 없다.
관리자 URL과 패스워드를 설정해준다.

export ADMIN_URL="http://$SERVICE_URL/admin"
export ADMIN_PASSWORD=$(kubectl get secret --namespace wordpress-cwi understood-zebu-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)

echo "Admin URL: http://$SERVICE_URL/admin
Username: user
Password: $ADMIN_PASSWORD"

# 아래와 같은 정보가 출력된것을 확인 할 수 있다.
seungkim:~/environment $ export ADMIN_URL="http://$SERVICE_URL/admin"
seungkim:~/environment $ export ADMIN_PASSWORD=$(kubectl get secret --namespace wordpress-cwi understood-zebu-wordpress -o jsonpath="{.data.wordpress-password}" | base64 --decode)
seungkim:~/environment $ echo "Admin URL: http://$SERVICE_URL/admin
> Username: user
> Password: $ADMIN_PASSWORD"
Admin URL: http://a79f8932b5a0942a39b7324883c8a29a-519472971.ap-northeast-2.elb.amazonaws.com/admin
Username: user
Password: bCKcd4Nmwk

- Admin URL 테스트

위에서 출력된 Admin URL을 들어가면 다음 화면이 표시된다.

- Admin 페이지 로그인

Username or Email Address : user
Password : 위에 출력된 비밀번호
로그인 이후 아래와 같은 화면으로 이동됐다면 EKS cluster에서 MariaDB가 지원하는 Wordpress 설치를 성공적으로 실행한 것이다.

이로써 AWS EKS에서 Wordpress를 실행하는 구성에 대해서 알아보았다.

 

- 끝 -