안녕하세요 오늘부터 차근차근 쿠버네티스의 배포 자동화 구축을 시리즈로 연재해 볼까 합니다.
그 첫번째가 Jenkins 설치 입니다. 배포 자동화를 위해 AWS에서는 AWS code series를 사용할 수 있지만 이는 베포 종류 중 canary 베포를 지원하지 않습니다.
* canary 베포란? [URL 추가 예정]
* 베포의 종류 [URL 추가 예정]
또한 아직까지는 AWS에 친화적이지 않은 고객도 많고 쿠버네티스를 사용하는 이유 중 하나가 vendor lockin 이 걸리지 않기 위해서 사용하는 이유가 있기 때문에 일반 Jenkins를 선택하였습니다.
Jenkins서버를 local에 설치하는 것 보다는 cloud에 설치하여 사용해보고자 AWS EC2에 Jenkins를 설치하기로 결정하였습니다.
자 그럼 대망의 첫번째 AWS EC2 AmazonLinux에 Jenkins설치를 시작해보겠습니다.
- AWS EC2 를 Amazon Linux1으로 생성 합니다.
(생성할때 필요한 네트워크 및 방화벽 정보는 생략하겠습니다.)
- 생성 후 Amazon Linux OS 정보를 확인해보겠습니다.
$ cat /etc/*release
yum 으로 jenkins 설치를 할때 기본 패키지에 Jenkins가 포함되어 있지 않습니다.
따라서 yum 패키지 저장소에 Jenkins를 수동으로 등록해야합니다.
- 우선 yum update로 최신화 합니다.
$ sudo yum update
- wget으로 Jenkins 저장소를 yum저장소에 다운로드합니다.
$ sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
- Jenkins 저장소 키를 등록합니다.
$ sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
- 패키지가 수동으로 저장소에 등록되었으니 yum install로 jenkins 설치 합니다.
$ sudo yum install jenkins
- jenkins를 실행 합니다.
$ sudo service jenkins start
java.lang.UnsupportedClassVersionError 를 확인할 수 있는데, 호환되는 java8 버전을 설치 해야합니다.
현재(2018.01.14) EC2 (Amazon Linux)가 Java7이 기본 버전이라 Java8로 버전업을 해야합니다.
- java 8 버전 insatll
$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
- 설치 완료 후 java 버전을 변경합니다.
$ sudo /usr/sbin/alternatives --config java
- 버전 변경이 완료 되었으면 사용하지 않는 java7을 삭제합니다.
$ sudo yum remove java-1.7.0-openjdk
- 변경된 java 버전 확인
$ java -version
Jenkins설정이 완료 되었습니다. 일반적으로 jenkins설치 후 Nginx를 설치하여 프록시 설정으로 80포트(Nginx)로 들어온 접근을 8080(Jenkins)로 프록시를 해줍니다.
- Nginx 설치
$ sudo yum install -y nginx
- Nginx 설정을 열어서 80에서 8080으로 프록시 설정 합니다.
$ sudo vim /etc/nginx/nginx.conf
location 부분에 아래 코드를 추가 해줍니다.
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
- Nginx를 실행해보겠습니다.
$ sudo service nginx start
- AWS EC2 instance의 Security group 에서 inbound 설정중 80이 열려 있는지 확인 합니다.
저는 테스트를 위해 all 로 열어 놓았습니다.
- EC2 insatnce의 public IP를 확인하여 80로 접근해봅니다.
nginx error 가 발생합니다. 왜그럴까요?
- EC2 에서 nginx와 jenkins가 잘 실행되고 있는지 확인해 봅니다.
$ ps -ef | grep nginx
$ ps -ef | grep jenkinx
Jenkins가 떠있지 않네요. 혹시 모르니 현재 떠있는 서비스 포트도 확인해 보도록 하겠습니다.
$ netstate -ntlp
Jenkins는 초기 기본포트가 8080 입니다. 역시 8080포트도 서비스되고 있지 않네요.
(아마 중간 과정에서 jenkins 가 정상 실행되지 않았거나 종료된것 같습니다.)
그럼 Jenkis를 다시 실행시켜 보겠습니다.
$ sudo service jenkins start
다시 EC2의 public IP로 접속해보니 Jenkins 관련된 화면이 나옵니다.
- 초기 패스워드는 EC2에 설치한 Jenkins의 아래 위치에서 확인이 가능합니다.
$ sudo cat /var/lib/jenkins/secrets/initialAdminPassword
패스워드를 입력하면 플러그인 설치 화면이 나옵니다.
젠킨스가 제안하는 초기 플러그인을 설치합니다.
이러한 플러그인을 설치하는 군요
설치가 완료되면 admin 계정을 하나 생성합니다.
아래와 같이 설치가 완료 되었습니다.
- Jenkins설치가 완료 되면 Doker와 관련된 Plug in을 설치 합니다.
[jenkins 관리] - [플러그인 관리] - [설치된 플러그인 목록] 에서 아래 플러그인 2개를 설치합니다.
docker API plug in, docker-build-step
오늘은 Amazon Linux1에 젠킨스 설치 및 Docker를 이용하여 빌드/베포 자동화에 필요한 플러그인을 설치해보았습니다.
이어서 다음편에는 빌드를 하기위해 Amazon Linux1에 maven 설치하는 작업을 연재하도록 하겠습니다.
감사합니다.
'IT > DevOps' 카테고리의 다른 글
쿠버네티스(Kubernetes)란? (0) | 2020.01.18 |
---|---|
[CI/CD자동화 시리즈(4)]Jenkins 빌드 자동화 설정 (0) | 2019.12.27 |
[CI/CD자동화 시리즈(3)]Git hub와 Docker hub 가입 부터 설치까지 (0) | 2019.12.26 |
[CI/CD자동화 시리즈(2)]AWS EC2 Amazon Linux1에 Maven설치 (0) | 2019.12.26 |
[DevOps] Ansible이란?(앤서블) (0) | 2019.10.23 |