inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Jenkins를 이용한 CI/CD Pipeline 구축

Windows 강의 진행 참고사항

793

InJun Choi
1

WSL2 우분투를 설치하여 진행하는 것도 가능하지만, 저처럼 귀찮으신 분들을 위해 남깁니다.

컨테이너 내에서 도커 실행

강사님이 게시하신 DinD 방식 대신 DooD 방식으로 실행하여 진행하실 수 있습니다. 다만 DooD 방식은 호스트 머신 도커를 공유하기 때문에 포트 바인딩에 신경 써주셔야 합니다.

예를 들면, 강사님은 DinD 방식이라 컨테이너 내부에서 실행하는 또 다른 컨테이너에 대해 포트를 8080:8080으로 바인딩합니다. 반면 DooD 방식은 호스트 도커를 곧바로 사용하기 때문에 컨테이너 내부에서 컨테이너를 실행할 때 [호스트에 노출할 포트]:8080로 바인딩하셔야 합니다.

아래는 docker-server, ansible-server 실행 명령입니다. 기존 명령에는 -p 8081:8080과 같은 포트 바인딩이 있으나, DooD 방식 사용 시 필요 없기 때문에 생략했습니다.

docker-server

docker run -itd --name docker-server -p 10022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init

ansible-server

docker run -itd -p 20022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/ansible:latest /usr/sbin/init

Ansible, K8s, SSH

Jenkins + Ansible + Kubernetes 와의 연동 챕터에서 Ansible 서버 -> Windows 호스트로 SSH 연결하는 부분이 있습니다. Windows의 경우 SSH 활성화, 환경 구축 등 추가 작업이 필요하고, 알 수 없는 오류가 자주 발생하여 아래 방법으로 진행하는 것이 쉬웠습니다.

우선, Ansible 서버에서 Windows 호스트에 SSH로 연결하는 이유는 Windows 호스트에 K8s 관리를 위한 kubectl 실행 환경이 구축되어 있기 때문입니다( 도커가 K8s 활성화 시 자동 구축 ).

그러므로 kubectl 실행 환경을 별도 리눅스 컨테이너에 구축하여 진행하실 수 있습니다.

리눅스 컨테이너

docker-server 이미지를 재활용해 별도 리눅스 컨테이너( kubectl-server )를 생성합니다.

docker run -itd --name kubectl-server -p 90022:22 -e container=docker --tmpfs /run --tmpfs /tmp -v /sys/fs/cgroup:/sys/fs/cgroup:ro -v /var/run/docker.sock:/var/run/docker.sock edowon0623/docker:latest /usr/sbin/init

해당 컨테이너에 SSH 등으로 접속한 후 kubectl을 설치합니다. 아래 명령을 차례대로 실행합니다.

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

kubectl 환경 설정

kubectl은 기본적으로 ~/.kube/config 파일에서 마스터 노드 접속 정보를 읽습니다. 위에선 kubectl을 설치했을 뿐, 접속 정보를 구성하지 않았기 때문에 추가 작업이 필요합니다.

Windows에서 minikube를 활성화한 경우 사용자 폴더/.kube 폴더에 config 파일이 존재합니다. 해당 파일의 내용을 복사하여 리눅스 컨테이너( kubectl-server )의 ~/.kube/config 파일에 붙여넣습니다. 리눅스 컨테이너에는 디렉토리와 파일이 없을텐데, 만드시면 됩니다.

테스트

kubectl 명령이 정상적으로 실행되는지 확인합니다.

kubectl get nodes

진행 방법

K8s 관련 부분을 kubectl-server에서 진행하시면 됩니다. 예를 들어 Ansible이 SSH로 Windows 호스트에 접근하는 대신, kubectl-server에 접근하도록 구성합니다.

답변 2

0

Dowon Lee

안녕하세요, 이도원입니다.

아래 내용도 참고해 보시기 바랍니다.

https://www.inflearn.com/course/lecture?courseSlug=젠킨스-ci-cd-파이프라인&unitId=130047

정보 공유 감사드립니다. ^^;

0

최경민

윈도우 pc에서 리눅스 작업환경으로 구성하고 싶어서 WSL2로 진행하고 있는데요

많은 도움되었습니다. 저와 같은 분들도 많을거라 생각되네요

0

최경민

참고로, 윈도우 PC WSL2에서 kubectl 환경설정은 저 같은 경우 minikube를 설치하여 테스트 하였습니다.

1.다운로드후

curl -LO minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

2.minikube설치

sudo install minikube-linux-amd64 /usr/local/bin/minikube

3.설치확인

minikube version

4.minikube 시작

minikube start --driver=docker

kubectl 사용할수 있습니다.