분류 전체보기 58

[미션5] 컨테이너 이미지 사례 실습

1. 같은 이미지를 도커에서 받았을 때와 쿠버네티스에서 받았을 때 사이즈가 다른 이유dockerhub 에 올라가져 있는 이미지크기와 도커, 쿠버네티스의 이미지 크기가 다르다dockerhub : 248.2MB도커 : 490MBcontainerd : 248.3MiB 1-1. 추론1. Container Image를 만들 때 플랫폼(amd64, arm64)을 고려해야 되는데, Docker에서는 amd64를 받았고, Kuberentes에서 arm64를 받아서 이미지 크기가 달라졌을 것이다.해당 이미지는 Mac M 시리즈나 Window 유저가 모두 받을 수 있도록 생성Docker 에는 amd64, Containerd 는 amd64와 arm64 둘다 있지만, Containerd 의 용량이 더 작다→ 현재로선 정답이 ..

(13) Helm 과 Kustomize - 1 (Helm vs Kustomize, Helm 배포)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 명칭 정리배포툴Jenkins : 지금까지 배포툴로 사용argo : 이번시간부터 배포툴로 사용kubectl 을 써서 쿠버네티스로 배포kubectl 은 커맨드 라인 도구인 CLIcreate 나 apply 로 자원 생성CLI 명령 중 하나를 사용한거지 배포를 위한 부가적인 기능은 없었음실무에서는 kubectl 을 쿠버네티스 자원을 조회하거나 급한 수정할 때만 사용실제 자원 생성은 Kustomize 나 Helm 을 통해서 한다패키지 매니저 : Helm, Kustomizekubectl 과 같이 6명의 명령을 날리지만,작업자 입장에서는 한 번으로 모두 처리할 수 있다App 을 패키지 단위로 관리(2) He..

(12) Jenkins Pipeline (기초부터 Blue/Green 까지)

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 젠킨스 파이프라인 기본 구성 및 배포 세분화Step 1. Jenkins Pipeline 기본 구성 만들기1-1. 새로운 item 만들기item name 입력 및 Pipeline 선택 1-2. Pipeline Script더보기pipeline { agent any tools { gradle 'gradle-7.6.1' jdk 'jdk-17' } environment { DOCKERHUB_USERNAME = "soyeon207" GITHUB_USERNAME = "soyeon207" // 아래 부분 수정(x) ..

(11) 배포를 시작하기 전에 반드시 알아야 할 것들

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) CI/CD 파이프라인을 구성할 때 고려해야 하는 요소1-1. 관리 담당빌드 / 배포(AS-IS) 1. 소스 빌드 → 2. 컨테이너 빌드 → 3. 배포각각 담당하는 담당자가 있는 경우에는 이렇게 사용해도 좋다관리 담당자별로 나누는게 업무 분장이나 관리 책임에서 더 좋음(TO-BE) 젠킨스 파이프라인 (소스 빌드 → 컨테이너 빌드 → 배포)→ 관리담당에 따라 업무 분장, 관리 책임을 고려해서 선택 (관리 vs 기능) 1-2. 운영 정책젠킨스 빌드 (소스, 컨테이너) → ArgoCD 배포 (kubectl, HELM, Kustomize) → 인프라 환경배포와 인프라 환경의 관계1:N 으로 구축👍 장..

(10) 손쉽게 데브옵스 환경을 구축하는 방법

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) 실습 환경 VirtualBox랑 Vergant 를 이용해 게스트 OS 가 만들어지고, 스크립트로 모든 프로그램 설치내 PC 브라우저에서 Jenkins 대시보드에 접속 가능빌드를 실행하면 GitHub 에서 소스를 다운받아서 빌드 실행컨테이너 빌드를 하면 소스 빌드를 해서 만들어진 jar 파일이 사용컨테이너 이미지가 만들어지고, 도커 허브로 업로드 1. 설치더보기베이그란트 설치 스크립트를 실행하면 CI/CD 서버가 한 번에 구성자원 할당 CPU : 2Core, Memory: 2GI, Disk : 30GI네트워크 설정IP 는 20번Host-Only Network 는 VM간에 통신을 하거나 내 호스..

(9) 데브옵스 한방 정리

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. (1) DevOps 에서 가장 중요한 것1-1. DevOps 전체 구성도 개발 소스 를 GitHub 에 커밋하면서 소스 코드를 통합적 관리CI/CD 환경에서 Build 버튼을 누르면 GitHub 에서 최신 소스 코드 다운메이븐 저장소에서 소스에 필요한 라이브러리 다운실행할 수 있는 형태의 JAR 파일이 생성 되면서 소스 빌드는 끝Kubernetes 환경으로 배포해야하니깐 컨테이너 빌드를 한 번 더 해야하고, 도커로 빌드가 시작도커 허브에서 OpenJDK 가 있는 베이스 이미지를 다운받은 이미지에 JAR 파일을 넣으면 컨데이터 이미지로 만들어진다dockerHub 에 올리기배포kubectl 명령어를 날려서..

[미션4] Application 기능으로 이해하기 - PVC/PV, Deployment, Service, HPA

1. PV, PVC1-1. API 로 파일 생성http://192.168.56.30:31231/create-file-podhttp://192.168.56.30:31231/create-file-pvwmdaihnepr.txt, xhfwqtqaeo.txt 파일 생성1-2. 파일 생성 확인 Continer 임시 폴더 확인 => wmdaihnepr.txt Contianer 영구저장 폴더 확인 => xhfwqtqaeo.txt master node 폴더 확인 => xhfwqtqaeo.txt 1-3. Pod 삭제1-4. 파일 조회http://192.168.56.30:31231/list-file-podhttp://192.168.56.30:31231/list-file-pv 두 파일 모두 조회되지 않음 1-5. hostPa..

[미션3] Application 기능으로 이해하기 - Configmap, Secret > 응용과제

▶ 응용 과제 1Configmap의 환경변수들을 Secret을 사용해서 작성하고, App에서는 같은 결과가 나오도록 확인해 보세요. 현재 Configmap 의 환경변수들{ "application_role": "GET", "postgresql_filepath": "/usr/src/myapp/datasource/postgresql-info.yaml", "spring_profiles_active": "dev"} application_role, postgresql_filepath, spring_profiles_active 를 Secret 에 데이터가 들어가도록 작성해보기 1. Secret 생성 - dashboardstringData 하위에 Configmap 의 환경변수들을 넣어주기 대시 보드를 통해 각각의 데..

[미션2] Application 기능으로 이해하기 - Probe > 응용과제

▶ 응용 과제 1startupProbe가 실패 되도록 설정해서 Pod가 무한 재기동 상태가 되도록 설정해 보세요.(여러분들이 가장 많이 겪게될 Pod 에러입니다) 기존 Deployment 의 startupProbestartupProbe: httpGet: path: /ready port: http scheme: HTTP timeoutSeconds: 1 periodSeconds: 10 successThreshold: 1 failureThreshold: 20 timeoutSeconds : 프로브 요청의 타임아웃 시간periodSeconds : 프로브 요청 시간successThreshold : 몇 번 성공했을 때 성공으로 간주할지failureThreshole : 몇 번 실패까지 기다릴지 실제 Pod 의 로..

(8) Component 동작으로 이해하기

⚓ 쿠버네티스 어나더 클래스 (지상편) - Spring 1, 2 을 듣고 작성하는 복습 블로그 입니다. 1. 전체 개요 1-1. 쿠버네티스 구축 개요VM에 마스터 노드 생성마스터 노드는 클러스터 전체를 제어하는 중심 노드다음 구성요소 설치kubectl : CLI 도구, API 호출용kubeadm : 클러스터 설치 및 초기화 도구kubelet : 각 노드에서 Pod를 실행/관리container runtime : 실제 컨테이너 생성기 (ex: contianerd)클러스터 초기화kubeadm init 명령을 통해 클러스터 생성내부적으로 여러 컴포넌트 생성하는 Pod 정의 YAML 을 실행하여 Control Plane 구성 1-2. 워커 노드 구성다른 VM을 워커 노드로 구성 가능마스터 노드에 설치했던 구성요소..