이번에 JIRA 사용을 테스트해 볼 일이 생겨 MySQL을 설치할 일이 생겼습니다. 이 글에서 Ubuntu Server 20.04에 MySQL을 설치하는 방법에 대해 알아봅니다.

 

 

 

0. 사전 준비

 

미리 Ubuntu Server 20.04 환경을 준비해 둡니다.

 

 

 

1. MySQL 설치.

 

다음 명령어로 서버에 MySQL을 설치합니다.

 

$ sudp apt-get update

$ sudo apt-get install mysql-server

 

 

 

2. MySQL Secure Installation 실행.

 

MariaDB와 다르게 MySQL은 apt-get 설치후에 추가 설치 과정이 필요합니다. 다음 명령어로 Secure intallation을 진행합니다.

 

$ sudo mysql_secure_installation

 

 

암호 검증에 관한 물음입니다. Y를 입력해 줍시다.

 

 

암호 복잡도에 관한 정책입니다. 2를 입력해 줍니다.

 

 

루트 계정의 암호를 입력해줍니다. 입력한 암호의 보안 강도가 측정되며 이 값을 사용할 것인지 묻습니다. Y를 입력합니다.

 

 

MySQL은 기본으로 익명의 유저를 갖으며 배포 환경에선 이 유저를 지워야 합니다. 아예 설정에서부터 지우도록 합니다. Y를 입력합니다.

 

 

일반적으로 root유저는 localhost에서만 접속이 가능합니다. 이 부분은 사용 환경에 맞춰서 진행해 주세요. 전 JIRA에서만 사용할 용도로 설치하기 때문에 Y를 입력해 원격지에서 접속을 막도록 하겠습니다.

 

 

MySQL은 기본적으로 누구나 접근 가능한 "test" DB를 생성합니다. 이 DB 역시 배포 환경에선 지워져야 할 대상이므로 설정에서부터 지우도록 합니다. Y를  입력합니다.

 

 

테이블 권한을 다시 불러와 줍니다. Y를 입력합니다.

 

이제 모든 설정이 끝났습니다. 다음 명령어로 직접 MySQL에 접속해 봅니다.

 

$ sudo mysql -u root -p

 

 

정상적으로 DB에 접속되는것을 확인할 수 있습니다.

 

 

 

 

 

 

기존에 사용하고 있던 Harbor에 LDAP를 연동해서 쓰고 있었는데 LDAP 서버가 문제가 생기는 바람에 더 이상 로그인이 불가능 한 상황에 이르렀습니다. 밀고 다시 설치할까 하던 중에 공식 홈페이지에 2.0.0 버전이 릴리즈 되었다는 사실을 알게 되어 이렇게 된 김에 버전을 올리기로 하였습니다. 

 

공식 홈페이지 글에 따르면 크게 세가지 변경점이 있다고 합니다.

  1. OCI 호환.
  2. Aqua Trivy를 기본 스캐너로 탑재.
  3. 다크 모드 지원.

 

 

다크 모드로 보다 세련되어 보이게 변경되었습니다. 맘에 드네요. 그럼 기존 설치한 Harbor 1.10.2 버전을 2.0.0 버전으로 업그레이드해 보도록 하겠습니다.

 

 

 

1. Harbor 요구사항 확인.

 

다행스럽게도 기존 요구사항이 2.0으로 오면서 변경되거나 하지는 않았습니다. Harbor의 요구사항은 다음과 같습니다.

 

Harbor는 리눅스에서 동작합니다. 기존 버전에서는 우분투 서버 18.04.3버전을 사용했습니다.

 

하드웨어 요구사항은 다음과 같습니다.

리소스 최소 사양 권장 사양
CPU 2 CPU 4CPU
메모리 4 GB 8 GB
스토리지 40 GB 160 GB

 

소프트웨어 요구사항은 다음과 같습니다.

소프트웨어 버전
Docker Engine 17.06.0 CE 버전 이상
Docker Compose 1.18.0 버전 이상
OpenSSL 최신 버전 권장

 

도커 설치는 이 글을, 도커 컴포즈 설치는 이 글을 참고해주세요.

 

네트워크 포트 사용은 다음과 같습니다.

 

포트 프로토콜 설명      
443 HTTPS Harbor 포털 및 코어 API는이 포트에서 HTTPS 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다.
4443 HTTPS 하버 용 Docker Content Trust 서비스에 대한 연결입니다. 공증(Notary)이 활성화 된 경우에만 필요합니다. 구성 파일에서이 포트를 변경할 수 있습니다.
80 HTTP Harbor 포털 및 코어 API는이 포트에서 HTTP 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다.




2. Harbor Installer 다운로드.

 

Harbor 릴리즈 페이지로 이동하여 원하는 버전을 다운받습니다. 여러 버전이 있지만 이 글에서는 2.0 버전으로의 업그레이드를 목적으로 하고 있기 때문에 2.0.0 태그의 버전을 다운받도록 하겠습니다. 별다른 문제나 요구가 없는 한 "harbor-offline-installer-v2.0.0.tgz" 파일을 다운로드하여주시면 됩니다. 

 

다운로드한 파일이 위치한 폴더로 이동한 뒤 다음 명령어로 압축을 풀어줍니다.

 

$ tar xvf harbor-offline-installer-v2.0.0.tgz

 

 

 

 

3. Harbor 사전 설정.

 

파일이 준비되었으면 설치할 때 적용될 설정 파일을 수정해야 합니다. 기존 harbor.yml에서 .tmpl이 추가된 것으로 보입니다. hatbot.yml의 탬플릿의 느낌 같네요. 직접 파일을 열어보면 아시겠지만 변경된 내용이 좀 있습니다.

 

우선 TLS관련 설정이 추가되었습니다. HTTPS 바로 아래에 추가되었으니 TLS 설정이 필요하신분은 건드리시면 될 겁니다.

공식 홈페이지에 따르면 이 기능에 대한 설명은 다음과 같습니다.

 

By default, The internal communication between Harbor’s component (harbor-core,harbor-jobservice,proxy,harbor-portal,registry,registryctl,trivy_adapter,clair_adapter,chartmuseum) use HTTP protocol which might not be secure enough for some production environment. Since Harbor v2.0, TLS can be used for this internal network. In production environments, always use HTTPS is a recommended best practice.
This functionality is introduced via the internal_tls in harbor.yml file. To enabled internal TLS, set enabled to true and set the dir value to the path of directory that contains the internal cert files.

기본적으로 Harbor 구성 요소 (하버 코어, 하버 작업 서비스, 프록시, 하버 포털, 레지스트리, 레지스트리) 간의 내부 통신은 일부 프로덕션 환경에 충분히 안전하지 않을 수 있는 HTTP 프로토콜을 사용합니다. Harbor v2.0부터 이 내부 네트워크에 TLS를 사용할 수 있습니다. 프로덕션 환경에서는 항상 HTTPS를 사용하는 것이 좋습니다.
이 기능은 internal_tlsin harbor.yml파일을 통해 도입되었습니다 . 내부 TLS를 활성화하기 위해서는 enabled값을 true로 설정하고 dir을 내부 인증 파일이 포함된 디렉터리 경로로 설정하세요.

 

또한 Trivy설정이 추가되었습니다. Trivy를 간단하게 설명하자면 다음과 같습니다.

 

A Simple and Comprehensive Vulnerability Scanner for Containers, Suitable for CI

CI에 적합한 컨테이너를위한 간단하고 포괄적인 취약점 스캐너

 

Trivy에 관심이 있으신 분은 여기를 참조해 주시길 바라며 이 기능은 추후 사용하게된다면 포스팅하겠습니다.

 

그 외의 설정은 모두 동일합니다. 이제 이 파일을 복사해 줍시다.

 

$ cp harbor.yml.tmpl harbor.yml

 

복사한 harbor.yml파일을 적절하게 수정해 줍시다. 다른 건 몰라도 hostname은 변경해야 합니다. 물론 실제 도커를 사용하기 위해서는 인증서도 적용해야 합니다.

 

$ vi harbor.yml

 

 

 

4. Harbor 설치.

 

이제 남은 건 인스톨 스크립트를 실행하는 것뿐입니다. 업그레이드를 하는 경우 기존에 돌아가고 있는 harbor를 내리는 것을 잊지 마세요. 

 

$ sudo docker-compose down -v

 

 

혹시 몰라서 구 버전의 harbor docker compose 파일이 존재하는 폴더에서 실행시켜줬습니다.

 

이제 새 버전의 harbor을 설치합니다.

 

$ sudo ./install.sh

 

 

쭉 설치가 진행되고 마지막에 성공적으로 설치되었으며 자동으로 시작되었다는 메시지가 출력됩니다.

 

이제 호스트로 이동하면 정상적으로 harbor에 접속할 수 있습니다.

 

 

 

 

 

 

우분투 서버에서 ssh의 기본 포트인 22번 대신 다른 포트를 사용하는 방법에 대해 알아봅니다.

 

 

 

0. 사전 준비.

 

이 글은 우분투 서버 20.04를 기준으로 작성되었습니다. 당연히 해당 서버에 미리 ssh가 설치되어 있다는 전제로 작업이 진행됩니다.

 

 

 

1. ssh 포트 변경.

 

ssh에 접속할 때 사용하는 포트는 설정 파일에 기재되어 있습니다. 다음 명령어를 통해 설정 파일을 수정합니다.

 

$ sudo vi /etc/ssh/sshd_config

 

설정파일을 열면 바로 포트 정보를 확인할 수 있습니다.

 

 

우리는 여기에 기본값인 22 대신 원하는 값을 넣어 준 뒤 저장하도록 합니다.

 

 

 

 

2. ssh 재시작

 

변경된 설정파일을 적용하기 위해 ssh를 재시작해 줍니다.

 

$ sudo service sshd restart

 

 

 

3. 접속 확인.

 

terminal이나 putty와 같은 프로그램을 이용해 접속을 시도해 봅니다.

 

 

기본 포트로 접속시 위와 같은 메시지를 확인할 수 있습니다.

 

 

변경된 포트로 접속시 정상적으로 접속되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

Harbor에 LDAP를 적용하는 방법에 대해 알아봅니다.

 

 

 

0. 사전 준비

 

다음 글을 참고하여 LDAP를 미리 준비합니다: 2020/01/20 - [Linux] - [Ubuntu] LDAP: OpenLDAP 설치하기

 

다음 글을 참고하여 Harbor를 미리 준비합니다.

 

 

 

1. Harbor 설정 변경.

 

Harbor 페이지로 이동해 로그인 후 Configuration으로 이동합니다. 

 

 

위의 이미지처럼 인증 모드를 DB에서 LDAP로 변경합니다. 그럼 적어야 할 사항이 쭉 나오는데 차근차근 작성해 봅시다.

 

 

 

  • LDAP URL: LDAP 인증서버의 정보입니다. SSL을 지원하면 ldaps로 작성합니다. 
  • LDAPS Search DN: LDAP 인증 공급자의 계정을 입력합니다. 
  • 계정: LDAP 인증 공급자의 계정을 입력합니다.
  • 비밀번호: 위 계정의 암호를 입력합니다.
  • 기본 DN: LDAP의 BaseDN을 입력합니다.

 

위에서 설명하지 않은 값은 비워둔 채 저장해도 됩니다. 이제 "TEST LDAP SERVER" 버튼을 눌러보세요. 화면 위에 테스트 성공 메시지가 보이시나요?

 

 

 

테스트에 성공했다면 이제 LDAP에서 새 유저를 생성해 봅시다.

 

 

 

2. Harbor 유저 생성.

 

LDAP Admin을 사용해서 먼저 users OU(Organizational Unit)를 생성합니다.

 

 

이제 생성된 ou를 우클릭 해 유저를 추가합니다.

 

 

그리고 생성된 유저를 우클릭 해 암호를 설정합니다.

 

 

이제 모든 작업이 끝났습니다! 다시 Harbor로 돌아가서 방금 생성한 계정으로 로그인해 보세요.

 

 

정상적으로 로그인 되는것을 확인할 수 있습니다. 다시 관리자 계정으로 로그인 해 User메뉴로 이동하면

 

 

LDAP로 생성한 계정이 추가되었음을 확인할 수 있습니다.

 

 

 

 

 

이전에 설치한 Harbor에 HTTPS접속을 하는 방법에 대해 알아봅니다.

 

 

 

0. Harbor설치

 

HTTPS를 제외한 Harbor설치는 이 글을 참고해 주시기 바랍니다.




1. certbot 설치.

 

인증서를 Let's Encrypt에서 발급 받아볼 예정입니다. 공식 홈페이지에서도 나와있지만 셸에 접근이 가능하다면 certbot을 통해 발급받는 것을 추천하고 있습니다.

 

다음 명령어를 통해 certbot을 사용하기 위한 준비를 합니다.

 

> sudo apt-get update

> sudo apt-get install software-properties-common

> sudo add-apt-repository universe

> sudo add-apt-repository ppa:certbot/certbot

**** 만약 우분투 서버 버전이 20.04라면 "sudo apt-add-repository -r ppa:certbot/certbot"를 실행하세요

> sudo apt-get update

 

위의 명령어를 모두 실행 한 뒤 다음 명령어를 통해 certbot을 설치합니다.

 

> sudo apt-get install certbot python-certbot-nginx

 

 

 

2. 인증서 발급.

 

만약 harbor가 실행중이라면 nginx에러가 발생합니다. 먼저 다음 명령어를 통해 harbor를 내려줍시다.

 

> sudo docker-compose down -v

 

 

그리고 certbot을 이용해 인증서를 발급받습니다.

 

> sudo certbot certonly --standalone 

 

 

 

 

3. 인증서 적용.

 

인증서 파일과 키 파일이 생성되었습니다. 다루기 편하게 두 파일을 cert 폴더로 복사합니다.

 

> mkdir cert

> cd cert

> sudo cp /etc/letsencrypt/libe/[DOMAIN]/fullchain.pem fullchain.pem

> sudo cp /etc/letsencrypt/libe/[DOMAIN]/privkey.pem privkey.pem

 

공식 홈페이지에선 OpenSSL을 이용한 방식의. crt파일과. key파일을 넣어주고 있지만 pem파일을 그대로 넣어도 잘 동작합니다.

 

이걸 그대로 설정 파일에 사용하도록 변경해 봅시다.

 

 

이제 docker-compose파일을 다시 생성해야 합니다. 아래의 명령어로 docker-compose파일을 다시 생성해 주세요.

 

> subo ./prepare

 

다시 생성된 docker-compose파일을 적용하기 위해 harbor를 실행해줍니다.

 

> sudo docker-compose up -d

 

 

** 만약 harbor가 이미 실행 중이었다면 먼저 종료한 후 다시 키셔야 합니다.

 

이제 입력한 도메인/ip주소로 이동해 보시면 인증서가 적용된 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

 

 

vsftpd의  사용모드를 passive모드로 변경하는 방법에 대해 알아봅니다.

 

 

 

0. vsFTPD 설치

 

우분투 서버에 vsFTPD를 설치하는 방법은 이 글을 참고해 주시기 바랍니다.

 

 

 

1. Active 모드

 

vsFTPD를 처음 설치한 채 실행하면 기본적으로 액티브 모드로 실행됩니다. 액티브 모드에서의 동작은 다음과 같습니다.

 

출처: https://madplay.github.io/img/post/2019-03-09-ftp-active-passive-1.png

 

이 동작 순서를 좀 더 자세히 알아보겠습니다.

 

  • 1. 클라이언트가 서버의 21번 포트로 접속한 뒤 클라이언트가 사용할 두 번째 포트를 서버에 알려줍니다.
  • 2. 서버는 클라이언트의 요청에 대해 ACK을 날려줍니다.
  • 3. 서버의 20번 포트는 클라이언트가 알려준 두번째 포트로 접속을 시도합니다.
  • 4. 클라이언트는 서버의 요청에 대해 ACK을 날려줍니다.

이 과정을 보면 액티브 모드는 결국 클라이언트가 서버에 접속하는 것이 아닌 "서버가 클라이언트에 접속하는 것"임을 알 수 있습니다. 만약 클라이언트에 방화벽이 있다던가 외부의 접속을 허용하지 않는다던가 두 번째 포트가 이미 사용 중이라면 FTP 접속이 정상적으로 이루어지지 않을 것입니다. 이러한 문제를 해결하기 위해 나온 모드가 패시브 모드입니다.

 

 

 

2. Passive 모드

 

액티브 모드의 문제점이 서버가 클라이언트에 접속해서 발생했으니 패시브 모드는 클라이언트가 서버로 접속하는것임을 예상해 볼 수 있습니다. 패시브 모드가 동작하는 순서는 다음과 같습니다.

 

출처: https://madplay.github.io/img/post/2019-03-09-ftp-active-passive-2.png

 

  • 1. 클라이언트는 서버의 커맨드 포트로 접속합니다.
  • 2. 서버는 클라이언트가 사용할 두번째 포트를 클라이언트에게 알려줍니다.
  • 3. 클라이언트는 서버로 부터 받은 두 번째 포트로 서버에 접속합니다.
  • 4. 서버는 클라이언트의 접속에 대해 ACK을 날려줍니다.

차이점이 와닿으시나요? 패시브 모드에서는 "클라이언트가 서버에 접속"합니다. 앞의 액티브 모드에서 사용한 포트 대신 1024번 이후의 임의 포트를 데이터 채널 포트로 사용합니다.

 

 

 

3. 연결 방식에 따른 Port 사용 주의 사항.

 

액티브 모드는 클라이언트의 20번 포트에 연결할 수 없다면 데이터 채널을 연결할 수 없습니다. 따라서 액티브 모드에서 방화벽 설정으로 서버 측 20번 포트에 아웃바운드 허용, 클라이언트 측에는 인바운드 허용을 해주어야 합니다.

 

패시브 모드는 방화벽에서 서버측에서 사용하는 데이터 채널의 포트에 대해 인바운드 허용 설정이 필요합니다. 별도의 설정을 하지 않으면 설명한 바와 같이 1024 이후의 모든 포트를 사용하게 되어 모든 포트에 대해 인바운드 허용 설정이 필요하게 됩니다. 따라서 서버 측에서 데이터 채널 포트 범위를 지정해 특정 범위의 포트만 인바운드를 허용해 줍시다.

 

 

 

4. vsFTPD 액티브 모드에서 패시브 모드로 전환하기.

 

vsFTPD를 설치 한 후 설정 파일을 수정합니다.

 

> sudo vi /etc/vsftpd.conf

 

맨 아래 다음 설정을 추가합니다.

 

pasv_enable=Yes
pasv_max_port=11001
pasv_min_port=11050

 

위의 예시는 패시브 모드에서 데이터 채널 포트로 11001번부터 11050번까지 사용한다는 예시입니다. 원하는 포트로 변경해서 작성해 주시고 서비스를 재시작합니다

 

> sudo service vsftpd restart

 

이제 vsFTPSD는 패시브 모드로 동작합니다.

 

 

 

 

 

Harbor를 이용해 Docker Private Registry를 구축해 봅니다.

 

 

 

1. Harbor

 

Harbor는 비교적 덜 알려진 도커 레지스트리들 중 하나입니다. 공식 문서에 따르면 Harbor는 다음과 같이 설명하고 있습니다.

 

Harbor는 컨텐츠를 저장, 서명 및 스캔하는 오픈 소스 신뢰할 수 있는 클라우드 기본 레지스트리 프로젝트입니다. Harbor는 보안, ID 및 관리와 같은 사용자가 일반적으로 필요로 하는 기능을 추가하여 오픈 소스 Docker Distribution을 확장합니다. 

빌드 및 실행 환경에 더 가까운 레지스트리를 사용하면 이미지 전송 효율성을 향상시킬 수 있습니다. Harbor는 레지스트리 간 이미지 복제를 지원하고 사용자 관리, 액세스 제어 및 활동 감사와 같은 고급 보안 기능을 제공합니다.

Harbor는 CNCF (Cloud Native Computing Foundation)에서 호스팅 합니다. 클라우드 네이티브 기술의 진화를 구체화하려는 조직인 경우 CNCF 가입을 고려하십시오. 참여자 및 Harbor의 역할에 대한 자세한 내용은 CNCF 발표를 읽으십시오.

 

 

또한 Harbor에서 제공하는 주요한 기능은 다음과 같습니다:

 

  • 클라우드 네이티브 레지스트리: 컨테이너 이미지와 Helm 차트를 모두 지원하는 Harbor는 컨테이너 런타임 및 오케스트레이션 플랫폼과 같은 클라우드 네이티브 환경의 레지스트리 역할을 합니다.
  • 역할 기반 액세스 제어: 사용자 및 리포지토리는 '프로젝트'를 통해 구성되며 사용자는 프로젝트에서 이미지 또는 Helm 차트에 대해 서로 다른 권한을 가질 수 있습니다.
  • 정책 기반 복제: 여러 필터(리포지토리, 태그 및 레이블)가 있는 정책을 기반으로 여러 레지스트리 인스턴스 간에 이미지 및 차트를 복제(동기화) 할 수 있습니다. Harbor는 오류가 발생하면 자동으로 복제를 재 시도합니다. 로드 밸런싱, 고 가용성, 다중 데이터 센터, 하이브리드 및 다중 클라우드 시나리오에 적합합니다.
  • 취약점 검색: Harbor는 이미지를 정기적으로 스캔하여 사용자에게 취약점을 경고합니다.
  • LDAP/AD 지원: Harbor는 사용자 인증 및 관리를 위해 기존 엔터프라이즈 LDAP / AD와 통합되며 LDAP 그룹을 Harbor로 가져오고 적절한 프로젝트 역할을 할당할 수 있습니다.
  • OIDC 지원 : Harbor는 OIDC(OpenID Connect)를 활용하여 외부 인증 서버 또는 자격 증명 공급자가 인증 한 사용자의 자격 증명을 확인합니다. Single sign-on을 사용하여 Harbor 포털에 로그인할 수 있습니다.
  • 이미지 삭제 및 가비지 수집: 이미지를 삭제하고 공간을 재활용할 수 있습니다.
  • 공증(Notary): 이미지 진위를 보장할 수 있습니다.
  • 그래픽 사용자 포털: 사용자는 쉽게 저장소를 탐색하고 검색하며 프로젝트를 관리할 수 ​​있습니다.
  • 감사: 리포지토리에 대한 모든 작업이 추적됩니다.
  • RESTful API: 대부분의 관리 작업을 위한 RESTful API로 외부 시스템과 쉽게 통합할 수 있습니다. API를 탐색하고 테스트하기 위해 임베디드 Swagger UI를 사용할 수 있습니다.
  • 쉬운 배포: 온라인 및 오프라인 설치 관리자를 모두 제공합니다. 또한 Helm Chart를 사용하여 Kubernetes에 Harbor를 배포할 수 있습니다.

만약 Harbor대신 다른 레지스트리들의 옵션을 알고 싶다면이 글을 참고해 주시기 바랍니다.

 

 

 

2. Harbor 설치 준비 - 요구 사양

 

Harbor는 리눅스에서 동작합니다. 이 글에서는 리눅스 서버 18.04.3 버전을 사용합니다.

 

하드웨어 요구사항은 다음과 같습니다.

리소스 최소 사양 권장 사양
CPU 2 CPU 4CPU
메모리 4 GB 8 GB
스토리지 40 GB 160 GB

 

소프트웨어 요구사항은 다음과 같습니다.

소프트웨어 버전
Docker Engine 17.06.0 CE 버전 이상
Docker Compose 1.18.0 버전 이상
OpenSSL 최신 버전 권장

 

도커 설치는 이 글을, 도커 컴포즈 설치는 이 글을 참고해주세요.

 

 

네트워크 포트 사용은 다음과 같습니다.

 

포트 프로토콜 설명      
443 HTTPS Harbor 포털 및 코어 API는이 포트에서 HTTPS 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다.
4443 HTTPS 하버 용 Docker Content Trust 서비스에 대한 연결입니다. 공증(Notary)이 활성화 된 경우에만 필요합니다. 구성 파일에서이 포트를 변경할 수 있습니다.
80 HTTP Harbor 포털 및 코어 API는이 포트에서 HTTP 요청을 수락합니다. 구성 파일에서이 포트를 변경할 수 있습니다.

 

 

 

3. Harbor 설치

 

우선 Harbor 릴리즈 페이지로 이동해 Harbor 파일을 다운로드합니다. 이 글에선 현재(20.02.14) 최신 버전인 1.10.1 버전의 오프라인 버전을 다운로드하여서 설치해 보도록 하겠습니다.

 

.asc 파일은 옵션입니다. 이 파일은 OpenPGP 키 파일로 다운로드한 번들이 정품인지 확인하는 데 사용됩니다. 다운로드한 파일을 검증하는 방법은 여기서 확인해 주시기 바랍니다.

 

다운로드한 파일이 있는 경로로 이동해서 다음 명령어를 통해 파일을 추출합니다.

 

$ tar xvf harbor-offline-installer-v1.10.1.tgz

 

./harbor/harbor.yml파일을 수정하여 설정을 변경할 수 있습니다. 설치를 위해 호스트 이름을 변경합시다.

 

$ vi harbor.yml

호스트 설정은 파일 가장 위에 있습니다.

localhost나 127.0.0.1을 사용하지 말라고 되어있네요. 적당한 호스트를 입력한 후 저장합니다. 

이 설정 파일엔 초기 접속 정보 및 DB정보도 기재되어있습니다. 우선 관리자 암호를 기억해 둡시다.

실제 사용을 원한다면 당연히 HTTPS를 사용해야 합니다만 우선 간단한 설치를 위해 HTTPS 사용을 비활성화합니다.

 

설정을 저장한 후 다음 명령어로 install.sh을 실행시킵니다.

 

$ sudo ./install.sh

 

위와 같이 설치가 정상적으로 끝나면 앞서 입력한 호스트네임으로 접속해 봅시다. 다음과 같이 Harbor admin페이지를 확인할 수 있습니다.

기본 계정과 암호로 로그인합니다. 로그인 정보는 admin/Harbor12345입니다. 만약 설정 파일에서 초기 비밀번호를 바꾸셨다면 그 암호를 입력해 로그인합니다.

 

정상적으로 로그인되는 것을 확인할 수 있습니다.

 

 

 

 

 

 

 

우분투 서버 18.04.3에 OpenLDAP를 설치해 봅니다.

 

 

 

1. OpenLDAP 설치.

 

다음 명령어를 통해 OpenLDAP를 설치합니다.

 

$sudo apt-get update

$sudo apt-get install slapd ldap-utils

 

 

설치를 하다 보면 다음과 같이 관리자 패스워드를 입력하라는 창이 나옵니다.

 

 

놀라지 말고 관리자 암호를 입력해주면 됩니다. 이 암호는 추후에 변경할 수 있습니다.

 

 

 

2. 설정 재구성

 

설치하면서 설정할 수 있는 값은 관리자 암호밖에 없습니다. 따라서 패키지를 설치한 후 재설정 과정을 진행합니다.

 

다음 명령어를 통해 설정을 재구성 합니다.

 

$sudo dpkg-reconfigure slapd

 

 

"No"를 선택합니다.

 

 

LDAP 디렉터리의 base DN 값을 설정하기 위한 DNS 이름을 넣습니다.

 

 

조직 이름을 입력합니다.

 

 

관리자 암호를 입력합니다.

 

 

사용할 DB 유형을 고릅니다. MDB를 권고하고 있습니다. 

 

 

slapd를 제거했을 때 DB 정보를 지울 것인지 정합니다. "No"를 선택합니다.

 

 

해당 경로에 이미 DB가 존재할 때 기존 DB를 이동시킬지 여부입니다. "Yes"를 선택합니다.

 

 

다음 명령어를 통해 설정한 대로 반영되었는지 확인해봅시다.

 

$sudo slapcat

 

정상적으로 재설정이 끝났습니다.

 

 

 

3. 관리용 GUI툴 사용: LDAPAdmin

 

LDAP의 모든 작업은 CLI로 가능합니다만 윈도 환경에 익숙한 우리에게 GUI를 지원해주는 툴이 있는데 안쓰는건 바보같은 짓입니다.

 

윈도우 환경에서 사용할 수 있는 LDAPAdmin을 사용해 봅시다.

 

여기에서 LDAPAdmin을 다운로드합니다.

 

압축을 풀고 LDapAdmin.exe를 관리자 권한으로 실행합니다.

 

** 우클릭 후 속성 > 호환성 > 관리자 권한으로 이 프로그램 실행 체크박스를 체크해 둡시다.

 

 

Start > Connect > New connection을 선택합니다.

 

호스트 정보와 포트 정보를 입력하고 Fetch DNs버튼을 누르면 자동으로 BaseDN을 불러옵니다.

 

 

계정 정보에 "cn=admin"을 적고 BaseDN을 뒤에 적어줍니다. 초기 설정에 입력한 패스워드를 입력한 후 TestConnection 버튼을 눌러봅시다.

 

 

위와 같은 화면이 보이면 정상적으로 접속이 된 것입니다.

 

* Referenced: OpenLDAP을 활용한 기반 시스템 중앙 인증관리

 

 

 

 

 

CI/CD를 위해 Ububtu server 18.04.3에 Jenkins를 설치해 봅시다.

 

 

 

1. 저장소 등록

 

Jenkins를 Debian 계열의 리눅스에 설치하기 위해선 시스템에 키를 먼저 추가해야 합니다.

 

다음 명령어를 통해 Jenkins 패키지 저장소 키를 추가합니다.

 

$wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -

 

 

OK를 확인한 후 명령어를 통해 /etc/apt/sources.list에 다음 항목을 추가해야 합니다.

 

deb https://pkg.jenkins.io/debian-stable binary/  

 

다음 명령어를 통해 작업을 진행합시다.

 

우선 혹시 모를 상황을 대비해서 백업 파일을 만들어둡시다.

 

$sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

 

 

이제 다음 명령어를 통해 deb를 추가해 줍니다.

 

$echo "deb https://pkg.jenkins.io/debian-stable binary/" | sudo tee -a /etc/apt/sources.list 

 

 

잘 추가되었나 파일을 확인해 봅시다.

 

$vi /etc/apt/soucres.list

 

 

맨 아래 추가된것을 확인했다면 업데이트를 진행해 줍니다.

 

$sudo apt-get update

 

 

우리가 추가한 jenins.io에 대한 내용이 보이면 제대로 완료된 겁니다.

 

 

 

2. 자바 설치

 

슬프게도 Jenkins는 모든 Java 버전을 지원하지 않습니다. 따라서 명시적으로 Java를 설치해야 하는 과정이 필요합니다. 귀찮기는 하지만 시스템이 올바르게 구성되도록 하는 가장 안전한 방법이라고 합니다. 

 

대표적인 자바 요구사항은 다음과 같습니다.

  • 2.164 (2019-02) and newer: Java 8 or Java 11
  • 2.54 (2017-04) and newer: Java 8
  • 1.612 (2015-05) and newer: Java 7

 

현 포스팅 시점을 기준으로 2.204.1 버전의 Jenkins가 최신이므로 JAVA 11을 설치합니다. 더 자세한 내용은 여기서 확인해 주시기 바랍니다.

 

다음 명령어를 통해 JAVA11을 설치합니다.

 

$sudo apt install openjdk-11-jdk 

 

 

완료 후 자바 버전을 확인해 봅시다.

 

$java -version

 

 

이제 자바도 정상적으로 설치하였으니 Jenkins를 설치해 봅시다.

 

 

 

3. Jenkins 설치.

 

다음 명령어를 통해 Jenkins를 설치합니다.

 

$sudo apt-get install jenkins

 

 

설치가 완료되면 http://server-host:8000/으로 접속해 봅시다.

 

다음과 같은 화면이 보인다면 정상적으로 설치된겁니다.

 

 

 

 

4. Jenkins 활성화

 

이제 웹 UI의 절차를 따라 Jenkins를 활성화하면 됩니다.

 

다음 명령어로 관리자 암호를 확인한 후 UI에 적어줍시다.

 

$sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 

이다음엔 Jenkins를 커스텀할 수 있는 화면이 나옵니다.

 

 

미리 구상해둔 설정이 있는 게 아니므로 우선 추천 플러그인을 설치하도록 하겠습니다.

 

설치가 완료되면 관리자 계정을 만들어 줍시다.

 

 

다음은 URL을 설정하는 화면입니다.

 

 

전 기본값으로 설정한 채 넘어갔으며 만약 당장 설정하고 싶지 않다면 우측 아래의 Not now를 눌러주시면 됩니다.

 

 

드디어 Jenkins를 사용할 준비가 되었습니다.

 

 

 

 

 

 

 

우분투 서버 18.04.3에 Rabbit MQ를 설치해 봅니다.

 

 

 

1. Rabbit MQ 설치.

 

다음 명령어를 통해 Rabbit MQ 서버를 설치합니다.

 

$ sudo apt-get install rabbitmq-server

 

 

별문제 없이 설치가 진행됩니다.

 

 

 

2. Management Plugin 활성화

 

RabbitMQ에서는 여러 가지 기능을 플러그인의 형태로 제공합니다. 

 

Management Plugin은 관리 UI와 외부 모니터링 시스템을 제공해 주는 플러그인으로 사실 RabbitMQ를 설치하면 기본으로 같이 설치됩니다. 다만 기본값은 disabled상태이므로 명시적으로 enable 시켜야 합니다.

 

다음 명령어를 통해 Management Plugin을 활성화시킵니다.

 

$ sudo rabbitmq-plugins enable rabbitmq_management

 

 

정상적으로 활성화되었나 확인하기 위해 웹 UI로 들어가 봅시다.

 

http://server-host:15672/ 로 한번 접속해 보시기 바랍니다.

 

 

위와 같은 웹페이지가 보인다면 정상적으로 플러그인이 활성화된 겁니다.

 

Management Plugin에 대해 더 많은 정보는 여기서 확인해 보시기 바랍니다.

 

 

 

3. 접속

 

Rabbit MQ는 기본적으로 guest 계정을 준비해 줍니다. 한번 웹 UI를 통해 로그인을 시도해 봅시다. 

 

기본 계정 정보는 guest/guest입니다.

 

 

어떤 분은 로그인이 되었을것이고 어떤분은 위와 같이 Login failed 메시지와 함께 로그인에 실패했을 겁니다.

 

기본적으로 guest 계정은 localhost에서만 로그인이 가능합니다. 따라서 외부에서 접속을 하기 위해서는 별도의 관리자 계정을 새로 생성해주어야 합니다.

 

 

 

4. 계정 생성

 

다음 명령어를 통해 새로운 관리자 계정을 생성해 봅시다.

 

$sudo rabbitmqctl add_user admin 12345

 

 

그 후 다음 명령어를 통해 생성된 유저를 관리자로 위임해줍니다.

 

$sudo rabbitmqctl set_uset_tags admin administrator

 

 

만약 유저를 잘못 생성했다면 다음 명령어로 지우시면 됩니다.

 

$sudo rabbitmqctl delete_user admin

 

 

 

 

5. 접속

 

이제 위에서 생성한 계정으로 접속해 봅시다.

 

 

큰 노력 없이도 훌륭한 관리자 페이지를 확인할 수 있습니다.

 

 

 

 

 

 

  1. 인포렉스 2020.07.01 20:33

    좋은 글 감사합니다.

    계정생성에서 권한 넣는 부분에 오타가 있어요.

    set_uset_tags -> set_user_tags

+ Recent posts