---
apiVersion: v1
kind: Pod
metadata:
name: word-rep
namespace: 1team
labels:
run: myword
spec:
containers:
- name: word
image: wordpress:5.6
imagePullPolicy: IfNotPresent
env:
- name: WORDPRESS_DB_HOST
value: word-rep
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_USER
value: root
- name: WORDPRESS_DB_PASSWORD
value: It12345!
ports:
- containerPort: 80
- name: mysql
image: mysql:5.7
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: It12345!
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_ROOT_HOST
value: '%'
ports:
- containerPort: 3306
kubectl get svc -n 1team
이것은 한 노드에다가 연동을 진행 한것이다 도커에서도 wordpress, Mysql
을 실행하기 위해서 환경변수를 주었던 기억이 있다 쿠버네티스도 마찬가지이다
env
라는 환경변수 밑에 name
과 value
를 올바르게 넣어주면된다
만약 다른 노드에 배치가 되어있다면 WORDPRESS_DB_HOST
에 데이터베이스의 IP를 적어줘야하지만 현재는 같은 노드에 있기 때문에 생성된 컨테이너의 이름을 넣어줘도 실행이 된다
하지만 만약 서버를 구축할때 wordpress 와 mysql을 같이 구축한다는 것은 아주 무서운 일이니 이렇게 생성하는 것은 최대한 지양을 해야한다
kubectl apply -f word_sql.yml
명령어를 입력하여 실행을 한다
kubectl get pod -n 1team --show-labels
설정된 라벨을 expose
할때 옵션으로 사용하기에 편하게 하기 위해서 미리 확인을 한다
kubectl expose po word-rep -n 1team --type=NodePort -l run=myword
-> 1team에 있는 word-rep 이라는 컨테이너에 run=myword 라는 라벨을 가지고 있는 아이를 NodePort 를 통해서 외부로 통신하기 위해서 서비스 해준다
kubectl get svc -n 1team
로 확인을 하면 1team에 있는 서비스를 출력해주고 거기에 포트번호가 적혀있는 것을 확인 할 수 있다
#mysql
---
apiVersion: v1
kind: Pod
metadata:
name: mysql
labels:
app: mysql
spec:
nodeName: node2
containers:
- name: mysql
image: mysql:5.7
imagePullPolicy: IfNotPresent
env:
- name: MYSQL_ROOT_PASSWORD
value: It12345!
- name: MYSQL_DATABASE
value: wordpress
- name: MYSQL_ROOT_HOST
value: '%'
ports:
- containerPort: 3306
#word
---
apiVersion: v1
kind: Pod
metadata:
name: wordpress
labels:
app: word
spec:
nodeName: node1
containers:
- name: wordpress
image: wordpress:5.6
imagePullPolicy: IfNotPresent
env:
- name: WORDPRESS_DB_HOST
value: 10.36.0.1
- name: WORDPRESS_DB_NAME
value: wordpress
- name: WORDPRESS_DB_USER
value: root
- name: WOREPRESS_DB_PASSWORD
value: It12345!
ports:
- containerPort: 80
다른 노드에서 실행을 한다면 먼저 mysql
의 IP주소를 알아야한다
그러기 위해선 mysql
을 먼저 실행을 하고 wordpress
를 실행하는 순서가 되어야 한다
kubectl get po -o wide
를 이용하여 한번에 IP를 확인한 후에 mysql IP를 적어준다 두개다 잘 실행되고 있는 모습이다
같은 노드에서 실행하는 것과 크게 다를 것은 없지만 차이점이 있다면 매니페스트파일에 nodeName
을 추가해준것 그리고 WORDPRESS_DB_HOST
에 mysql IP 주소를 입력해준것
mysql과 wordpress를 실행시켜주고 외부에서 확인을 하기 위해선 wordpress를 expose 해주어야한다
kubectl expose po wordpress --type=NodePort -l app=word
역시나 동일하게 NodePort를 이용하여 외부로 통신 접속을 해보면
정상적으로 웹사이트가 잘 나오는 모습을 확인 할 수 있다