분류 전체보기
Kubernetes ReplicaSet, Deployment
Kubernetes ReplicaSet, Deployment
2023.01.17apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx-deployment name: nginx-deployment spec: replicas: 4 // 유지할 파드 개수 selector: matchLabels: app: nginx-deployment template: metadata: labels: app: nginx-deployment spec: containers: - name: nginx image: nginx ReplicaSet이란? 레플리카셋은 지정된 수의 파드 레플리카가 항상 실행되도록 보장하는 오브젝트입니다. 따라서 레플리카를 3으로 설정한다면, 레플리카에 종속되는 파드의 수는 3개가 되며, 개수를 세 파드를 재생성하거나, 삭제..
Kubernetes Pod
Kubernetes Pod
2023.01.08kubernetes Pod가 무엇인지 알아보고, 사용하는 옵션에 대해서 알아보겠습니다. 환경: 맥북 프로 m2, minikube 실습에 사용된 모든 코드는 글 마지막에 적혀있는 Github에서 볼 수 있습니다. 1. Pod란? 쿠버네티스에서 관리하는 가장 작은 배포 단위입니다. 도커가 컨테이너를 만든다면, 쿠버네티스는 파드를 생성합니다. 이때 다른 점은 파드는 하나 이상의 컨테이너를 포함할 수 있습니다. 파드에 1개의 컨테이너가 동작할 수도 있고, 서로 긴밀히 동작하는 여러 개의 컨테이너가 있을 수 있습니다. 2. Pod 생성하기 파드를 만들 수 있는 방법은 여러 가지가 있습니다. 하나씩 해보겠습니다. 2-1. run 명령어 가장 간단하지만, 상세히 설정하기에 번거로운 명령어입니다. kubectl run..
Kubernetes 구성 요소
Kubernetes 구성 요소
2023.01.07쿠버네티스 컨트롤 플레인 구성 요소에 대해서 알아보겠습니다. 먼저 쿠버테니스를 배포하면, 클러스터를 얻습니다. 클러스터란? 애플리케이션 컨테이너를 실행하기 위한 일련의 노드 머신입니다. 최소 수준에서 클러스터는 컨트롤 플레인 및 하나 이상의 노드라는 워커 머신의 집합을 가지고 있습니다. 워커 노드란? 애플리케이션의 구성 요소인 파드를 호스트 합니다. (파드는 다음 포스팅에서 설명하겠습니다.) 위의 사진을 보며, 컨트롤 플레인의 구성 요소 살펴보겠습니다. 1. Control Plane Component 1. kube-apiserver kube-apiserver는 마치 웹 애플리케이션에서 프런트 엔드가 있듯이 컨트롤 플레인에서의 프런트 엔드입니다. 즉 마스터 노드의 중심에서 모든 클라이언트, 컴포넌트로부터 ..
Kubernetes 란??
Kubernetes 란??
2023.01.07쿠버네티스가 무엇이고, IT에서 많은 관심을 가지는지 알아보겠습니다. 쿠버네티스란? 컨테이너화 된 워크로드와 서비스를 관리할 수 있고, 이식성과 확장성을 갖춘 오픈소스 플랫폼입니다. 선언적 구성으로서 명령이 아니라, 어떠한 것의 사실(fact)들의 집합으로 구성된 것을 의미합니다. 또한 자동화의 용이성을 갖추고 있습니다. 그렇다면 쿠버네티스가 왜 사용되기 시작했는지 알아보겠습니다. 전통적인 배포 (Tranditional Deployment) 한 물리서버(hardware)에서 여러 애플리케이션을 실행합니다. 이때 애플리케이션의 리소스의 한계를 정의할 수 없어 애플리케이션 간의 성능 저하등 간섭을 발생시킬 수 있습니다. 예로 살펴보겠습니다. 2개의 애플리케이션이 있을 때 하나는 메일을 전송하는 애플리케이션이..
Mac m1, m2 minikube 설치
Mac m1, m2 minikube 설치
2023.01.041. minikube란? 로컬 환경에서 쿠버네티스 환경을 사용할 수 있게 해주는 프로젝트입니다. 간단한 명령어로 클러스터를 구축할 수 있고, 최근에는 다중 노드를 사용할 수 있게 됐습니다. minikube를 시작하기 위해선 가상 환경을 사용하거나, Docker를 기반으로 진행할 수 있습니다. 저는 Docker로 진행하겠습니다 https://docs.docker.com/desktop/install/mac-install/ Install on Mac docs.docker.com 2. minikube 설치하기 homebrew 패키지 관리자를 이용해 설치합니다. 만약 설치 돼있지 않다면, 터미널에 아래 명령어를 입력해주고 설치합니다. /bin/bash -c "$(curl -fsSL https://raw.githu..
테스트 코드를 위해 실제 코드에 영향이 가도 될까??
테스트 코드를 위해 실제 코드에 영향이 가도 될까??
2022.12.26개발을 하며, "테스트 코드를 위해 프로덕션 코드에 영향을 줘도 될까?"라는 고민이 테스트 코드를 작성하다 보니 생겼습니다. 고민해본 예시는 다음과 같습니다. Querydsl을 사용하며 Projection을 사용할 때 Setter를 만들지 않고, field 주입을 이용해 객체를 생성할 수 있습니다. 팀 내에서 field 주입만 사용하고 있기에 Getter만 생성해서 사용했습니다. 문제는 테스트 코드를 작성하며, 모든 값을 채우는 All 생성자나 Setter가 없기에 객체를 생성한 후 Reflection을 이용해서 값을 채워야 했습니다. 결국 Builder나 All 생성자가 없어 Service 계층의 테스트 코드는 Reflection이 덕지덕지 붙고 말았습니다.. 어떤 상황이 있는지 알아봤고, 본론으로 테..