apiVersion: v1
kind: ConfigMap
metadata:
name: rabbitmq-cm
data:
RABBITMQ_DEFAULT_VHOST: "my_vhost"
RABBITMQ_DEFAULT_USER: "user"
RABBITMQ_DEFAULT_PASS: "qwer1234"
apiVersion: apps/v1
kind: Deployment
metadata:
name: rabbitmq-deployment
spec:
selector:
matchLabels:
type: rabbitmq
replicas: 1
template:
metadata:
labels:
type: rabbitmq
spec:
containers:
- name: rabbitmq
image: rabbitmq:latest
envFrom:
- configMapRef:
name: rabbitmq-cm
apiVersion: v1
kind: Service
metadata:
name: rabbitmq-svc
spec:
selector:
type: rabbitmq
ports:
- port: 5672
name: message-que
targetPort: 5672
- port: 15672
name: dashboard
targetPort: 15672
type: LoadBalancer
ALLOWED_HOSTS = ['*',]
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['DBNAME'],
'USER': os.environ['DBUSER'],
'PASSWORD': os.environ['DBPASS'],
'HOST': os.environ['DBHOST'],
'PORT': os.environ['DBPORT'],
}
}
params = pika.URLParameters(os.environ['RABBITMQURL'])
params = pika.URLParameters(os.environ['RABBITMQURL'])
apiVersion: v1
kind: ConfigMap
metadata:
name: admin-db-cm
data:
MYSQL_ROOT_PASSWORD: 'qwer1234'
MYSQL_DATABASE: 'admin-db'
apiVersion: v1
kind: ConfigMap
metadata:
name: admin-cm
data:
DBNAME: "admin-db"
DBUSER: "root"
DBPASS: "qwer1234"
DBHOST: "127.0.0.1"
DBPORT: "3306"
RABBITMQURL: "amqp://user:qwer1234@rabbitmq-svc/my_vhost"
apiVersion: apps/v1
kind: Deployment
metadata:
name: admin-deployment
spec:
selector:
matchLabels:
type: admin
replicas: 1
template:
metadata:
labels:
type: admin
spec:
nodeSelector:
kubernetes.io/hostname: node1
containers:
- name: admin-db
image: mysql:8.0.32-debian
volumeMounts:
- name: admin-db
mountPath: /var/lib/mysql
envFrom:
- configMapRef:
name: admin-db-cm
- name: admin
image: ddarahakit2023/admin:1.0
startupProbe:
tcpSocket:
port: 8000
initialDelaySeconds: 10
periodSeconds: 10
command: ["/bin/sh", "-ec", "python manage.py makemigrations && python manage.py migrate && python manage.py runserver 0.0.0.0:8000"]
volumeMounts:
- name: admin-path
mountPath: /app
envFrom:
- configMapRef:
name: admin-cm
- name: admin-consumer
image: ddarahakit2023/admin:1.0
command: ["python", "-u", "consumer.py"]
volumeMounts:
- name: admin-path
mountPath: /app
envFrom:
- configMapRef:
name: admin-cm
volumes:
- name : admin-path
hostPath:
path: /admin-app
type: DirectoryOrCreate
- name : admin-db
hostPath:
path: /admin-db
type: DirectoryOrCreate
apiVersion: v1
kind: Service
metadata:
name: admin-svc
spec:
selector:
type: admin
ports:
- port: 8000
targetPort: 8000
type: LoadBalancer
그 후, 로드밸런서에서 발급해준 ip에 8000번 포트로 접속해서 api/products로 가보면 drf UI가 나오게 된다.
drf는 JSON 형식으로 통신하기 때문에, 데이터를 집어넣기 위해서는 JSON 형식으로 데이터를 직접 작성해서 넣어준다.
예를 들어
{
"title" : "hi1",
"image" : "img01"
}