일요일에 심심해서 블로깅이나 해볼까 해서 서버를 좀 건들었어요
지금까지 해온 업무나 기술정리를 노션과 티스토리에 정리했는데 놀고있는 서버에 뭐라도 띄워볼까 했습니다..

마침 서버와 나스 둘다 있고..
Id 이름 상태
----------------------------------------------------
10 k8s-master 실행중
21 k8s-node2 실행중
22 k8s-node3 실행중
23 k8s-node1 실행중kvm으로 vm도 4개에 클러스터 잘 되어 있고..
NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 214d v1.21.1 k8s-node1 Ready <none> 214d v1.21.1 k8s-node2 Ready <none> 214d v1.21.1 k8s-node3 Ready <none> 132d v1.21.1
클러스터도 잘 돌아가고 있었죠!!
그래서 워드프레스와 MySQL 설치를 진행했습니다.
우선 시크릿을 만들고요!!
apiVersion: v1
data:
password: 비밀번호!!!
kind: Secret
metadata:
name: mysql-pass
namespace: wordpress그다음 NFS를 기반으로한 PV와 PVC를 만들어 줬어요!
apiVersion: v1 kind: PersistentVolume metadata: name: mysql-data-pv namespace: wordpress spec: accessModes: - ReadWriteMany capacity: storage: 50Gi claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: mysql-data-pvc namespace: wordpress nfs: path: /volume2/server_k8s_nfs/mysql server: *.*.*.* persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem status: phase: Bound --- apiVersion: v1 kind: PersistentVolume metadata: name: wordpress-data-pv namespace: wordpress spec: accessModes: - ReadWriteMany capacity: storage: 20Gi claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: wordpress-data-pvc namespace: wordpress nfs: path: /volume2/server_k8s_nfs/wordpress server: *.*.*.* persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem status: phase: Bound --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mysql-data-pvc namespace: wordpress spec: accessModes: - ReadWriteMany resources: requests: storage: 50Gi volumeMode: Filesystem volumeName: mysql-data-pv status: accessModes: - ReadWriteMany capacity: storage: 50Gi phase: Bound --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: wordpress-data-pvc namespace: wordpress spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi volumeMode: Filesystem volumeName: wordpress-data-pv status: accessModes: - ReadWriteMany capacity: storage: 20Gi phase: Bound
그리고 아주 잘 만들어졌습니다.
NAS와 통신도 잘 되고 이제 MySQL과 Wordpress를 만들어 보겠습니다.

다행히 이전에 저 클러스터에 MetalLB를 설치 해 두었고 자동으로 DHCP로부터 IP를 할당 받아 포트포워딩으로 볼 수 있습니다.
apiVersion: v1 kind: Service metadata: name: wordpress-lb namespace: wordpress labels: app: wordpress-web spec: ports: - port: 80 selector: app: wordpress-web tier: frontend type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-web labels: app: wordpress-web spec: selector: matchLabels: app: wordpress-web tier: frontend strategy: type: Recreate template: metadata: labels: app: wordpress-web tier: frontend spec: containers: - image: wordpress:4.8-apache name: wordpress-web env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 80 name: wordpress-web volumeMounts: - name: wordpress-persistent-storage mountPath: /var/www/html volumes: - name: wordpress-persistent-storage persistentVolumeClaim: claimName: wordpress-data-pvc --- apiVersion: v1 kind: Service metadata: name: wordpress-mysql namespace: wordpress labels: app: wordpress spec: ports: - port: 3306 selector: app: wordpress tier: mysql clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql namespace: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress tier: mysql strategy: type: Recreate template: metadata: labels: app: wordpress tier: mysql spec: containers: - image: mysql:5.6 name: mysql env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: mysql-pass key: password ports: - containerPort: 3306 name: mysql volumeMounts: - name: mysql-persistent-storage mountPath: /var/lib/mysql volumes: - name: mysql-persistent-storage persistentVolumeClaim:
요롷게 말이죠!!

위처럼 정상적으로 할당이 되었다면...

네! 페이지가 잘 나와요!!! 매우 만족스럽습니다. 그럼 모니터링을 위해 Istio로 사이드카를 붙여볼게요
사이드카 붙이는건 너무 쉽습니다. istio설치는 미리 해 두었어요! 그래서 라벨만 달아주면 자기가 알아서 사이드카를 구축합니다
kubectl label namespace [네임스페이스이름] istio-injection=enabled --overwrite근데 전 이상하게 아무리 기다려도 사이드카가 생성이 안되더라고요.. 그래서 참을성없던 저는 그냥 메뉴얼하게 붙여버렸습니다.
kubectl -n istio-system get configmap istio-sidecar-injector -o=jsonpath='{.data.config}' > inject-config.yaml kubectl -n istio-system get configmap istio-sidecar-injector -o=jsonpath='{.data.values}' > inject-values.yaml kubectl -n istio-system get configmap istio -o=jsonpath='{.data.mesh}' > mesh-config.yaml
위처럼 이스티오 컨피그를 쭉 뽑아내서
istioctl kube-inject \ --injectConfigFile inject-config.yaml \ --meshConfigFile mesh-config.yaml \ --valuesFile inject-values.yaml \ --filename mysql.yaml \ | kubectl apply -f - istioctl kube-inject \ --injectConfigFile inject-config.yaml \ --meshConfigFile mesh-config.yaml \ --valuesFile inject-values.yaml \ --filename wordpress.yaml \ | kubectl apply -f -
디플로이를 업데이트 해 주었습니다. 그러니 파드가 다시 생성되면서

키알리로 아주 예쁜 모니터링이 완성 되었습니다!!!
이제 SSL적용과 컨텐츠를 하나 둘 입력해야 겠네요...하하 Domain은 구매해서 DDNS로 연동해 놓았는데
빨리 만들어서 하나둘 채워넣고 싶군요!!