본문 바로가기

프로그래밍/Samsung Cloud Platform

Samsung Cloud Platform(SCP) Tutorial 3 - Container

서론

기본적인 준비는 끝났으니, SCP에서 사용하는 Kubernetes 관리 시스템인 Kubernetes Engine을 다루는 방법에 대해 알아보자.

 

Kubernetes Engine 생성

자원관리 → Container  Kubernetes Engine → 클러스터  상품신청을 클릭한다.

 

필수 정보 입력 후 생성한다.

  • 프라이빗 엔드포인트 접근 제어에서 사용을 눌러준 뒤, Bastion Host를 추가해준다.
  • 만약 이 작업을 하지 않을 경우 Bastion Host에서 해당 클러스터로 접근이 불가능하다.
  • 서브넷은 Private Subnet을 사용해준다.
  • Security Group은 기본적으로 Bastion Host와 다른 것을 사용해야 한다. 하지만, 튜토리얼이므로 동일한 Security Group을 사용하겠다.
  • File Storage를 생성하지 않았다면 자원관리 → Storage → File Storage 에서 생성하고 만들면 된다.

 

system 노드풀 추가

생성한 클러스터를 클릭해 클러스터 상세로 이동 → 노드 풀 탭 클릭 → 노드 풀 추가 → 노드 풀 구성을 한다.

이름은 system으로 지정해준다. 해당 노드 풀에는 Jenkins, Gitlab을 생성할 것이다.

 

Load Balancer 생성 및 등록

자원관리 → Networking → Load Balancer → 상품신청 → 필수 정보를 입력 후 생성한다.

현재는 Firewall 사용을 하지 않았는데, 실무에서는 Firewall 설정 후 규칙을 설정해야한다.

Load Balancer 생성이 완료되면 자원관리 → Container  Kubernetes Engine → 클러스터 → Load Balancer 아이콘을 클릭한 뒤 방금 생성한 Load Balancer를 등록한다.

 

 

Ingress Controller 생성

자원관리 → Container → Kubernetes Apps → 상품신청을 클릭한다.

 

네임스페이스를 설정해준다.



Nginx Ingress Controller Community를 선택 후 다음으로 넘어간다.

 

필수 정보 입력 후 생성한다.

 

Container → Kubernetes Engine → 서비스 및 인그레스 → 우측 상단에 클러스터와 네임스페이스 설정 후 조회 → 방금 만든 Nginx Ingress Controller 서비스 클릭

YAML 탭 클릭 → 편집 → 하단의 type을 NodePort에서 LoadBalancer 로 변경한다.

Pending 상태에서 외부 IP가 생성될 때까지 기다린다.

※ 만약 지속적으로 Pending 상태라면 클러스터에 Load Balancer를 등록했는지 확인해본다.

그래도 안된다면 클러스터에서 사용하는 VPC에서 Internet Gateway가 사용인지 확인한다.

 

DNS 설정

자원관리 → Networking → DNS → 상품신청 → 필수 정보 입력 후 생성한다.

DNS 생성 후 DNS 상세 → 레코드 → 레코드 추가 후 정보를 입력 후 생성한다.

이름은 devops, 유형은 A, 값은 위에서 생성한 Load Balancer의 외부 IP를 추가 후 등록한다.

 

Jenkins 생성

자원관리 → Container → Kubernetes Apps → 상품신청을 클릭 → 네임스페이스 설정 → Jenkins Community 선택

필수 정보 입력 후 생성한다.

External URL은 위에서 생성한 레코드 포함 DNS를 적어준다. 

예시)

External URL : http://devops.samsungsds.com/jenkins

Domain : devops.samsungsds.com

Class : nginx

 

생성 완료 후  해당 URL로 이동하면 Jenkins 로그인 화면이 나온다.

 

Gitlab 생성

자원관리 → Container → Kubernetes Apps → 상품신청을 클릭 → 네임스페이스 설정 → GitLab Community 선택

필수 정보 입력 후 생성한다.

External URL은 위에서 생성한 레코드 포함 DNS를 적어준다.

예시)

External URL : http://devops.samsungsds.com/gitlab

Domain : devops.samsungsds.com

Class : nginx

※ Password의 경우 "초기 Password는 /etc/gitlab/initial_root_password에서 확인하세요" 라고 나온다.

이는 생성한 Kubernetes에 접속한 뒤, kubectl exec로 Gitlab Pod에 접근한 뒤

cat /etc/gitlab/initial_root_password

명령어로 확인할 수 있다.

 

Container Registry 생성

자원관리 → Container Container Registry → 상품신청 → 필수 정보 입력 후 생성한다.

 프라이빗 엔드포인트 접근 제어를 사용하면 해당 레지스트리에 접근할 수 있는 Virtual Server를 제한할 수 있다. 미 사용시 모든 Virtual Server에서 접근이 가능하다.

퍼블릭 엔드포인트 접근 제어를 사용하여 IP로 제한을 할 수 있다. 미 사용시 모든 IP에 노출되어 보안 상 위험하다.

 

결과

 

Cluster, Jenkins, Gitlab, Registry까지 생성하면 Devops Console을 활용해 프로젝트 관리를 할 수 있다.

다음 챕터에서는 Devops Console에 대해 알아보겠다.