05. Jenkins 설치

개요

우리는 AWS EKS에 argoCD를 설치할 때 Jenkins와 함께 사용할 예정이다. 그 이유는 Jenkins와 argoCD가 협력하여 원활한 배포 및 관리를 가능하게 하기 때문이다.
뿐만 아니라, develop과 stage 단계에서 서로 다른 Jenkins 서버를 사용하여 권한을 관리하고자 한다. 이것은 보안 및 권한 관리를 더욱 효과적으로 할 수 있게 도와준다.
또한, Jenkins 서버에 kubectl을 설치하는 것이 용이하기 때문에 별도의 EC2 인스턴스에 Jenkins를 설치할 것이다. (챗GPT로 한 번 정제한 문단인데 나 원래 글보단 잘 썼지만 문체가 좀 그렇네.)

 

별도의 EC2 생성

우선 EC2 생성. instance type은 t3.large가 가장 무난하다. 같이 사용하는 사람이 많아지면 t3.xlarge로 늘린다.

EBS는 우리 MSA구조가 용량이 많아서 100GiB로 설정했다.

sudo apt-get update && sudo apt-get upgrade

 

OpenJDK

Jenkins는 작년 가을 버전부터 openjdk8 버전에서 돌아가지 않는다. 이왕이면 17버전 이상을 설치하는 것이 좋다. Corretto 17 버전은 다음 아마존 공식 문서에 잘 나와있다. 이대로 설치한다.

https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/generic-linux-install.html

 

Amazon Corretto 17 Installation Instructions for Debian-Based, RPM-Based and Alpine Linux Distributions - Amazon Corretto 17

Amazon Corretto 17 Installation Instructions for Debian-Based, RPM-Based and Alpine Linux Distributions This topic describes how to install Amazon Corretto 17 on Debian-based, RPM-based and Alpine Linux distributions. Install Amazon Corretto 17 on Debian-B

docs.aws.amazon.com

 

Docker 설치

Docker의 공식 GPG key 설치

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

add the Docker repository

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Update the system to include Docker's repository.

$ sudo apt update

Docker와 Docker Compose 플러그인 설치

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

참고: 위에서 설치하는 Docker Compose 플러그인 ver.2부터는 docker-compose로 실행하던 것이 (작대기가 없어지고) docker compose로 실행한다.

'docker'를 elevated privilege에서 실행되기 때문에 아래 명령어 없이는 매번 docker 실행 시 sudo 를 붙여야한다. 이 불편함을 없애기 위해서 현재 계정 (여기서는 ubuntu 계정)을 docker user group에 추가한다. ${USER} 변수는 현재 로그인된 계정(ubuntu)를 가져오니 아래 명령어를 그대로 치면 된다.

$ sudo usermod -aG docker ${USER}

적용이 되려면 로그아웃 후 재접속한다.

 

Jenkins 설치

폴더 만들고, yaml 파일 생성

$ mkdir jenkins
$ cd jenkins
$ sudo nano docker-compose.yml

docker-compose.yml

version: "2"

services:
  jenkins:
    image: jenkins/jenkins:jdk17
    restart: always
    user: root
    container_name: jenkins
    volumes:
      - "/data/jenkins/jenkins_home:/var/jenkins_home"
      - "/usr/local/bin/helm:/usr/local/bin/helm"
      - "/usr/bin/argocd:/usr/bin/argocd"
      - "/usr/bin/docker:/usr/bin/docker"
      - "/var/run/docker.sock:/var/run/docker.sock"
    ports:
      - "80:8080"
      - "50000:50000"

 

초기 비번 확인

$ docker ps
// 로 jenkins docker 동작 확인

$ docker logs af4261eff807 (위에서 확인한 docker의 name)
// 으로 초기 패스워드 보기 => 복사 해둔다.

nginx로 접속 설정하고, 브라우저에서 접속하면 초기 아이디/비번 세팅하는 페이지가 나오고

필요한 플러그인들을 설치하면 된다.

접속시 설치한 EC2 instance에 swap memor를 설정해주지 않으면 system메뉴에서 warning이 뜬다.

EC2 CLI에서 swap memory를 설정해보자.

 

Swap memory 설정

$ top

을 실행하면

Swap을 쓰지 않는 상태이다.

이 사이트를 참조했다. https://repost.aws/knowledge-center/ec2-memory-swap-file   

하지만 아래 그대로 옮겨왔으니 아래 그대로 따라해도 된다.

 

1. Use the dd command to create a swap file on the root file system.

   여기서는 4Gb (128 Mb x 32) 로 설정

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

2. Update the read and write permissions for the swap file:

$ sudo chmod 600 /swapfile

3. Set up a Linux swap area:

$ sudo mkswap /swapfile

4. Make the swap file available for immediate use by adding the swap file to swap space:

$ sudo swapon /swapfile

5. Verify that the procedure was successful:

$ sudo swapon -s

6. Start the swap file at boot time by editing the /etc/fstab file. (재부팅 되도 동작하게)

    Open the file in the editor:

$ sudo vi /etc/fstab

마지막 행에 다음 줄 추가

/swapfile swap swap defaults 0 0

7. 제대로 설정 되었는지 확인

$ top

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유