-
서비스를 외부로 노출하기 ( wordpress - mysql )클라우드 교육/kubernetes 2023. 1. 2. 17:53
시크릿 생성
pv ( mysql, wordpress ) 생성
pvc ( mysql, wordpress ) 생성
mysql ,wordpress deployment 생성
mysql ,wordpress service 생성
순으로 진행된다.
namespace는 test라는것을 만들어서 진행했다.
먼저 시크릿
password를 설정하기전에 자신의 password암호화를 한다.
아래처럼 입력하면 원하는 password의 암호화된 것을 얻을 수 있는데,
echo -n <password> | base64
저걸로 아래에 넣어준다.
#secret-mysql.yaml apiVersion: v1 kind: Secret metadata: name: mysql-root type: Opaque data: password: <secret password>
그리고 pv를 생성한다.
#pv-mysql.yaml kind: PersistentVolume apiVersion: v1 metadata: namespace: test name: pv0001 labels: type: local spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/wordpress-server/mysql"
#pv-wordpress.yaml kind: PersistentVolume apiVersion: v1 metadata: namespace: test name: pv0002 labels: type: local spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/wordpress-server/wordpress"
pvc파일
#pvc-mysql.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: test name: mysql-v spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
#pvc-wordpress.yaml kind: PersistentVolumeClaim apiVersion: v1 metadata: namespace: test name: wordpress-v spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi
mysql deployment
#mysql.yaml apiVersion: apps/v1 kind: Deployment metadata: namespace: test name: mysql labels: app: mysql spec: replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-root key: password - name: MYSQL_DATABASE value: k8sdb - name: MYSQL_USER value: k8suser - name: MYSQL_ROOT_HOST value: '%' - name: MYSQL_PASSWORD value: admin ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-v mountPath: /var/lib/mysql volumes: - name: mysql-v persistentVolumeClaim: claimName: mysql-v
mysql service
#mysql-service.yaml apiVersion: v1 kind: Service metadata: namespace: test name: mysql labels: app: mysql spec: type: ClusterIP ports: - port: 3306 selector: app: mysql
mysql service를 배포했으면, clusterip를 긁어서
wordpress deployment에 넣어준다.
#wordpress.yaml apiVersion: apps/v1 kind: Deployment metadata: namespace: test name: wordpress labels: app: wordpress spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - image: wordpress:4.8-apache name: wordpress env: - name: WORDPRESS_DB_HOST value: <mysql_service_port>:3306 - name: WORDPRESS_DB_NAME value: k8sdb - name: WORDPRESS_DB_USER value: k8suser - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-root key: password ports: - containerPort: 80 name: wordpress volumeMounts: - name: wordpress-v mountPath: /var/www/html volumes: - name: wordpress-v persistentVolumeClaim: claimName: wordpress-v
#wordpress-service.yaml apiVersion: v1 kind: Service metadata: namespace: test labels: app: wordpress name: wordpress spec: type: NodePort ports: - nodePort: 31000 port: 80 targetPort: 80 protocol: TCP selector: app: wordpress
이렇게 해주고 master node의 ip에 nodeport를 붙여주면 접속이 된다.
NFS 볼륨 사용
node1에
node2,3에는
mount -t nfs 192.168.108.22:/nfs-server ./nfs-server
pv.yaml
pvc.yaml
mysql.yaml
걍 mysql은 아래처럼 만들기
https://icarus8050.tistory.com/143
https://cleanupthedesk.tistory.com/16
'클라우드 교육 > kubernetes' 카테고리의 다른 글
redis를 이용해 방명록 생성 (0) 2023.01.04 쿠버네티스 모니터링 (1) 2023.01.03 테인트와 톨러레이션 (0) 2023.01.02 쿠버네티스 컨피그맵 / 시크릿 (0) 2022.12.29 서비스 리소스 (6) 2022.12.28