데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AKS usecase : 신속한 MySQL 개발환경

      broccoli 23.11.09
      1,090 21 0
      DEVOTEE 요약
      클라우드 리소스를 이용한 DB 개발과정을 통해 MySQL을 효율적으로 사용하는 방법을 제시했다. Azure 서비스에서 AKS를 활용해 MySQL을 배포하였고, ArgoCD와 HELM으로 설치 과정을 단축했다. 이를 통해 개발자에게 빠른 개발 환경을 제공하고, Azure database for MySQL서비스 비용을 절감하여 테스트에 리소스를 공급할 수 있었다.
      DEVOTEE 추천 블로그

      일반적으로 클라우드 리소스에는 시일이 소요된다

      개발과정에서 DB를 리소스로 편하게 사용하고자 하는 요구사항이 있다.

      mysql 가 필요한 경우에 대한 과정으로 살펴 본다.

      mysql 구성에 대해 요청은 접수portal을 통해서 MSP 작업 담당자에게 전달되어져야 한다.

      접수 이후에 MSP 작업 담당자가 할당된다. 벌써 몇 십분은 흘러간다. 작업 담당자는 요구사항을 한 번 더 점검한다.

      당일에 해소되기 어려운 절차라 빨라도 다음 날에야 클라우드 리소스를 제공 받는다.


      Agile한 방법은 있다

      이전 같으면 Azure의 서비스를 구성하는 것이 자연스러웠다.

      지금은 aks로 시스템을 론칭하여 활용하고 있으니 mysql서비스로 aks가 바로 생각났다.

      aks를 활용하여 개발 환경을 신속히 제공하는 방법에 대해 생각하던 차라 반가웠다.


      AKS에 몇 분만에 MySQL을 설치하다

      이미 argocd 환경은 구성되어 있다.

      repo를 우선 구성해야 한다. Artifact Hub 가 repo를 구성하는 허브로 알려져 있어 접속해서 확인해 보았다.

      image.png


      bitnami의 mysql을 선택하여 INSTALL을 클릭하면 repo 주소를 알 수 있다.

      image.png


      bitnami가 제공하는 repo URL은 https://charts.bitnami.com/bitnami 이다

      image.png


      MySQL 설치가 편리한 argocd 툴을 사용하자

      argocd에 해당 bitnami repo 주소를 이용해서 helm 방식으로 타겟 클러스터에 배포를 한다.

      image.png


      몇 분만에 mysql 설치를 완료할 수 있다. 기존의 소통하는 시간 정도면 완성이 되었다.

      image.png


      ArgoCD로 설치 과정에서 시행착오를 줄이자

      HELM으로 표시된 섹션의 mysql 구성 정보와 관련된 파라미터를 변경하면 사용자가 원하는 방식으로 mysql을 구성할 수 있다.

      ㅇ auth.rootPassword : mysql클라이언트가 접속시 root유저에 대한 패스워드 설정

      ㅇ port : mysql 데몬이 구동할 때 사용하는 포트 번호(일반적으로 3306이나 보안을 고려해서 포트번호를 변경해서도 사용)

      ㅇ service type : ClusterIP가 default

      - 이번 요구사항은 개발자가 자신의 로컬PC에서 접속 가능해야 하는 상황으로 외부로 서비스 노출이 가능하도록 LoadBalancer로 설정

      - primary, secondary 모두 LoadBalancer로 변경

      image.png


      MySQL 접속 테스트는 K9s 도구를 활용하자

      k9s를 통해 해당 mysql pod로 접속하여 아래와 같은 명령으로 설정했던 root패스워드로 접속 가능한지 확인 가능하다

      $ mysql -uroot -p 
      Enter password: <설정한 루트 패스워드>   


      설치한 MySQL에는 영구 스토리지도 있다

      mysql로 생성한 리소스를 모두 확인해 보면 pod, service가 보인다.

      pvc까지 할당된 것을 볼 수 있고, bitnami repo에서 제공하는 mysql은 스토리지 설정이 8GB 용량이다. (테스트나 개발에 사용하기에 충분한 스토리지 용량이다.)

      # mysql로 생성한 리소스 모두 확인 
      $ kubectl get all -n mysql
      NAME          READY   STATUS    RESTARTS   AGE
      pod/mysql-0   1/1     Running   0          12m
      
      NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
      service/mysql            LoadBalancer   10.0.228.191   <***********>   8808:30519/TCP   12m
      service/mysql-headless   ClusterIP      None           <none>          8808/TCP         12m
      
      $ kubectl get pvc -n mysql
      NAME           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
      data-mysql-0   Bound    pvc-d60db5dd-fc25-434d-8d49-00aa1d734aa9   8Gi        RWO            default        16h

      * 위의 EXTERNAL-IP는 보안을 위해 비식별화 표시


      보안성에 유의하자

      로컬PC에서 접속이 가능하여 편리하지만 보안성을 확보할 필요를 느낀다.

      LoadBalancer서비스 타입으로 pod를 생성을 하면 azure 에서 제공하는 MC리소스그룹에 자동으로 생성되는 nsg(network security group)에다 IP/port기반 접근제어를 설정한다.

      image.png


      정리

      개발자를 위한 mysql 개발 환경을 k8s 인프라로 설치하니 몇 분만에 제공할 수 있었다. 개발자들는 지금부터 약 3개월간 사용할 예정이다.

      k8s클러스터의 유휴 자원을 활용할 수 있고, mysql 오픈소스로 설치하였다.

      일반적인 Azure database for MySQL서비스 발생 비용을 절감하여 개발이나 테스트에 리소스를 공급할 수 있었다.

      보안성을 위해 개발자 소스IP 한정으로 접속이 가능하도록 제한은 해야 한다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      broccoli 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기