ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • K3S로 프로젝트 구성하기 - 3
    DevOps/K8s 2023. 5. 23. 23:10

     

    1. 로컬 PC를 NFS 설정 하기

    (Multipass NFS용으로 추가생성하여 설정가능)

    // 로컬 PC에 nfs 서버 구성 - multipass로 새로 생성하여 사용 가능
    sudo apt install nfs-kernel-server
    
    // 공유할 디렉토리 생성
    sudo mkdir /sharedir/k8s
    
    // 권한 부여
    sudo chmod 777 /sharedir/k8s
    
    // 공유 디렉토리 목록에 추가
    sudo vi /etc/exports
    
    // 맨 아래 다음 줄 추가 (아이피는 master-node 아이피)
    /sharedir/k8s 10.199.74.0/24(rw,sync,no_subtree_check)
    
    // 디렉토리 내보내기 및 재시작
    sudo exportfs -a
    sudo systemctl restart nfs-kernel-server
    
    // 모든 노드에서 실행
    apt-get install nfs-common

     

    2. PV Yaml

    저장소를 만드는 작업

     

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nfs
    spec:
      capacity:
        storage: 20Gi
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      storageClassName: jenkins-nfs
      persistentVolumeReclaimPolicy: Retain
      nfs:
        server: 172.30.1.77
        path: /sharedir/k8s

     

    3. PVC Yaml

    원하는 용량과 AccessMode(읽기쓰기용인지 읽기용인지)등을 정하고 storageClassName으로 저장소 선택

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-jenkins
    spec:
      accessModes:
        - ReadWriteOnce
      volumeMode: Filesystem
      resources:
        requests:
          storage: 10Gi
      storageClassName: jenkins-nfs

     

    K3S에 저장소 적용하는 과정

     

    // 방금 생성한 pv 적용
    k apply -f pv.yaml
    
    // 방금 생성한 pvc 적용
    k apply -f pvc.yaml
    
    // bound 상태 확인
    k get pvc
    
    // 젠킨스 helm 레포 등록, 다운
    helm repo add jenkins https://charts.jenkins.io
    
    helm repo update
    
    helm search repo jenkins
    
    helm pull jenkins/jenkins
    
    tar xvfz jenkins-4.3.23.tgz
    
    mv jenkins jenkins-4.3.23
    
    rm -rf jenkins-4.3.23.tgz
    
    cd jenkins-4.3.23
    
    cp values.yaml my-vaules.yaml
    
    // yaml 파일 수정
    
    vi my-vaules.yaml
    
    // 위에서 생성한 pvc 적용
    persistence.existingClaim : "pvc-jenkins"
    
    // 노드포트 설정, 원하는 포트 설정
    controller.serviceType : "NodePort"
    
    k create ns jenkins
    
    helm install jenkins -f my-vaules.yaml .
    
    로컬 nginx를 통해서 VM 포트 포워딩을 하여 로컬에서 확인한다.

     

    로컬에서 접속시

     

    젠킨스 접근시 http://127.0.0.1:[nginx포트]/login 이러한 uri로 접근한다.
    https X
    http O
    
    // 패스워드 확인
    kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/additional/chart-admin-password && echo

     

    로컬에서 접속한 화면

     

     

    젠킨스를 쿠버네티스 말고 도커로 별도 실행시

     

    // 도커를 설치했다는 가정하에 명령어 실행
    // 볼륨마운트 디렉토리 로컬에 맞게 설정 (-v /home/jenkins:/var/jenkins_home)
    sudo docker run --name jenkins -it -d --privileged=true -p 1004:8080 -p 50000:50000 -v /home/jenkins:/var/jenkins_home -u root jenkins/jenkins:lts /sbin/init
    
    // 젠킨스 컨테이너 안에서 도커 설치 후 도커 실행시 다음 명령어로 도커 실행 (DockerInDocker)
    // 젠킨스 안에 도커를 설치한 이유는 추후에 깃허브에서 소스를 빌드후 도커이미지로 만들어 허브로 올리기위함
    sudo /etc/init.d/docker start

    댓글

Designed by Tistory.