728x90
목차
쿠버네티스 설치부터 서비스 배포까지 - 1.도커 설치
쿠버네티스 설치부터 서비스 배포까지 - 2.쿠버네티스 설치
쿠버네티스 설치부터 서비스 배포까지 - 2-1. 쿠버네티스 재설치
쿠버네티스 설치부터 서비스 배포까지 - 3.쿠버네티스 Ingress Nginx 생성
쿠버네티스 설치부터 서비스 배포까지 - 4.NFS 설치
쿠버네티스 설치부터 서비스 배포까지 - 5.데이터베이스 설정
쿠버네티스 설치부터 서비스 배포까지 - 6.프론트엔드 설정
쿠버네티스 설치부터 서비스 배포까지 - 7.백엔드 설정
쿠버네티스 설치부터 서비스 배포까지 - 8.결과화면
5.데이터베이스 설정
해당 파트 참고 URL
- https://kubernetes.io/ko/docs/tutorials/stateful-application/mysql-wordpress-persistent-volume/
- https://kubernetes.io/ko/docs/concepts/configuration/configmap/
- https://kubernetes.io/ko/docs/concepts/configuration/secret/
cd /home/kube
- 도커로 이미지 빌드 생성 시 다음과 같이 env 파일을 만들어 사용 가능합니다.
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=toy
MYSQL_USER=user
MYSQL_PASSWORD=password
MYSQL_ROOT_PASSWORD=password
- 우리는 쿠버네티스의 방법인 seceret과 configmap을 사용 해보겠습니다.
시크릿 키 생성 전 password base64 Encode
- 아래 password가 비밀번호이며 기본적으로 쿠버네티스로 시크릿 키를 사용할 경우 자동 디코딩 된다
echo -n password | base64
Mysql용 시크릿 키 생성
sudo vim toy_mysql_secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: mysql-secret
type: Opaque
data:
password: cGFzc3dvcmQ=
root_password: cm9vdA==
kubectl apply -f toy_mysql_secret.yaml
kubectl get secret
생성 확인
Mysql용 컨피그맵 생성
sudo vim toy_mysql_config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mysql-config
data:
host: "localhost"
port: "3306"
database: "toy"
user: "user"
kubectl apply -f toy_mysql_config.yaml
kubectl get configmap
생성 확인
Mysql용 PV, PVC 생성
sudo vim toy_mysql_pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: nfs-client
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/nfs_share"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
kubectl apply -f toy_mysql_pv.yaml
kubectl get pv,pvc
생성 확인
Mysql Service && deployment
sudo vim toy_mysql.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql-service
spec:
selector:
app: mysql
type: NodePort
ports:
- protocol: TCP
port: 3306
nodePort: 31002
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mysql-deployment
spec:
selector:
matchLabels:
app: mysql
strategy:
type: Recreate
replicas: 1
template:
metadata:
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:8.0.28
ports:
- containerPort: 3306
env:
- name: MYSQL_HOST
valueFrom:
configMapKeyRef:
name: mysql-config
key: host
- name: MYSQL_PORT
valueFrom:
configMapKeyRef:
name: mysql-config
key: port
- name: MYSQL_DATABASE
valueFrom:
configMapKeyRef:
name: mysql-config
key: database
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: mysql-config
key: user
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: root_password
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: mysql-secret
key: password
volumeMounts:
- name: mysql-config
mountPath: "/config"
readOnly: true
- name: mysql-persistent-storage
mountPath: /var/lib/mysql
volumes:
- name: mysql-config
configMap:
name: mysql-config
items:
- key: "host"
path: "host"
- key: "port"
path: "port"
- key: "database"
path: "database"
- key: "user"
path: "user"
- name: mysql-persistent-storage
persistentVolumeClaim:
claimName: mysql-pv-claim
kubectl apply -f toy_mysql.yaml
kubectl get deploy,svc,pod
생성 확인
728x90
'Infrastructure > Docker & Kubernetes' 카테고리의 다른 글
쿠버네티스 설치부터 서비스 배포까지 - 7.백엔드 설정 (0) | 2022.05.05 |
---|---|
쿠버네티스 설치부터 서비스 배포까지 - 6.프론트엔드 설정 (0) | 2022.05.05 |
쿠버네티스 설치부터 서비스 배포까지 - 4.NFS 설치 (0) | 2022.05.05 |
쿠버네티스 설치부터 서비스 배포까지 - 3.쿠버네티스 Ingress Nginx 생성 (0) | 2022.04.30 |
쿠버네티스 설치부터 서비스 배포까지 - 2-1. 쿠버네티스 재설치 (0) | 2022.04.19 |