Cloud Platform/Naver Cloud

[NCP] Ncloud Kubernetes Service 사용하기(+ Container Registry 사용 까지) - 1편

코끼리 개발자 2024. 3. 19. 15:38
728x90
SMALL

 

 

프로젝트를 진행하면서, 롤링 업데이트 배포 전략을 사용하기 위해

F-Lab을 통해 네이버 클라우드 플랫폼 에서 사용할 수 있는 크레딧을 제공 받아NCP에서 제공해주는 쿠버네티스를 이용해 보았다.
진행 중에 내 입맞에 맞는 알맞는 가이드를 잘 못찾아서 해결하느라 정말 오랜 시간이 걸렸었다..!
다음에 적용할 때는 내 포스트를 보고 빠르게 적용할 수 있도록 정리해보고자 한다!

 

모든 작업은 Platform VPC에서 작업한 내용이다.



우선 구성하고자 하는 서버 구조는 이러하다

서버 구조 이미지

- Container Registry
: 배포하고자 하는 docker image를 push할 저장소

 

- Ncloud Kubernetes Service
: 쿠버네티스를 편리하게 사용할 수 있도록 NCP에서 제공하는 쿠버네티스 서비스이며 노드는 2개로 구성하고자 한다.

여기서 Node란 pod를 hosting 해서 사용할 수 있도록 하는 서버 이다.

 

- Kubernetes 접속 Server
: master node에 직접 ssh 접속이 불가능하기 때문에 kubernetes에 접속할(kubectl을 통해 클러스터와 상호 작용 할) 서버가 한대 필요하다.

 

- Database Server

: 나의 경우는 또 다른 서버를 구성하여 내부에 Mysql 서버를 Master / Slave 구조로 docker image를 통해 구성해놓은게 있어서 해당 서버와 pod로 올라간 애플리케이션이 통신할 수 있어야 했다 필요 없다면 생략 가능하다.

 


 

1. Container Registry 구성

 

개발한 애플리케이션을 배포하기 위해 우선 애플리케이션 이미지를 업로드할 저장소가 필요하다.

굳이 NCP에서 제공하는 Container Registry를 사용하지 않고도 docker hub를 이용하여 작업 가능하지만, 

이번 포스트에서는 NCP에서 제공하는 것을 사용해서 진행해 보려고 한다.

 

- Bucket 생성 

Storage < Object Storage < Bucket Management

원하는 버킷 이름을 작성.

 

설정관리는 원하는 대로 하면 된다. 

 

권한은 원하는 계정에 부여할 권한들을 체크 한다. 

sub Account가 있다면 추가해주시고 없다면 다음을 누르면 된다 위에 설명을 보면

소유자의 권한은 자동으로 추가되며 모든 권한이 부여된다고 되어있다.

현재 생성하기위해 로그인한 계정은 소유자 계정이므로 현재 계정으로 모든 것을 수행할 예정이라면 

다음을 눌러 넘어가도 된다! 

 

전체 공개 의 경우 필요에 따라 선택하면 된다.

 

최종 확인을 한 후 버킷 생성 버튼을 눌러 생성!

생성 후 위의 내용들은 수정이 가능하니 추가 작업을 진행하면 된다.

 

- Container Registry 생성 

Containers > Container Registry

 

레지스트리 생성하기 버튼을 눌러 새로운 레지스트리를 추가한다.

원하는 레지스트리 이름을 작성하고

버킷은 위에서 생성한 버킷을 선택하여 생성 버튼을 누르면 완료이다!

 

다음과 같이 생성 후 public Endpoint와 private Endpoint 및 login 접속 명령어가 출력 된다.

이 후 쿠버네티스에서 pod로 pull 받을 이미지 작성 시 위의 Endpoint가 필요하니 미리 복사해 두면 좋다!

 


2. VPC 생성

 

- VPC 생성

Networking > VPC > VPC  Management

 

 

Naver Cloud Platform에서 VPC 환경 사용을 위해 VPC 생성하여 서브넷 구성을 해야 한다.

* VPC의 IP 주소 범위는, private 대역(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) 내에서 /16~/28 범위여야 합니다. *

위의 설명에 따라 private 대역에 맞게 범위를 적용해 주면 된다.

IP는 꼭 저렇게 안해도 되고 원하는 IP 대역을 private 대역 내 /16 ~ /28 범위에 맞게 설정해주면 된다.

/16은 왼쪽 . 기준으로 두개를 고정하겠다는 의미


- Subnet 생성

Networking > VPC > Subnet Management

 

여기에서 생성할 Subnet은 총 5개 이다.

1. Load balancer에 사용할 것 public, private 한개씩 - 총 2개

2. Kubernetes 접속 Server에 사용할 것 - 1개

3. Kubernetes에 할당할 것 - 1개

4. Nat Network를 위한 것 - 1개

 

 

* Subnet 이름 : 자유롭게 작성

* VPC: 위에서 생성했던 VPC 선택

* IP 주소 범위 : VPC 범위 내에서 선택 

* 가용 Zone: 서버 생성할 Zone 선택

* Network ACL : default 선택

* Internet Gateway 전용여부: kubernetes와 loadbalancer private 외 모두 public

* 용도 : LoadBlancer 용도는 LoadBlancer 선택 NatGatway는 NatGateWay선택 일반 서버는 일반 선택

 

위 사진과 같이 적용하면 된다 IP는 자유이지만 우선 테스트 용으로 진행한다면 동일하게 구성해도 무관하다.

 


3. Ncloud Kubernetes Service 생성

Networking > VPC > Subnet Management

 

생성하기 버튼을 눌러 생성을 시작한다. 

원하는 클러스터 이름을 기입하고 아래와 같이 설정해주면 된다.

다음 버튼을 누르면 안내 메세지가 다음과 같이 팝업으로 뜬다

 

이 내용은 기억해 두었다가 생성하도록 하겠다.

우선은 확인 버튼을누르고 넘어가자.

 

원하는 서버 스펙과 노드 풀 이름을 기입하고 이 페이지 첫 장에 그렸던 서버 구조도와 같이 노드는 2개로 설정하겠다.

 

완료 되었다면 추가 버튼을 눌러

좌측에 추가된 노드가 확인되도록 한다.

 

가지고 있는 인증키가 있다면 보유하고 있는 인증키 이용을 하고, 없다면 새로운 키 생성을 해서 꼭 가지고 있자!

 

다음을 누르면 최종 확인이 뜨는데, 입력한 정보가 틀리지 않았는지 확인 후 생성하기 버튼을 누른다.

 

생성까지는 꽤 오랜 시간이 걸린다 5~10분 정도 소요 되었던 것 같다 기다리면서 다른 작업을 진행하자!


 

4. NAT Gatway 설정

VPC > NAT Gateway 

 

위의 클러스터 생성 시 팝업으로 안내가 떴던 것 처럼 Nat Gatway를 추가하도록 하겠다.

이전에 생성해두었던 VPC와 NAT Gatway전용 subnet을 할당해주면 된다. 

유형은 공인으로 선택했고 이름은 자유롭게 기입한 후 생성 버튼을 누른다.

 

생성된 NAT Gatway는 Route Table에 추가해주어야 한다.

VPC > Route Table을 눌러 페이지 접속 후 해당 vpc를 선택하고 상단의 Routes 설정 버튼을 누른다

이렇게 추가해 주면 된다.


5. 서버 생성하기

 

원하는 스펙의 서버를 만들면 되는데 나의 경우 standard, CentOS 7.8 을 선택했다.

이제 서버 설정을 해주면 되는데 이전에 만들어 두었던 서버 전용 subnet과 vpc를 연결해 주면 된다.

비용 절약을 위해 서버 스펙을 저렇게 설정했지만 원하는 대로 설정하면 된다.

 

아까 클러스터 생성 시 만들어둔 인증키를 선택해도 괜찮고 서버는 따로 인증키를 사용하고싶다면 생성 후 저장해두자

 

ACG는 kubernetes-vpc-default를 사용한다.

 

완료가 되었다면 다음 버튼을 눌러 생성한다.

여기까지 필요한 준비가 완료 되었고 2편 부터는 서버에 접속하여 kubectl을 통해 pod를 띄워보도록 하자!

 

 

 

 

[NCP] Ncloud Kubernetes Service 사용하기(kubectl 사용하여 pod 생성하기) - 2편

1편에 이어 2편에서는 cluster와 상호작용하기 위해 서버에 접속하여 pod를 생성하는 작업을 진행해보려고 한다. *pod 내부에서 외부로 접속되지 않는 현상으로 인해 문제가 있었고 이를 해결하는

elephant-dev.tistory.com

 

728x90
LIST