728x90
728x90
LAZY 로딩과 EAGER 로딩의 차이를 먼저 알아야 한다.(지연 로딩, 즉시 로딩) 지연로딩 Team —————— Member 는 서로 OneToMany, ManyToOne 관계를 맺고 있다. public class Team extends CoreEntity { // ... 중략 @OneToMany(mappedBy = "team", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) private List members = new ArrayList(); } public class Member extends CoreEntity { // ... 중략 @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) ..
minikube delete --all --purge minikube start 참조: https://github.com/kubernetes/minikube/issues/12274#issuecomment-1006201978
CI/CD 미니 프로젝트 목차 I. 과제 및 배경 소개 아키텍쳐 환경 구성 프로젝트 진행 일정 프로젝트 GitHub 주소 EKS와 K8S의 차이점 II. 구현 절차 1. EC2 인스턴스 구성 1-1. EC2 인스턴스에 부여 IAM 역할 부여 1-2. 보안 그룹 생성 1-3. 인스턴스에 접속해 도구 설치 2. Repository의 manifest로 eksctl 클러스터 생성 2-1. EC2 인스턴스 공개키 git 계정에 등록 2-2. git clone으로 manifest 가져오기 2-3. 파일 기반 eksctl 클러스터 생성 3. CI—Jenkins 3-1. 기본 설정: 환경변수, 플러그인, 크레덴셜, 슬랙 알림 1) Global Tool Configuration에서 환경변수 설정 2) Plugin 설치 ..
퍼시스턴트 볼륨(PV)와 퍼시스턴트 볼륨 클레임(PVC) 데이터베이스처럼 파드 내부에서 특정 데이터를 보유해야 하는 상태가 있는(stateful) 애플리케이션의 경우 데이터를 어떻게 관리해야 할까 고민해봐야 한다. 예를 들어, MySQL 디플로이먼트를 통해 파드를 생성하더라도 MySQL 파드 내부에 저장된 데이터는 영속적이지 않다. 디플로이먼트를 삭제하면 파드도 함께 삭제되고 그와 동시에 파드의 데이터 또한 함께 삭제되기 때문이다. 이를 해결하기 위해서 파드의 데이터를 영속적으로 저장하기 위한 방법이 필요하다. 쿠버네티스는 워커 노드 중 하나를 선택해 파드를 할당하는데, 특정 노드에서만 데이터를 보관해 저장하면 파드가 다른 노드로 옮겨갔을 때 해당 데이터를 사용할 수 없게 되기 이를 해결하기 위한 일반적..
인그레스(Ingress) 인그레스(Ingress)는 일반적으로 외부에서 내부로 향하는 것을 지칭하는 단어이다. 예를 들어 인그레스 트래픽은 외부에서 서버로 유입되는 트래픽을 의미하며, 인그레스 네트워크는 인그레스 트래픽을 처리하기 위한 네트워크를 의미한다. 서비스 오브젝트가 외부 요청을 받아들이기 위한 것이었다면 ‘인그레스'는 외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트이다. 여기서 ‘처리한다'라는 문장에는 많은 기능이 내포돼 있는데 인그레스 오브젝트가 담당할 수 있는 기본적인 기능만 간단히 나열해보면 다음과 같다. 외부 요청의 라우팅: /apple, /apple/red 등과 같이 특정 경로로 들어온 요청을 어떠한 서비스로 전달할지 정의하는 라우팅 규칙을 설정할..
컨피그맵(Configmap), 시크릿(Secret): 설정값을 파드에 전달 설정값이나 설정 파일을 내 애플리케이션에 전달하는 가장 확실한 방법은 도커 이미지 내부에 설정값 또는 설정 파일을 정적으로 저장해 놓는 것이다. 하지만 도커 이미지는 일단 빌드되고 나면 불변의 상태를 가지기 때문에 이 방법은 상황에 따라 설정 옵션을 유연하게 변경할 수 없다는 단점이 있다. 이에 대한 대안으로 파드를 정의하는 YAML 파일에 환경 변수를 직접 적어 놓는 하드 코딩 방식을 사용할 수도 있다. 위처럼 환경 변수를 파드 템플릿에 직접 명시하는 방식도 나쁘지는 않지만, 상황에 따라서는 환경 변수의 값만 다른, 동일한 여러 개의 YAML 파일이 존재할 수도 있다. 즉, 운영 환경과 개발 환경이 다른 경우에 각각 디플로이먼트..