본문 바로가기

클라우드/AWS

AWS EKS

반응형

GCP에서 사용하던 GKE의 AWS에서는 EKS라고 불리는 쿠버네티스 서비스를 사용한다고 한다.

 

오늘은 GKE에 구성했던 Jenkins 설정을 AWS EKS로 이전해보는 과정을 해보았다. (마이그레이션이라 할 수있을까?)

 

먼저 데이터를 이전시켜야 해서 GCP PV Disk -> AWS EBS로 이관하고 싶었는데 AWS -> GCP의 경우는 구글에서 가이드로 제공해주는게 있어서 찾기 쉬웟는데 반대의 경우는 못찾거나 유료 시스템인 것 같았다.

 

그래서 디스크를 GCP VM에 마운트한 후 GCS에 올려서 다운 받아 이동하기로 하였다.

 

EKS에 클러스터는 여러 사이트를 통해 구성해두었고  Jenkins 설정도 yml 파일로 구성해두었다. 다만 EBS 디스크를 EKS PV에 설정하는 작업을 해보지 않아 이부분만 찾아보고 작업하였다.

 

여기서도 동일하게 가져온 데이터를 EC2 VM에 추가 디스크로 EBS를 붙이고 Filezilla 프로그램을 이용하여 sftp 전송을 통해 로컬 파일을 전송하였다.

 

이후에 CSI 설정을 통해 PV에 EBS 디스크를 붙일 수 있었고 동일하게 기존 GKE에 구성한 젠킨스 정보가 그대로 넘어오게 되었다. 

 

Jenkins 설정은 Jenkins_home 디렉토리 역할이 되는 PV 설정만으로도 기존 설정 정보를 복구가 가능하다.

 

구성에 사용한 yml 파일은 검색을 통해 찾아왔고 기초 정보로 구성하는거라 사용법만 파악하면 된다고 생각한다.

일부는 수정하여 사용하였다.

 

사용한 파일 모음을 첨부하였다.

AWS EKS Jenkins yaml 파일.zip
0.00MB

 

이번 공부하면서 배운게 기존에 나는 Cluster IP, LoadBalancer 옵션으로만 서비스를 생성했는데 NodePort가 정확히 어떤 역할을 하는 옵션인지 몰랐다. 

하지만 이번에 사용하면서 Cluster IP 기준으로 접근이 가능한 포트를 지정하고 그 포트를 NodePort라고 부르고 클러스터IP:NodePort로 접근하면 해당 서비스로 접근이 가능하다는 걸 알게되었다.

 

 

Jenkins Service 정보

따라서 해당 이미지에서는 NodePort로 서비스를 생성하였고 노드 포트를 32000번으로 지정하였다. 클러스터IP:32000으로 접근을 하게되면 서비스에서 8080으로 보내 Jenkins 접근이 가능하도록 하는 것이다.

 

 

Jenkins Deployment 정보

Jenkins를 Deployment 형식으로 올리게 되었고 정보에 보면 볼륨 부분에 EBS로 연결된 PVC가 적용되어 있는 걸 볼 수 있다.

 

 

CSI를 통해 EBS 볼륨을 연결한 PV

PV 정보를 보면 드라이버에 ebs.csi.aws.com을 사용하였고 볼륨 핸들에 들어가는 정보가 EBS의 볼륨 ID가 들어가게되는 것이다. 

따라서 PV 생성 yml 작성 시 드라이버, 볼륨 핸들, 파일 시스템 유형을 기재하면 해당 정보와 맞게 PV가 생성되게 된다.

 

PV 생성 후 PVC에 연결하게 되는데 클레임 정보에 보면 연결된 PVC 정보가 나오게 된다.

 

PV와 연결된 PVC 정보

PVC 정보에서는 연결된 볼륨이 보이고 스토리지 크기 및 클래스 정보가 보인다. 

 

 

처음 접속 Jenkins 이미지

처음 접속 시 원래 데이터를 가져오지 않고 설정했다면 해당 화면이 나오는 것이 아니라 Jenkins 초기 패스워드 입력 란 및 플러그인 설치 화면이 나오게 된다. 하지만 나는 GCP에서 설정했던 GKE Jenkins 데이터를 가져왔기 때문에 해당 데이터가 나오게 되었다. 

접속 이미지

기존에 테스트하던 workspace 정보가 나오게 되고 환경 변수 및 플러그인도 전부 그대로 넘어오게 된다.

 

일단 임시로 늦어서 여기서 마무리하겠다.

 

어느 정도 AWS 기술들을 사용해보고 나서 해당 기술들은 테라폼으로 구현해보려고한다. 이후 GCP도 테라폼으로 구현하려고 하는데 모듈화하는과정 및 버전관리, 자동화 등등 고려사항이 많아 쉽지 않을 것 같다.

반응형