Docker & Kubernetes (14) 썸네일형 리스트형 쿠버네티스(Kubernetes) - 젠킨스(jenkins) 알아보기 아래 설명하는 젠킨스(jenkins)는 명시된 서적을 참고하여 작성하였습니다. 젠킨스 메인화면 메뉴 설명 1] 새로운 Item: 젠킨스를 통해서 빌드할 작업을 Item이라고 한다. 2] 사람: 사용자를 관리하는 메뉴. 최초 접속계정 admin 이외에 다른 젠킨스 접속계정을 생성할 수 있다. - 젠킨스를 구동하는 서버에서 직접 사용자를 관리하는 방법 - 서버 down진행시, 계정정보가 삭제됨 - 별도의 데이터베이스를 가지고 자체적으로 사용자를 관리하는 방법 3] 빌드 기록: 젠킨스 작업에 대한 성공, 실패, 진행 내역을 확인 4] Jenkins 관리: 젠킨스의 시스템, 보안, 도구, 플러그인 등 각종 설정을 할 수 있다. - 1] 의존 플러그인 버전: 현재 사용하고 있는 플러그인이 의존하는 플러그인에 버전.. 쿠버네티스(Kubernetes) - 헬름으로 배포 간편화와 젠킨스 설치까지 헬름(helm) 헬름을 통한 배포는 커스터마이즈에서 제한적이었던 주소 할당 영역과 같은 값을 대체하면서 간단하게 설치할 수 있도록 설계되어있다. 헬름은 쿠버네티스에 패키지를 손쉽게 배포할 수 있도록 패키지를 관리하는 쿠버네티스 전용 패키지 매니저이다. - 패키지: 실행 파일, 실행 환경에 필요한 의존성 파일과 환경 정보들의 묶음 - 패키지 매니저: 다양한 목적으로 사용되지만, 가장 중요한 목적은 설치에 필요한 의존성 파일들을 관리하고 간편하게 설치할 수 있도록 도움을 줌 헬름은 차트(chart)라는 것을 사용하는데, 요구 조건별로 리소스를 편집하거나 변수를 넘겨서 처리하는 패키지내용을 처리해준다. 또한 차트는 헬름 저장소에 공개하여 여러 사용자들과 공유할 수 있다. (즉, 동료들과 동일한 환경 구성이 가.. 쿠버네티스(Kubernetes) - 배포 간편화 도구 비교 및 커스터마이즈(kustomize) 배포 간편화 쿠버네티스를 사용하면 인프라환경 구축에 크게 시간을 쓰지 않고 애플리케이션 개발에만 집중할 수 있게된다. 모든 배포 환경을 컨테이너 인프라로 일원화하고, CI/CD 도구를 사용하면 애플리케이션에 맞는 환경을 적용해 자동으로 배포가 가능하기 때문이다. 이때 우리는 쿠버네티스 내부에 젠킨스(Jenkins)를 설치하여 애플리케이션 코드를 빌드하고 레지스트리에 푸시한 후에 쿠버네티스에서 사용 가능한 형태로 배포한다. 이런 작업은 자동으로 작업을 수행하도록하여 효율성을 높이고, 실수를 줄여주는 장점이 있다. 애플리케이션을 배포하기 위한 환경을 하나하나 구성하는 것은 매우 복잡한 일이고 또 고정된 값이 아니기 때문에 매니페스트로 작성해 그대로 사용할 수 없다. 매니페스트란? 매니페스트 파일(manife.. 쿠버네티스(Kubernetes) - k8s에서 Docker 컨테이너 사용하기 쿠버네티스에서 도커 이미지를 이용한 파드 생성 https://gitlab.com/nodo3482/ys-k8s/-/tree/main/config VagrantFile을 통해 노드를 생성하면서 우리는 install_pkg.sh에 이미 git, docker 패키지를 설치하였다. 따라서 노드에 접속하여 docker관련 명령어를 사용하는 것이 가능하다. - 마스터노드 접속해서 docker ps 명령어를 실행한 모습. Dockerfile로 Build하여 deployment 파드 생성하기 = Dockerfile FROM openjdk:8 LABEL description="Java Application builder" EXPOSE 60433 RUN git clone https://github.com/iac-source.. Docker - DockerFile DockerFile이란? 도커이미지를 생성하기 위한 스크립트(설정파일)이다. 스크립트는 빌드용 DSL(Domain-Specific Languages, 도메인 특화 언어)로 구성되어있다. 여러가지 명령어를 DockerFile에 작성하면 Docker는 명령문을 차례대로 수행하며 DockerImage를 생성해준다. DockerFile의 장점 1] 이미지가 어떻게 만들어졌는지 기록이 가능 2] 배포에 용이함 3] 컨테이너가 특정 행동을 수행하도록 함 DockerFile 예시 FROM openjdk:8 LABEL description="My Java Application" EXPOSE 60431 COPY ./target/my-java-application.jar /opt/my-java-application.jar.. 쿠버네티스(Kubernetes) - 오브젝트 오브젝트란? 쿠버네티스 시스템에서 영속성을 가지는 오브젝트이다. 하나의 의도를 담은 레코드이며, 영속성의 특징에 따라 오브젝트 생성을 보장하기 위해 지속적으로 작동한다. 이 오브젝트를 생성함으로써 클러스터의 워크로드를 어떤 형태로 보이고자 하는지에 대해 효과적으로 쿠버네티스 시스템에 전한다. - 컨테이너화된 애플리케이션이 동작중인지 (그리고 어느 노드에서 동작 중인지) - 애플리케이션이 이용할 수 있는 리소스 - 애플리케이션이 어떻게 재구동, 업그레이드, 내고장성(시스템의 일부가 고장이 나도 전체에는 영향을 주지 않고, 항상 시스템의 정상 작동을 유지하는 능력)과 같은 부분들을 동작해야 하는지에 대한 정책 즉, 오브젝트는 가장 기본적인 구성 단위가 된다. 그리고 이 오브젝트를 생성,수정,삭제 동작을 입력.. 쿠버네티스(Kubernetes) - 인그레스와 로드밸런서(Load Balancer) 노드포트 추가하기 외부에서 쿠버네티스 클러스터의 내부에 접속하는 가장 쉬운 방법이다. 노드포트 서비스를 설정하면 모든 워커 노드의 특정 포트를 열고 여기로 오는 모든 요청을 노드포트 서비스로 전달한다. = 노드포트 서비스 구성도 = nodeport.yaml apiVersion: v1 kind: Service # 서비스의 이름 metadata: name: np-svc spec: # 셀렉터의 레이블 지정 selector: app: np-pods # 사용할 프로토콜과 포트들을 지정 ports: - name: http protocol: TCP port: 80 targetPort: 80 nodePort: 30000 # 서비스 타입을 설정 type: NodePort - kind를 Service로 변경 - spec에.. 쿠버네티스(Kubernetes) - 베이그런트 (Vagrant) (!) mac OS 기준으로 작성합니다. 베이그런트(vagrant)는 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요할 때 시스템을 사용할 수 있는 상태로 만들어준다. 이를 프로비저닝(provisioning)이라고 하는데, 프로비저닝을 하면 필요할 때 환경을 매우 쉽고 간단하게 구현할 수 있다. 베이그런트는 독립적으로 사용되는 도구가 아니며, 가상 머신을 생성하거나 조작하는 기능을 직접 제공하지는 않고 프로바이더라는 개념이 있어서 가상머신을 관리하는 도구(버추얼박스, 도커 등)와 조합해서 사용한다. 버추얼박스(virtualbox)는 이노테크(InnoTek)에서 개발한 가상화 소프트웨어로 오라클에서 배포한다. 버추얼박스는 현존하는 대부분의 운영 체제를 게스트 운영 체제로 사용할 수 .. 쿠버네티스(Kubernetes) - 기본적인 사용방법 파드 생성 = nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: container-name image: nginx = 파드 생성 명령어 (kubectl) # 파드를 생성한다. --image=nginx는 생성할 이미지의 이름 [root@m-k8s-ys vagrant]# kubectl run nginx-pod --image=nginx # 파드 확인 [root@m-k8s-ys vagrant]# kubectl get pod NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 41s [root@m-k8s-ys vagrant]# kubectl create .. 쿠버네티스(Kubernetes) - 이해하기 쿠버네티스 컨테이너 인프라 환경 이란, 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 인프라 환경이다. 컨테이너는 하나 이상의 목적을 위해 독립적으로 작동하는 프로세스이다. 개인 환경에서는 딱히 필요하지는 않겠지만, 기업 환경에서는 다수의 개발자 혹은 관리자들이 수백대에서 수천대의 서버를 관리하기 때문에 일관성을 유지하는 것이 매우 중요하다. 이러한 컨테이너 인프라 환경에서 사용할 수 있는 컨테이너 오케스트레이션중 하나가 쿠버네티스(Kubernetes)(이하 k8s)이다. k8s는 다른 오케스트레이션 솔루션보다는 시작하는데 어려움이 있지만, 쉽게 사용할 수 있도록 도와주는 도구들이 있어서 설치가 쉬워지고 있다. 또한 다양한 형태의 k8s가 지속적으로 계속 발전되고 있어서 .. 이전 1 2 다음