개요
우리는 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
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
'DevOps와 Infra > AWS EKS' 카테고리의 다른 글
07. [AWS EKS] 특정 node에 선택적으로 배포하기 위한 labelling (0) | 2023.09.09 |
---|---|
06. [AWS EKS] AWS CLI2와 kubectl (0) | 2023.09.09 |
04. [AWS EKS] AWS console에서 Node Group 생성 (0) | 2023.08.08 |
03. [AWS EKS] AWS console에서 EKS cluster 생성 (0) | 2023.08.07 |
02. [AWS EKS] AWS console에서 IAM 설정 (0) | 2023.08.07 |