# 워드프레스 mysql 쿠버네티스 배포
cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass
literals:
- password=YOUR_PASSWORD
EOF
mkdir wordpress-project
mv kustomization.yaml wordpress-project/
cd wordpress-project/
# 리소스 다운받기
curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml
curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml
# 방금전 추가한 파일을 리소스에 추가한다.
cat <<EOF >>./kustomization.yaml
resources:
- mysql-deployment.yaml
- wordpress-deployment.yaml
EOF
# 패스워드를 변경하자
vim kustomization.yaml
# 실행
kubectl apply -k ./
kubectl get pod
- 관리자 페이지 접근 방법 > 접속 엔드포인트/wp-login.php
http://34.64.197.131/wp-login.php
- 서비스 및 인그레스를 통해서 엔드포인트로 접근이 가능하다.
# 스케일링 하기
kubectl scale deployment wordpress --replicas=3
kubectl get pod
- 워드프레스를 설치한다.
- 오류를 확인할때 : kubectl describe pod [pod이름]
# pod 을 스케일 아웃을 설정했을때 스케일 아웃이 안된다면 GCP가 지원을 하지 않기 때문이다.
- 수동으로 스케일 아웃을 수행하는 방법에 대해 알아보자.
# node 를 수동으로 지정해줘야 정상적인 스케일 아웃이 된다.
# 노드를 수동으로 지정하여 워드 프레스와 MYSQL 스케일링이 가능하도록 수정하기
# 모든 리소스 삭제하기
kubectl delete all --all
# pvc 를 삭제한다.
kubectl delete pvc [프로스세 name]
- all 옵션이 없으므로 1개씩 삭제 해주어야 한다.
vim kustomization.yaml
secretGenerator:
- name: mysql-pass
namespace: wordpress
literals:
- password=YOUR_PASSWORD
resources:
- mysql-deployment.yaml
- wordpress-deployment.yaml
vim mysql-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: wordpress-mysql
namespace: wordpress
labels:
app: wordpress
spec:
ports:
- port: 3306
selector:
app: wordpress
tier: mysql
clusterIP: None
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
namespace: wordpress
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
namespace: wordpress
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: mysql
template:
metadata:
labels:
app: wordpress
tier: mysql
spec:
nodeSelector:
app: mysql
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
- namespace 추가, kubernetes 공식사이트에서 nodeselector 검색하여 kind: 으로 검색 > spec 밑에 추가하기
vim wordpress-deployment.yaml
apiVersion: v1
kind: Service
metadata:
name: wordpress
namespace: wordpress
labels:
app: wordpress
spec:
ports:
- port: 80
selector:
app: wordpress
tier: frontend
type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: wp-pv-claim
namespace: wordpress
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
namespace: wordpress
labels:
app: wordpress
spec:
selector:
matchLabels:
app: wordpress
tier: frontend
template:
metadata:
labels:
app: wordpress
tier: frontend
spec:
nodeSelector:
app: wordpress
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
# wordpress 관련 namespace 생성하기
kubectl create ns wordpress
kubectl get node 를 입력하여 어떤 노드에 wordpress를 배치할 것인지 확인하기
# 해당 노드에 할당하기
kubectl label node [노드명] app=wordpress
kubectl label nodes gke-standard-cluster-1-default-pool-e6b621c9-aim9 app=wordpress
kubectl label nodes gke-standard-cluster-1-default-pool-e6b621c9-b51i app=mysql
# apply 수행하기
kubectl apply -k ./
# 네임스페이스에 등록된 pod 확인하기
kubectl get pod -n wordpress
# 워드 프레스 서비스 확인하기
구글 클라우드에서 > 서비스 및 수신 > 엔드포인트로 접근 > 한국어로 설치 진행 > 정상적으로 웹사이트 뜨는지 확인
# 스케일링 수행하기
- wordpress
kubectl scale -n wordpress deployment wordpress --replicas=3
- mysql
kubectl scale -n wordpress deployment wordpress-mysql --replicas=3
- 상태 지켜보기
kubectl get pod -w
kubectl get pod -w -n wordpress
- 스케일링 된 것을 확인 할 수 있다.
'⭐ Kubernetes & EKS > Kubernetes 예제' 카테고리의 다른 글
ClusterIP 에서 Nodeport 로 변경하는 방법 (0) | 2021.11.07 |
---|---|
쿠버네티스 예제를 활용한 애플리케이션 개발 (2) (0) | 2021.09.26 |