PaaS/CI CD 50

(Jenkins, Dockerhub, Github, Kubernetes) Github에서 소스를 가져와 Kubernetes에 Jenkins 통해서 배포하기

우선 대단원의 막을 내고자 최종적으로 정리한다. Jenkins를 통해서 Kubernetes에 배포하는 파이프라인을 전체적으로 설명하고자 한다. 전제조건으로 건강한 Kubernetes Cluster(Worker노드 1개 이상) 이 있어야 하고, Jenkins-leader가 Kubernetes안에 pod로 올라가 있어야 한다. (만약 Kubernetes 외부에 있으면 Kubernetes 연결작업이 좀더 복잡해진다고 생각하면 된다) 파이프라인은 이렇게 움직인다. 1) Github에서 Iac (Infra As Coding) 형식의 파일을 Jenkins로 pull 받기 2) Jenkins에서 pull받은 DockerFile을 참고해서 Kubernetes Cluster로 docker build/push 등등 doc..

PaaS/CI CD 2021.07.22

(Jenkins, Kubernetes) Jenkins와 Kubernetes 연동하기

현재 Kubernetes Cluster에 Jenkins를 pod로 올린상태이다. Kubernetes Cluster가 아닌 다른 호스트에서 올려본적이 있으나, 추후에 CI/CD하는데 있어서 괜히 머리 아플터이니, 그냥 Kubernetes Cluster에 올리기 바란다. Jenkins를 올리는 방법은 이전 글을 참고바랍니다. 1. 우선 Jenkins plugin 을 설치한다. 시스템설정 > 플러그인 관리 설치할 플러그인 대상 kubernetes Pipeline Utility Steps Docker Pipeline GitLab GitLabHook 2. 설치 후 재시작이 완료되면 Jenkins관리 -> 시스템 설정으로 간다. #of executor는 2->0으로 변경한다(동시에 배포 가능한 스레드 수인데 0으로..

PaaS/CI CD 2021.07.21

(Jenkins, Kubernetes) Kubernetes Cluster에 Jenkins Master 올리기

Jenkins를 Kubernetes에 올리는 이유는 Jenkins를 Kubernetes CI/CD에 활용하기 위함일 것이다. 아래는 해당 파이프라인 구성도이다. 우선 Kubernetes에 Jenkins를 올리는 방법을 알아보자 1. Namespace 생성 & ServiceAccount 생성 & ClusterRoleBinding 배포 파이프라인을 만들기 위해서는 우선 쿠버네티스 클러스터에 ns-jenkins라는 namespace를 만들고 jenkins-sa-clusteradmin-rbac.yaml파일로 jenkins 구동 시 사용할 ServiceAccount를 생성하고 cluster-admin role을 부여한다. 또한 default 계정에도 cluster-admin role을 부여한다. # kubectl..

PaaS/CI CD 2021.07.20

(Jenkins, Github, Docker) Github에서 불러와 Docker빌드

준비사항 1. Jenkins 서버에 Docker Server 설치 2. Github에 레포지토리 생성하기 armyost/testPagePy This Python page is showing basic information of server's IP and so on. And It has Dockerfile and etc. - armyost/testPagePy github.com Github 저장소 만들어서 애플리케이션 업로드 하기 Github 저장소를 만들게 되면 다음과 같은 파일들을 Github에 업로드 해야합니다. 소스 원본을 보고 싶으시면 저의 Github를 참고해주세요. https://github.com/armyost/testPagePy.git ※ 위 Github의 소스는 이 설명에서 다루는 ./..

PaaS/CI CD 2021.07.10

(Docker) Python 웹페이지를 띄울수 있는 Dockerfile만들어서 빌드 및 배포하기

아래내용은 Dockerfile을 만드는 것입니다. Kubernetes나 Jenkins 등 에서 배포파이프라인으로 구성하기 위해 많이 사용하는 구조입니다. 매번 느끼는 거지만 이미지 빌드가 잘안되거나 구성요소 문제로 나중에 삽질하는 경우가 많습니다. Kubernets 혹은 Jenkins로 운영하기전에 도커 호스트 서버에서 수동으로 빌드해서 정상적으로 서비스 되는지 체크하고 진행하기 바랍니다. 그런 의미에서 별도로 작성해서 올립니다. 1) 파이썬 웹사이트 프로젝트 Github에서 Clone하기 아래 프로젝트는 flask를 사용해서 Client IP와 Server IP를 체크할 수 있는 페이지 입니다. 사용법 등은 해당 프로젝트의 readme.txt에 있으니 참고바랍니다. Git 주소 : https://git..

PaaS/CI CD 2021.07.07

(Jenkins) Jenkins 설치하기

환경 : LINUX CentOS ※ AWS등을 사용하시는 경우 MarketPlace에서 Jenkins용 서버를 실행하면 IAM, 보안그룹 등 손쉽게 인스톨이 가능합니다. ※ Jenkins는 실행환경에서 JDK를 사용하는데, 왠만하면 JAVA 1.8 이상의 환경에서 실행하자. 아래의 명령어를 실행하여 jenkins repository를 설정파일을 생성합니다. https://pkg.jenkins.io/redhat-stable/jenkins.repo 경로의 파일을 다운로드 받아 /etc/yum.repos.d/jenkins.repo 경로에 파일을 다운로드 받는 명령어 입니다. wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/j..

PaaS/CI CD 2021.07.04

배포전략 - Rolling, Blue/Green, Canary 배포

1. Rolling: 가장 많이 사용하는 배포 전략이다. OneByOne 으로 배포를 하며, 여기서 핵심은 자동으로 로드벨런싱에서 제외 시켜야 한다는 점이다. AWS CodeDeploy, Kubernetes의 Deployment(Rolling) 의 기본 배포 방식이다. 하나씩 배포되고 Roll Back을 하게되면 다시 하나씩 롤백된다. 장점 : 사용자 기준으로 트래픽이 중단되는 현상없이 안정적으로 배포됨. 워크노드 자원을 안정적으로 사용하는 편 단점 : 배포중에는 동시에 신/구 버전 동시존재 2. Blue/Green : Blue/Green 배포는 구 버전에서 새 버전으로 일제히 전환하는 전략이다. 구 버전의 서버와 새 버전의 서버들을 동시에 나란히 구성하고 배포 시점이 되면 트래픽을 일제히 전환시킨다 장..

PaaS/CI CD 2021.06.28

Git 서버 및 클라이언트 설치

■ 서버 ssh 비로그인 세팅 클라이언트측 git$ssh-keygen #chmod 700 ~/.ssh #chmod 600 ~/.ssh/docker_ssh_key #chmod 644 ~/.ssh/docker_ssh_key.pub #chmod 644 ~/.ssh/known_hosts ※ 위와 같이 키 이름이 default가 아니라면 client서버에서 /etc/ssh/ssh_config 에서 key file 경로수정할 것 서버측 git$mkdir .ssh git$vi authorized_keys 에 client의 .ssh/docker_ssh_key.pub 의 내용을 복사 ■ git 서버 세팅 #yum install git-core #mkdir /git-repo #mkidr /git-repo/myapp.git..

PaaS/CI CD 2021.05.12

Docker Repository, Harbor 설치하기(Centos, Amazon Linux)

■ SSL 적용을 위한 OPENSSL 설치 ※주의 ssl 적용하고 harbor install 할것 #yum install openssl #mkdir ~/ssl #cd ~/ssl #openssl genrsa -out ca.key 4096 #openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=KR/ST=Seoul/L=Seoul/O=조직명/OU=Personal/CN=Repository서버 도메인" -key ca.key -out ca.crt #openssl genrsa -out harbor.key 4096 #openssl req -sha512 -new -subj "/C=KR/ST=Seoul/L=Seoul/O=조직명/OU=Personal/CN=Repositor..

PaaS/CI CD 2021.05.12