ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 데브옵스 시스템 - Nexus3 Repository 구성
    DevOps 2017. 10. 8. 00:48

    회사 시스템으로 Docker 환경을 구성하시는 분들은 아무래도 빌드 이미지를 Docker Hub에 공유하기 어려울 수 있을 껍니다.

    물론 Docker Hub도 github와 마찬가지로 private repository를 제공하고 있습니다만....

    비용이 발생한다는 것과 계정 관리를 해야 된다는 이슈가 생깁니다.


    우리는 오픈소스를 이용해서 하나의 시스템 환경에서 모든 플랫폼을 구성하는 것으로 계획을 세웠기에 private repository도 오픈소스 소프트웨어를 이용하여 구축을 해보도록 하겠습니다.


    제가 찾은 오픈소스 소프트웨어는 Nexus로 아마 공용 라이브러리 저장소로 이용을 하고 계신분들도 있으실꺼라 추측이 됩니다.


    이 Nexus가 3버전부터는 Docker를 지원하기 시작했네요.

    그리고 Nexus 자체도 Docker로 배포 지원을 하고 있어서 Docker를 이용해서 Nexus를 설치해 보도록 하겠습니다.


    일단 앞에서 모든 서버에 Docker를 설치 했기에 해당 부분은 스킵할께요.


    Docker 환경이 셋팅 되었다면 Nexus에서 사용할 data 폴더를 생성 합니다.


    mkdir /nexus-data && sudo chown -R 200 /nexus-data


    호스트에서 Data를 관리하지 않아도 되지만 만약에 container에 문제가 생기면 데이터도 모두 삭제되기에 그에 대한 조치라고 보시면 됩니다.


    그리고 아래 명령어로 Docker를 실행합니다.


    docker run -d -p 8081:8081 -p 12000:12000 --name nexus -v /nexus-data:/nexus-data sonatype/nexus3


    Port 옵션을 설명 드리자면 8081은 웹 접속을 위한 포트이고, 12000은 빌드 된 이미지를 원격 환경에서 업/다운로드 하기 위한 포트 입니다.


    설치가 완료되고 웹브라우저에서 http://nexus-install-host:8081 같은 형식으로 접속을 하면 아래와 같은 화면이 나타납니다.



    초기 admin 패스워드는 admin123 입니다.


    로그인을 하고 Docker를 위한 Repository를 생성해 보도록 하겠습니다. 관리자 메뉴에서 Repository > Repositories를 선택 합니다.



    Create repository를 선택합니다.



    그리고 recipe 메뉴에서 docker(hosted)를 선택 합니다.



    Repository 생성을 위한 입력사항 입니다.

    대부분 기본값을 사용하지만, Repository Connectors에서 HTTP에 12000 포트를 이용하는 것으로 설정을 합니다.

    HTTPS를 이용하는 것을 추천하지만, 인증서를 필요로 하기에 번거롭지만 HTTP로 설정합니다.

    그리고 Enable Docker V1 API에 체크하고 Create Repositry를 클릭합니다.



    아래와 같이 Repository 항목에 Docker용 Repository가 생성 되었습니다.



    그리고 원격서버에서 http로 Docker Repository를 접속하기 위해 insecure-registries를 /etc/docker/daemon.json 파일에 설정해 줘야 합니다.


    {

    "insecure-registries" : ["nexus-install-host:12000"]

    }


    대상 원격서버는 Jenkins와 Mesos-slave 입니다.


    설정이 끝나면 docker를 재시작 합니다.


    sudo systemctl restart docker.service


    Docker를 이용해서 설치는 간편히 끝냈습니다. 

    다만, 혹시나 Docker를 재시작 하는 경우 nexus의 container 실행을 꼭 확인해 주세요.


    저는 매번 깜빡해서 빌드하다가 에러를 만나곤 했습니다. ㅠ_ㅠ


    그리고 혹시 회사에서 AD나 LDAP 환경이 구성되어 있다면 LDAP 메뉴에서 설정하면 됩니다.

    저희는 AD 환경이라 아래와 같이 구성 했습니다.




    그리고 AD나 LDAP으로 계정을 연동해도 Roles 메뉴에서 권한 설정이 필요로 합니다.

    이부분은 AD 그룹과 mapping이 필요한 부분이기에 각자의 환경에서 차근차근 진행하시면 충분이 하실 수 있으실 껍니다.


    이제 gitlab을 구축하고 jenkins 빌드 환경을 구성하면 실제 운영이 가능한 환경이 되겠네요.

Designed by Tistory.