개발/Cloud

[네이버 클라우드] 멀티클라우드를 여행하는 개발자를 위한 안내서 (1)

김키쿠 2023. 12. 10. 18:44

클라우드 컴퓨팅은 참 매력적인 기술이다. 발전하는 IT 생태계에서 강력한 인프라를 제공할 수 있는 방법으로 이미 많은 회사들이 클라우드를 도입하고 있다. 물론 온프레미스 환경과 클라우드 환경을 잘 비교해 서비스에 알맞은 환경을 구축하는 것이 좋지만 발전하는 보안 기술과 규모의 경제로 인해 클라우드의 파이가 더 커질 것이라고 생각한다.
 

Multi-Cloud

 
현재 AWS, Google Cloud, Microsoft Azure 같은 플랫폼을 통해 다양한 클라우드 서비스를 이용할 수 있는 상황에서 하나의 플랫폼만 이용하지 않고 다양한 플랫폼을 이용하는 경우도 많다고 한다. Cloudforet은 이런 다양한 클라우드 플랫폼을 관리하는 플랫폼으로 리눅스 재단에 오픈소스 프로젝트로 등록되어 관리되고있다.
https://cloudforet.io/ko/

 

Home

멀티 클라우드 환경에서 클라우드 리소스와 비용을 클라우드포레로 관리할 수 있습니다. AWS, Azure, 구글 클라우드, 오라클, 알리바바 등 다양한 클라우드 서비스를 지원합니다.

cloudforet.io

cloudforet

 

하지만 Cloudforet은 다양한 플랫폼을 지원하지만 아직 네이버 클라우드에 관련된 기능은 제공하고 있지 않은 상황이다.
 

멋져~

 
이번에 네이버 클라우드에서 세종에 엄청 큰 데이터센터도 지었고 하이퍼클로바라는 LLM도 만들었는데 사업이 잘 되서 글로벌 CSP로서 입지를 굳게 다졌으면 하는 바람이다. 아무튼 Cloudforet에서 네이버 클라우드를 지원하면 좋을것 같아서 오픈소스에도 기여할 겸 관련 프로젝트를 진행해보려 한다.
 

Cloudforet MSA

 
Cloudforet은 쿠버네티스 환경에서 마이크로서비스 형태로 구성이 되어있는데 위 사진처럼 네이버클라우드에 관련된 리소스를 각 서비스안에 만들어주면 된다. 그 중 가장 큰 작업은 Inventory 서비스에서 네이버 클라우드의 리소스를 수집하는 플러그인을 개발하는 작업이다.
 

NKS를 활용한 운영 환경 구성하기

우선 개발 전에 운영 환경을 구성해야한다. 네이버 클라우드 관련 프로젝트인만큼 전체적인 인프라를 네이버 클라우드를 통해 구성했다. NKS(Ncloud Kubernetes Service)는 Kubernetes를 기반으로 컨테이너화된 애플리케이션을 배포하고 관리할 수 있게 해주는 서비스다. AWS EKS와 비슷한 서비스라고 이해하면 될 거 같다. 확실히 관리형 서비스를 통해 Kubernetes를 구성하게 되면 노드 관리나 모니터링이 편리하다는 장점이 있다.
 
 

NKS

 
 
네이버 클라우드는 특이하게 플랫폼을 Classic과  VPC로 나누었는데 Classic이 살짝 생소하다. 간단하게 말하면 사용자가 직접 네트워크 구축을 하지 않고 가상 머신을 사용할 수 있는 버전이라고 보면 된다. 예를 들면 AWS EC2 서버를 VPC 생성 없이 만들 수 있는 셈이다. AWS도 예전에 EC2-Classic이라는 인스턴스 유형이 있었다고 하는데 이는 네이버 클라우드의 Classic과 같다고 보면 될 거 같다. 확실히 사용하기에는 편하지만 세밀한 네트워크 제어가 힘들기 때문에 VPC 버전의 NKS를 사용하기로 했다. 그럼 시작해보자.
 

1. VPC & Subnet 만들기

우선 NKS 클러스터를 생성하기 위한 가상의 공간이 필요하다. Naver Cloud VPC와 Subnet을 통해 공간을 만들어줄 수 있다.
 

VPC Architecture

 
네이버 클라우드 서울 리전에 VPC를 만들고 고가용성을 위해 KR1, KR2 멀티 존으로 구성해 서브넷을 나누었다. 서브넷은 로드밸런서용 서브넷과 실제 노드들이 위치할 서브넷으로 구성했다.
 

Naver Cloud VPC & Subnet

 
네이버 클라우드에서 이런 식으로 서브넷을 나눌 수 있는데 AWS랑 되게 비슷한 느낌이다. 오히려 좋아
 

2. NKS 클러스터 생성하기

이제 생성한 VPC에 NKS 클러스터를 만들어주자. 동시에 클러스터를 제어하기 위한 Kubectl도 설치하면 된다.
 

NKS Architecture

 
위 사진처럼 Public Subnet에 worker node를 2개 구성했다. 그런데 NKS는 멀티 존을 지원하지 않는다고 한다! 그래서 KR1 존만 사용하는 상황이 되부렀다.
 

 
클러스터가 만들어지는걸 기다리며 NKS에서 사용하기 위한 IAM을 만들어야 한다. 그래야 kubectl을 통해 NKS에 접근할 할 수 있기 때문. IAM을 통해 kubectl 명령을 사용하려면 ncp-iam-authenicator를 설치하고 kubeconfig 파일을 수정해야 한다. 자세한 방법은 공식 가이드를 참고.
 
https://guide.ncloud-docs.com/docs/k8s-iam-auth-ncp-iam-authenticator

 

ncp-iam-authenticator 설치

 

guide.ncloud-docs.com

https://guide.ncloud-docs.com/docs/k8s-iam-auth-kubeconfig

 

IAM 인증 kubeconfig 생성/업데이트

 

guide.ncloud-docs.com

.kube/config

 
대충 이렇게 되어있으면 적용이 잘 되었다는 뜻.

3. Cloudforet 설치하기

'kubectl get no' 명령어를 통해 정상적으로 작동하는것을 확인했다. 다음은 Cloudforet을 지금까지 구성한 쿠버네티스 환경에 올릴 차례다. 설치는 Cloudforet 공식 가이드를 보면서 진행했다. 다만 가이드랑 좀 다른 부분이 있는데 minikube를 설치하지만 이미 NKS로 쿠버네티스 환경을 만들었기 때문에 이 부분은 건너뛰었다.
 
https://cloudforet.io/docs/setup_operation/installation/on_premise/

 

On Premise

This section describes how to install CloudForet in an On-Premise environment.

cloudforet.io

 
현재 helm chart로 배포시, console-api-v2-rest 서비스가 ClusterIP로 생성된다. 여기서 NKS의 Ingress를 사용하려면, NodePort 방식을 사용해야한다. 따라서, console-api-v2-rest의 서비스 Type을 NodePort로 변경했다.

apiVersion: v1
kind: Service
metadata:
  name: console-api-v2-rest
  namespace: spaceone
spec:
  ports:
  - name: rest
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    spaceone.service: console-api-v2-rest
  type: NodePort

 
이와같이 yaml 파일을 작성하고 kubectl apply를 통해 변경을 적용했다.
 

4. Ingress 배포하기

Cloudforet 설치가 되었으니 클러스터 외부의 요청을 클러스터 내부의 서비스로 연결해줘야 한다. 즉 Kubernetes 클러스터의 입구 역할을 하는 것이 Ingress다. Ingress는 일반적으로 HTTP 요청에 대한 외부 액세스를 관리하고 Load Balancing, SSL, 이름 기반 가상 호스팅을 제공한다.
 

Kubernets Ingress

 
 
Ingress역시 manifest를 작성해 배포했다.
 

Naver Cloud Load Balancer

 
manifest 적용이 되었다면 이렇게 네이버 클라우드 콘솔 Load Balancer 화면에 잘 생성이 된 모습을 볼 수 있다.

 

5. DNS 설정하기

마지막으로 도메인 이름만 적용해주면 끝이다. 방법은 네이버 클라우드의 Gloabal DNS 기능을 활용하면 된다.
 

Naver Cloud Global DNS

다 만들면 이런 느낌. 도메인 이름은 비밀.
 

 
도메인 이름이 적용된 주소를 가지고 접속해보면 우리가 앞으로 사용할 Cloudforet Spaceone 플랫폼 화면이 잘 등장한다. 운영 환경 구성은 잘 되었으니 이제 네이버 클라우드 서비스들을 공부하고 API를 가져다 플러그인을 만들어 봅시다. 기대가 참 되는고만~~ 투비컨티뉴.