♡ 순서 ♡
1. 이미지 만들기
2. K8S Dashboard 에서 Django-Apache&MySQL : Pod / ConfigMap / Service 생성
3. Service - LoadBalancer 생성
● 기본 설정
2023.04.25 - [분류 전체보기] - [Kubernetes] Service - LoadBalancer
[ Linux ]
● 장고 프로젝트 준비
》 FileZilla 로 Docker 가 설치된 리눅스 가상머신으로 옮겨주기
● Dockerfile
FROM httpd:latest
RUN apt update
RUN apt install -y python3.9
RUN apt-get install -y apache2 apache2-dev python3-pip libmariadb-dev libjpeg-dev python3.9-dev
WORKDIR /app
COPY requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt
RUN pip install mod_wsgi
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
COPY . /app
● httpd.conf
LoadModule wsgi_module "/usr/local/lib/python3.9/dist-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"
WSGIPythonHome "/usr"
WSGIScriptAlias / "/app/config/wsgi.py"
WSGIPythonPath "/app"
<Directory "/app/config">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /app/static/
<Directory /app/static/>
Require all granted
</Directory>
Alias /media/ /app/media/
<Directory /app/media/>
Require all granted
</Directory>
바로 명령어를 통해 파일에 입력하고 싶으시다면 Dockerfile 에서
RUN mod_wsgi-express module-config >> /usr/local/apache2/conf/httpd.conf
로 넣어준 다음에 준비한 httpd.conf 파일을 >> 로 넣어주시면 되겠죠 ~
# cat httpd.conf >>/usr/local/apache2/conf/httpd.conf
● 이미지 만들기 (도커 허브에 업로드)
# 방화벽 켜주기
systemctl start firewalld
# 이미지 빌드
docker build --tag nuy0307/django-apache:1.5 .
# 도커 로그인
docker login
# 이미지 도커에 푸시
docker push nuy0307/django-apache:1.5
[ Kubernetes Dashboard ]
● Service
# django-apache-svc
apiVersion: v1
kind: Service
metadata:
name: django-apache-svc
spec:
selector:
app: django-apache-pod
ports:
- port: 9000
targetPort: 80
type: LoadBalancer
# mysql-svc
apiVersion: v1
kind: Service
metadata:
name: mysql-svc
spec:
selector:
app: mysql-pod
ports:
- port: 3306
targetPort: 3306
● ConfigMap
# django-dev
apiVersion: v1
kind: ConfigMap
metadata:
name: django-dev
data:
DBNAME: "web"
DBUSER: "root"
DBPASS: "qwer1234"
DBHOST: "mysql-svc"
DBPORT: "3306"
# mysql-dev
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-dev
data:
MYSQL_ROOT_PASSWORD: "qwer1234"
● Pod
# django-apache-pod
apiVersion: v1
kind: Pod
metadata:
name: django-apache-pod1
labels:
app: django-apache-pod
spec:
containers:
- name: container
image: nuy0307/django-apache:1.5
command: ["/bin/sh", "-ec", "python3 manage.py makemigrations && python3 manage.py migrate && httpd-foreground"]
envFrom:
- configMapRef:
name: django-dev
# mysql-pod : 생성 후 장고에서 접속할 데이터베이스 만들어주기
apiVersion: v1
kind: Pod
metadata:
name: mysql-pod
labels:
app: mysql-pod
spec:
containers:
- name: container
image: mysql:8.0.32-debian
envFrom:
- configMapRef:
name: mysql-dev
● 할당받은 외부 엔드포인트 주소로 접속 ~
아 제목이 왜 로드밸런싱이냐면 ~ 이 파드 4개 만들었걸랑요
4개로 로드밸런싱 된답니다 !
'CLOUD > Docker&Kubernetes' 카테고리의 다른 글
[Kubernetes] Controller - ReplicaSet (0) | 2023.04.26 |
---|---|
[Kubernetes] Service - 롤링 업데이트 (0) | 2023.04.25 |
[Kubernetes] Service - LoadBalancer (0) | 2023.04.25 |
[Kubernetes] Nginx - Gunicorn - Mysql 3계층 연동하기 (Pod/ConfigMap/Service) (2) | 2023.04.24 |
[Kubernetes/CentOS] 쿠버네티스 환경 구축하기 (0) | 2023.04.21 |