서론
기본적인 준비는 끝났으니, 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에 대해 알아보겠다.
'프로그래밍 > Samsung Cloud Platform' 카테고리의 다른 글
Samsung Cloud Platform(SCP) Tutorial 5 - EFK (0) | 2023.08.01 |
---|---|
Samsung Cloud Platform(SCP) Tutorial 4 - ArgoCD (0) | 2023.07.30 |
Samsung Cloud Platform(SCP) Tutorial 2 - Bastion Host 생성 (0) | 2023.07.09 |
Samsung Cloud Platform(SCP) Tutorial 1 - 기본 Network 설정 (0) | 2023.07.09 |
Samsung Cloud Platform(SCP) Tutorial 0 (0) | 2023.07.09 |