Apps에 시스템 등록 이후 필요한 작업들과 Nginx 서버를 배포하는 방법을 알아보도록 하겠습니다.

Apps 에서 시스템 등록이후 어떤 작업도 하지 않았다면 워크로드 배포를 위해 다음과 같은 작업이 필요합니다.

  1. 워크스페이스 & 사용자 생성
  2. 서비스 맵 생성
  3. Nginx 워크로드 생성

Apps 에서는 모든 워크로드는 워크스페이스의 서비스 맵 안에 생성할 수 있기 때문에, 두 작업이 먼저 완료 되어 있어야 기본적인 워크로드 배포할 수 있으며 워크스페이스 및 사용자 생성은 관리자 계정에서만 처리 가능 합니다.

1번, 2번 작업 완료후 등록된 사용자 계정으로 Nginx 이미지를 이용한 워크로드 배포를 진행 하겠습니다.

먼저  워크스페이스 & 사용자 생성에 대하여 알아 보도록 하겠습니다.

1. 워크스페이스 & 사용자 생성

시스템 등록 요청을 통해 Apps에 시스템이 등록된 후에는 시스템에 로그인 할 수 있는 관리자 계정과 요청된 리소스로 생성된 기본 클러스터가 이미 등록되어 있습니다.

워크스페이스는 하나의 작업공간 입니다.

여러개의 서비스 맵을 가질수 있고 사용할 수 있는 사용자와 클러스터를 제한할 수 있으며, 빌드된 이미지를 위한 등록 레지스트리 정보와 워크스페이스를 표현할 색상정보를 가지고 있습니다.

1.1. 시스템 관리자로 로그인 하기

(시스템 등록 후 Apps팀으로 부터 받은 시스템 관리자 정보가 있어야 합니다.)
Apps 로그인 화면에 접속해 관리자 계정으로 로그인을 합니다.

그림. Apps 로그인

[그림. Apps 로그인]

시스템 접속 계정, 시스템 관리자 아이디, 시스템 관리자 패스워드 정보를 입력하시면 됩니다.
패스워드를 변경하지 않았다면, 초기 패스워드를 입력 후 사용할 패스워드로 변경하세요.

1.2. 시스템 사용자 추가

좌측 메뉴중 ‘Management’ > ‘시스템’ 을 선택하면 등록된 시스템 정보와 시스템 사용자 정보를 확인할 수 있습니다.

시스템 사용자에서 ‘사용자 추가’ 버튼을 누른후 사용자 정보를 입력해 사용자를 등록하세요.

[그림. 시스템 사용자 등록 팝업]

[그림. 시스템 사용자 등록 팝업]

  • 권한 :
    관리자와 사용자 권한중 선택 할 수 있습니다.

1.3. 워크스페이스 생성

좌측 메뉴중 ‘Management’ > ‘워크스페이스’ 를 클릭하면 워크스페이스 관리 화면으로 이동할 수 있습니다.

화면에서 워크스페이스 생성 버튼을 누른후 워크스페이스 생성화면에서 각 항목을 입력하세요.

입력이 완료되면 화면상단의 ‘생성’ 버튼을 눌러주세요.

[그림. 워크스페이스 등록 화면]

  • 색상 :
    워크스페이스를 화면에 노출할 때 사용할 색상을 선택하시면 됩니다.
  • 이미지 레지스트리 :
    빌드 이미지가 저장될 이미지 저장소의 이름 입니다.
    워크스페이스별로 빌드 메뉴가 존재하며 해당 메뉴에서 워크로드 배포에 사용될 이미지를 빌드 할 수 있습니다.
    워크스페이스내의 빌드된 모든 이미지들은 ‘이미지 레지스트리’로 입력된 이름의 저장소에 등록 됩니다.
    워크스페이스에 맞는 의미있는 이름을 사용하시면 됩니다.
  • 클러스터 추가 :
    ‘클러스터 추가’ 버튼을 누른후 사용할 클러스터를 선택 하시면 됩니다.

[그림. 클러스터 추가 화면]

  • 구성원 추가 :
    시스템 관리자가 이미 시스템 메뉴에서 사용자를 등록한 상태이고, ‘구성원 추가’ 버튼을 눌러 워크스페이스에 추가할 사용자를 선택하시면 됩니다.

이제 서비스 맵을 생성하고 워크로드를 등록할 수 있는 작업 공간이 만들어 졌습니다.

2. 서비스 맵 생성

네임스페이스별로 워크로드, 서비스, 스토리지 볼륨, configmap, secret, pipeline 등의 자원을 관리할 수 있는 ‘서비스 맵 생성’ 을 해보겠습니다.

Apps 에서 서비스 맵을 생성하면 내부적으로 선택한 클러스터에 kubenetes  namespace오브젝트가 생성되며, 서비스 맵에서 관리되는 자원들이 논리적으로 kubenetes cluster 내의 namespace 내에서 관리됩니다.

서비스 맵 내에서 관리되는 자원에 대한 상세한 내용은 이후 다른 블로그 글을 참고 하시고 kubernetes 의 Namespace에 대해서는 여기를 클릭하세요.

2.1. 사용자로 로그인 하기

Apps 로그인 화면으로 접속해 위크스페이스 생성시 추가한 사용자 계정으로 로그인을 합니다.
관리자 계정으로도 사용자 권한의 모든 작업이 가능하나 사용자 계정은 좌측 메뉴가 달라져 관리자 메뉴를 사용할 수 없습니다.

로그인하는 사용자가 최초로 로그인하는 경우 그림처럼 비밀번호 변경 화면이 노출되고 비밀번호 변경 후 다시 로그인 하시면 됩니다.

[그림. 비밀번호 변경 화면]

2.2. 서비스 맵 그룹

좌측 메뉴중 ‘DevOps‘ > ‘서비스‘ 을 선택하면 서비스 맵 현황 화면이 나타나며 서비스 맵 그룹과 등록된 서비스 맵들이 보여집니다.
최초에는 default로 만들어진 ‘Default’라는 이름의 서비스 맵 그룹 하나만 존재 합니다.

서비스 맵 그룹은 사용자가 서비스 맵을 유형이나 분류에 맞게 묶어서 관리할 수 있도록 해줍니다.
그룹명 오른쪽에 화살표를 선택하면 다음 그림과 같은 서비스 맵 그룹메뉴가 노출되고 메뉴항목을 선택하여 각 기능을 처리할 수 있습니다.

[그림. 서비스 맵 그룹 메뉴]

[그림. 서비스 맵 그룹 생성]

2.3. 서비스 맵 생성

서비스 맵을 생성할 서비스 맵 그룹의 오른쪽에 있는 ‘서비스 맵 생성‘ 버튼을 선택하면 서비스 맵 생성화면이 보여집니다.

[그림. 서비스 맵 생성 화면]

  • 클러스터
    워크스페이스 정보에 등록된 클러스터 리스트가 노출되고 서비스 맵에서 사용할 클러스터를 선택 하면 됩니다.
  • 맵 이름
    서비스 맵 이름을 입력 하시면 됩니다.
  • 네임스페이스 이름
    클러스터내에서 이 서비스 맵이 사용할 K8s Namespace 오브젝트의 이름 입니다. 중복되지 않는 의미 있는 이름을 사용하시면 됩니다.

화면에서 데이터 입력 후 ‘생성’ 버튼을 선택하면 서비스 맵 이 생성되고 서비스 맵 현황 화면으로 이동 합니다.

[그림. 서비스 맵 카드]

위 생성된 서비스 맵 카드 그림에서 각 아이콘은 CPU, Memory, 볼륨, 서비스를 나타냅니다. 현재는 사용하는 리소스가 없기 때문에 모두 0값이지만, 이 후에 워크로드나 서비스등이 등록되면 서비스 맵 안의 워크로드에서 요청한 cpu, memory, 볼륨 리소스의 요청량과 생성된 서비스의 갯수가 모두 합해져서 보여집니다.

이제 워크로드 및 서비스 등을 관리할 수 있는 서비스 맵이 생성 되었습니다.

3. Nginx 워크로드 생성

3.1. 워크로드 생성할 서비스 맵 선택

좌측 메뉴중 ‘DevOps’ > ‘서비스’ 을 선택하면 서비스 맵 현황 화면이 나타나며 서비스 맵 그룹과 등록된 서비스 맵들이 보여집니다.
서비스 맵 중에서 Nginx 워크로드를 생성할 서비스 맵을 선택 합니다.

3.2. 워크로드 그룹

워크로드 그룹은 워크로드를 유형별 분류하여 사용자가 관리하기 편하게 하기 위한 기능입니다.
서비스 맵을 선택하면 다음과 같이 상단 ‘워크로드’ 메뉴가 선택된 화면이 보여 집니다.

[그림. 서비스 맵 워크로드 그룹]

이 화면에 생성후 최초 접근하면 ‘Default’라 이름된 워크로드 그룹만 존재 합니다.
각 그룹들의 메뉴를 통해 그룹명 변경, 이동, 추가, 삭제, 컬럼수 변경 등을 처리할 수 있습니다.
그림상에 ‘Added Group’은 워크로드 카드를 2줄로 표현할 수 있게 변경한 상태입니다.

등록된 워크로드는 마우스 드래그를 통해 워크로드 그룹간의 이동도 가능하고 그룹내에서의 위치 이동도 가능합니다.

3.3. 워크로드 생성

Apps는 Kubernetes 기반으로 클러스터와 리소스를 관리 합니다.

Apps에서 워크로드가 생성 및 배포 되었을때 내부적으로 많은 작업들을 하지만 단순하게 생각하면 컨테이너 하나만 배포 하는 경우라면, 워크로드는 서버라고 생각하시면 되고
컨테이너는 서버내에 존재하는 Application 이라 생각하셔도 됩니다.

nginx 워크로드 배포를 위해 몇가지 정보만 입력하면 됩니다.

kubernetes 상의 워크로드와 컨테이너를 자세히 알고 싶으시면 아래 링크를 확인하세요.[쿠버네티스 워크로드] ,[쿠버네티스 컨테이너]

3.3.1 워크로드 유형 선택

워크로드 그룹의 ‘+’ 버튼을 눌러 워크로드 생성을 위한 유형선택 레이어 팝업을 확인할 수 있습니다.
워크로드의 유형을 선택후 ‘생성’을 클릭 하면 워크로드 생성 화면으로 이동합니다.
‘Multi Instance’ 유형을 선택하세요.

[그림. 워크로드 유형]

  • Single Instance(단일형)
    워크로드의 파드 인스턴스가 1개만 생성되는 유형 입니다.
    단일형일 경우 ‘RECREATE’ 가 기본 update 정책 입니다.
  • Multi Instance(복제형)
    워크로드의 파드 인스턴스가 여러개 생성될 수 있는 유형 입니다.
    Single Instance 보다 오토스케일링, 업데이터 정책 등의 정보가 추가적으로 존재 합니다.
    복제형일 경우 ‘Rolling Update’ 가 기본 update 정책 입니다.
  • Package
    카탈로그 > ‘패키지’ 메뉴의 Helm chart와 유사한 형식의 패키지들을 배포할 수 있는 유형힙니다.
    Single Instance, Multi Instance 유형과는 다르게 패키지별로 구성된 리소스가 모두 다릅니다.
    배포할 패키지를 선택하여 배포할 수 있습니다.

3.3.2 워크로드 기본정보 입력

워크로드 유형 선택 후 아래 그림과 같이 워크로드 생성 화면으로 전환되면 기본정보의 이름, 설명 등을 입력합니다.

[그림. 워크로드 생성 화면]

실제로는 사용하실 값을 입력하면 되지만 이 글에서는 이름은 ‘nginx-workload’, 설명은 ‘Test Workload’ 로 입력 하겠습니다.

  • 컨테이너
    워크로드생성에 의해 배포되는 POD 인스턴스 안에 배포될 컨테이너 정보를 등록할 수 있습니다.
    여러개의 컨테이너를 등록가능하며, 컨테이너의 이름, 이미지 정보, 실행정보, 환경변수, 보안설정, 헬스체크, 라이프 사이클 등의 내용을 등록할 수 있습니다.
  • 배포정책
    1. 인스턴스 : POD 인스턴스의 갯수, POD Host명, 배포할 노드 지정, 접근제어에 사용될 account 정보, Ready 후 대기시간, 종료유예시간 등을 설정할 수 있습니다.
    2. 오토스케일링(복제형만 가능) : CPU 사용율이나 메모리 사용율에 따라 POD 인스턴스 갯수를 유동적으로 scale up/down 할 수 있도록 설정할 수 있습니다.
    3. 업데이트 정책(복제형만 가능) : 정보가 변경되어 POD update 시 정책 및 중단/확장 비율을 설정할 수 있습니다.
  • 서비스포트
    워크로드에서 서비스를 위해 사용할 port를 설정할 수 있습니다.
    이 메뉴에서 port를 설정하면 내부적으로 ‘ClusterIP’ 타입의 서비스가 생성 됩니다.
  • 볼륨 마운트
    생성되어 있는 볼륨과 각 컨테이너간에 moount 정보를 설정할 수 있습니다.
  • 볼륨
    Empty Dir, Host Path, Config Map, Secret 유형의 볼륨을 생성할 수 있습니다.

3.3.3 컨테이터 정보 추가

워크로드 생성 화면에서 컨테이너 단락의 ‘추가’ 버튼을 눌러 컨테이터 등록 팝업을 띄우세요.

[그림. 컨테이터 생성 팝업]

컨테이너 기본정보에 다음과 같이 입력 하세요.

컨테이너명 : nginx
이미지 형식 : 직접입력
이미지 : nginx:latest

하단의 CPU, Memory 정보는 수정하지 않고 기본값으로 하겠습니다.
입력 완료후 ‘적용’ 버튼을 눌러 주세요.

[참고] 아래는 컨테이너 등록화면의 좌측메뉴에 대한 간략한 설명 입니다.

  • 명령어
    컨테이너를 실행할 명령어와 인수를 등록할 수 있습니다.
    값이 없을 경우는 실행할 컨테이너 이미지의 ENTRYPOINT 가 실행됩니다.
  • 환경변수
    컨테이너에서 사용될 환경변수 값을 셋팅할 수 있습니다.
    직접입력, 컨피그맵, 시크릿 유형의 Key, Value 형태로 저장됩니다.
  • 보안설정
    Root실행여부, 실행사용자 정보, 실행 그룹정보, Linux Capablility 등의 보안정책에 대한 정보를 설정할 수 있습니다.
  • 헬스체크
    컨테이너가 살아있는지 정상동작 되었는지 확인할 수 있는 정보(iveness Probe, Readiness Probe)를 설정할 수 있습니다.
  • LifeCycle Hook
    컨테이터 실행/종료시 수행될 명령어나 Http Get 정보를 등록할 수 있습니다.

컨테이너 정보까지 등록 되었으면 우측 상단의 ‘생성’ 버튼을 눌러 저장 및 실행 하세요.

3.4. 서비스 생성

Nginx 워크로드를 생성하고 실행된 상태라고 하여도 외부에서 접근하기 위해 외부 접속가능한 서비스를 만들어 워크로드와 연결해 줘야 합니다.

좌측 메뉴중 ‘DevOps’ > ‘서비스’ 을 선택후 상단 ‘서비스’ 탭을 선택 하세요.

서비스 단락의 ‘추가’ 버튼을 눌러 서비스 등록 팝업을 띄우세요.

[그림. 서비스 등록 팝업]

  1. 다음과 같이 값을 입력 하세요.
    • 서비스 유형 : ‘Node Port’
    • 서비스 명 : ‘nginx-svc’
    • 대상 워크로드 : 위에서 등록한 nginx 워크로드의 워크로드명을 선택
    • ‘포트 추가’ 버튼 클릭후 다음 정보 입력
      • 이름 : ‘webport’
      • 프로토콜 : ‘TCP’
      • 타겟포트 : 80
      • 서비스포트 : 80
  2. 입력완료후 ‘적용’ 버튼을 눌러 서비스 생성을 완료 하세요.

[그림. 서비스 생성 완료]

서비스 생성이 완료 되면 생성된 서비스의 URL을 통해 Nginx워크로드에 접속할 수 있습니다.
위 서비스 생성 완료 화면의 서비스명의 화살표를 누르면 연결할 수 있는 접속 URL이 보여지고 해당 URL을 클릭하면 Nginx 워크로드에 접속 합니다.

[그림. nginx 접속]

드디어 Nginx서버 배포가 끝났고 화면도 잘 보입니다.

마무리

워크스페이스와 서비스 맵은 처음 한번 작업하면 필요하지 않은 이상 워크로드 배포를 위해 항상 필요한 작업은 아닙니다.
이미 만들어진 워크스페이스와 서비스 맵이 있다면 이 작업은 건너뛰는 작업 입니다.

간략하게나마 조금 설명을 넣다보니 글이 길어졌네요.

여기까지 읽고 따라하시느라 정말 수고 많으셨습니다.

더 궁금하신 점은 블로그내 다른 글을 참고 하시거나 문의 하시기 바랍니다.

감사합니다.