Kubevirt를 활용한 VM 및 컨테이너 통합 관리 프로젝트 8 / Web 컨테이너와 DB VM 연결
1) Web 컨테이너와 DB VM연결 아키텍처
마이그레이션한 DB VM은 local-storage 네임스페이스에 존재하고, OKD에서 생성한 웹 컨테이너는 default 네임스페이스에 존재한다. 이렇게 네임스페이스가 다르면 둘을 연결할 수가 없다는 문제가 생긴다. 따라서 default 네임스페이스에 mariaDB 서비스를 하나 더 생성하여 externalName으로 local-storage에 있는 mariaDB 서비스와 연결될 수 있도록 구성했다. 즉, 사용자가 워드프레스 서비스인 wp-svc에 NodePort를 통해 접속을 하면, default의 mairaDB 서비스가 externalName을 통해 실제 DB-VM이 있는 네임스페이스의 서비스로 연결되어, 웹 컨테이너와 DB VM을 연동시킬 수 있다.
2) Web 컨테이너와 DB VM 연결 과정
마이그레이션한 DB VM을 실행하면 파드가 생성되고, 그 파드는 이제 db로써 작동하고 있다. VM Pod 내의 프로세스를 확인해보면, libvirt 데몬과 virt-launcher가 떠 있는 것이 확인된다. 현재 DB 파드는 local-storage 네임스페이스에 생성되어 있다.
워드프레스 디플로이먼트를 생성하기 전, DB 파드와 같은 네임스페이스에 서비스를 생성해준다. local-storage에서 mariadb 라는 이름으로 서비스를 생성하여, 3306 포트, 타겟포트는 동일하게 3306으로 열어준다.
default 네임스페이스에 생성될 wordrpess 컨테이너와의 연동을 위해서는 default에도 mariadb 라는 이름으로 서비스를 생성하여 서로 다른 네임스페이스 간 통신을 가능하게 해주어야 한다. YAML 파일에서 externalName에 실제 DB 파드가 속한 서비스의 FQDN을 지정해줌으로써, DNS를 통해 해당 서비스를 찾아갈 수 있게 된다.
wordpress를 단일의 replica를 설정한 후에 yaml 파일을 통해서 배포한다.
그러면 1개의 워드프레스 파드가 생성된 것을 볼 수 있다. 생성된 파드의 YAML의 컨테이너 환경 변수에는 연결할 DB HOST와 PASSWORD를 해주어야 한다. 이때 DB HOST는 local-storage의 mariaDB 서비스의 FQDN을 입력해준다.
다음으로 워드프레스 파드를 외부에 노출하기 위한 방법으로 NodePort 타입의 서비스를 생성한다. NodePort는 삼만번대로 지정해준다.
OKD에서 이렇게 구성을 마치면 웹브라우저에서 워드프레스 웹서비스를 확인할 수 있다. 워드프레스 파드 생성 시 지정한 삼만 번대의 NodePort를 이용하면 OKD에서 구성한 Mater 노드 3개 중 어떤 노드의 IP로 접속해도 동일한 화면을 얻을 수 있다. 이러한 방법으로 워드프레스 서비스 구동을 손쉽게 확인가능하다.