콤텍시스템 서비스 지원
메뉴
이해를 돕기 위하여 앞서[Jenkins] 설치 및 구성을 작성하였습니다. 먼저 읽고 오시면 설치 및 구성을 할 때 도움이 됩니다.
Kubernetes 공유 볼륨을 활용하여 Jenkins 설치/구성 파일을 일관되게 유지합니다.
Dockerfile, Shared Storage, Kubernetes Yaml 파일을 관리하여 일관된 구성을 유지합니다.
Docker Desktop for Windows에서 Kubernetes 기능 활성화
Powershell 열기(Windows Terminal)
Windows Terminal은 Microsoft Store에서 설치할 수 있습니다.
Ubuntu 이미지 위에 Jenkins 레이어를 쌓아 Jenkins 이미지를 생성합니다.
Dockerfile 작성
# Dockerfile FROM ubuntu:latest RUN apt-get update && apt-get -y install sudo wget gnupg2 vim openjdk-11-jdk RUN wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add - RUN echo "deb https://pkg.jenkins.io/debian-stable binary/" >> /etc/apt/sources.list RUN apt-get update && apt-get install jenkins git zip unzip curl -y RUN echo 'jenkins ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers # 21.07.20 추가 - Ngrok 설정 RUN wget -q https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip && unzip ./ngrok-stable-linux-amd64.zip && rm ./ngrok-stable-linux-amd64.zip
Dockerfile 빌드
# 현재 위치에 있는 Dockerfile을 빌드 docker build -t laminar:0.1 . # Expected output #[+] Building 0.2s (10/10) FINISHED # => [internal] load build definition from Dockerfile 0.0s # => => transferring dockerfile: 32B 0.0s # => [internal] load .dockerignore 0.0s # => => transferring context: 2B 0.0s # => [internal] load metadata for docker.io/library/ubuntu:latest 0.0s # => [1/6] FROM docker.io/library/ubuntu:latest 0.0s # => CACHED [2/6] RUN apt-get update && apt-get -y install sudo wget gnupg2 vim openjdk-11-jdk 0.0s
로컬 컴퓨터 내의 Kubernetes 환경에 접속할 수 있도록 도와주는 서버입니다. 회원가입을 진행하여 AuthToken을 획득합니다.
회원가입 (https://dashboard.ngrok.com/signup)
Your Authtoken 선택
Command Line 명령어 복사
폴더 C:\Users\Comtec\Kubernetes\Volumes\Jenkins 를 Container에 붙여 Jenkins 설정 파일을 공유합니다.
YAML 파일 작성
앞서 복사한 Authtoke 붙여넣기
apiVersion: apps/v1 kind: Deployment metadata: labels: app: ubuntu name: ubuntu spec: replicas: 1 selector: matchLabels: app: ubuntu template: metadata: labels: app: ubuntu spec: containers: - command: ["/bin/sh","-c"] args: - service jenkins start; # Change this line to your authtoken ./ngrok authtoken 1vZKY; ./ngrok http 8080; image: laminar:0.1 name: ubuntu volumeMounts: - mountPath: /var/lib/jenkins name: jenkins volumes: - name: jenkins hostPath: # directory location on host path: /run/desktop/mnt/host/c/Users/Comtec/Kubernetes/Volumes/Jenkins/ # this field is optional type: DirectoryOrCreate --- apiVersion: v1 kind: Service metadata: labels: app: ubuntu name: ubuntu spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: ubuntu type: NodePort
Kubernetes 리소스 배포 (Deployment, Services)
kubectl apply -f ubuntu.yaml # Expected output # deployment.apps/ubuntu created # service/ubuntu created
리소스 확인
kubectl get all # Expected Output #NAME READY STATUS RESTARTS AGE #pod/ubuntu-66ffd9566-vnspw 1/1 Running 0 4s #NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE #service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 3d19h #service/ubuntu NodePort 10.96.128.223 <none> 8080:31614/TCP 4s #NAME READY UP-TO-DATE AVAILABLE AGE #deployment.apps/ubuntu 1/1 1 1 4s #NAME DESIRED CURRENT READY AGE #replicaset.apps/ubuntu-66ffd9566 1 1 1 4s
JSON 구문을 분석하는데 사용하는 프로그램입니다. 설치하지 않은 경우, 다운로드 페이지로 이동 또는 링크를 클릭하여 설치할 수 있습니다.
jq 설치
저장 폴더 변경(선택사항)
폴더 주소 복사
windows + q 입력
시스템 환경 변수 편집 입력
시스템 환경 변수 편집 선택
환경 변수 선택
시스템 변수 중 Path 변수 선택
편집 선택
새로 만들기 선택
복사한 폴더 경로 붙여넣기
확인 선택
URL 주소 확인
$POD_NAME=kubectl get po -o json | jq '.items[0].metadata.name' kubectl exec -it $POD_NAME -- curl http://127.0.0.1:4040/api/tunnels | jq '.tunnels[0].public_url' # Expected Output #"https://f69aaa692ee9.ngrok.io"
바로 위에서 확인한 URL을 입력하여 Jenkins 설정 페이지에 들어갈 수 있습니다.
https://f69aaa692ee9.ngrok.io로 접속 후 로그인
주소는 사용자마다 다르니, 반드시 확인 후 접속하세요.
현재는 컴퓨터 종료 후 부팅 시 POD가 재시작하면서 Ngrok 서버가 새롭게 올라갑니다. 즉 접속 가능한 URL이 변경되어, Jenkins URL 설정도 같이 변경을 합니다.
Manage Jenkins 선택
Configure System 선택