본문 바로가기
반응형

분류 전체보기157

[kubernetes] 쿠버네티스(kubernetes) 디플로이먼트(deployment)란 1. deployment란 deployment가 등장하기 이전 레플리케이션 컨트롤러만 이용하는 경우 컨테이너에 들어가는 애플리케이션의 소스가 변경된경우 다시 레플리케이션 컨트롤러를 새로 만들고 rolling-update 수행했습니다. 그러나 deployment가 등장하며 pod의 컨테이너의 이미지만 변경해주면 편리하게 업데이트가 되며 히스토리 확인 및 롤백기능까지 사용할 수 있게 되었습니다. 2. yaml파일을 이용해 생성하기 apiVersion: apps/v1 kind: Deployment metadata: name: mydeploy spec: replicas: 3 selector: matchLabels: app: myHelloWorld template: metadata: labels: app: myH.. 2021. 6. 21.
[kubernetes] 쿠버네티스(kubernetes) 레플리카셋(replicaset)이란 1. 레플리카셋이란? 쿠버네티스에서 가장 유명한 특징중 하나는 "pod이 죽었을때 다시 복구해준다" 입니다. replica로 시작하는 녀석들 덕분입니다 pod을 복구해주는 resource는 대표적으로 레플리케이션 컨트롤러(replication-controller)와 레플리카셋(replicaset)이 있습니다. 해당 resource를 감시하는 컨트롤러가 pod에 변화가 생겼는지를 감지하고, pod이 죽었을때 다시 복구해줍니다. deployment때문에 단독으로 replicaset을 사용하는일은 거의 없지만 매우 중요한 resource이니 정리해보겠습니다. 2. 레플리케이션 컨트롤러(replication-controller) vs 레플리카셋(replicaset) 레플리케이션 컨트롤러는 레플리카셋의 하위호환입.. 2021. 6. 21.
[kubernetes] 쿠버네티스(kubernetes) 팟(pod)이란? 1. Pod이란 Pod 는 쿠버네티스에서 관리하는 가장 작은 배포 단위입니다. 쿠버네티스는 여러 컴퓨터에 흩뿌려져있는 컨테이너를 관리하도록 도와주는 플랫폼이지만 쿠버네티스의 가장 작은 배포단위는 컨테이너가 아닌 pod입니다. pod안에 컨테이너(여러개가 존재할 수도 있음) 존재하는 구조입니다. 쿠버네티스의 마스터 노드에서 명령이 떨어지면 워커노드에 팟(컨테이너포함)을 생성하는게 기본 동작입니다. 2. pod 생성하기 먼저 8080포트 /에 http request를 보내면 hello world 문자열을 내려주는 백엔드 애플리케이션을 실행하는 이미지를 만들어줍니다. 저는 spring으로 만들어줬습니다. 이미지 만드는 방법을 모른다면 아래 게시글을 참고해주세요(만들지않고 제 도커허브에 있는 이미지를 pull .. 2021. 6. 13.
[kubernetes] 쿠버네티스 시작하기(minikube를 사용한 클러스터 구축) 1. 쿠버네티스 클러스터 구축하기 클러스터를 구축하기에 앞서 쿠버네티스의 목적을 명확히 하고 가야됩니다. 쿠버네티스는 여러대의 컴퓨터(워커노드)를 control plane(마스터노드, 대장컴퓨터)에서 통제하여 애플리케이션(컨테이너기반)을 실행시키는게 첫번째 목적입니다.(쿠버네티스가 없으면 모든 컴퓨터에 접근해서 일일이 프로그램을 실행시키고 관리해야합니다.) 쿠버네티스를 왜쓰는지 알았으면 이제 클러스터를 구축해야합니다. 쿠버네티스 클러스터를 구축한다는것은 일을 할 컴퓨터(워커노드)들과 일을 시킬 컴퓨터(control plane, 마스터노드)를 연결하여 마스터한테 일을 시키면 일이 분산되어 진행되도록 구축하는 작업이라고 생각하시면 됩니다. 클러스터를 구축하는게 뭔지 알았다면, 이제 컴퓨터를 구해봅시다. 컴퓨.. 2021. 6. 13.
[kubernetes] 쿠버네티스(kubernetes) 아키텍쳐 및 동작원리 1. 쿠버네티스란 단일 서버에서 컨테이너를 사용한다면 쿠버네티스를 사용하지 않아도되겠지만 서버가 10대로 늘어나게 된다면 어떤 서버에 어떤 컨테이너를 생성해야할지 서버마다 들어가서 일일이 자원을 확인하고, 실행하고나서는 컨테이너의 상태를 체크하고, 필요에따라 재가동하고, 삭제하고 등등 모든 작업을 10대에 서버에 접근해서 한땀한땀 해야하는 불편한 상황이 생기게 됩니다. 이러한 불편함을 해결하기 위해 컨테이너 오케스트레이션이 등장합니다. 모든 서버에 접근하여 한땀한땀 작업하는것을 하나의 클러스터로 구성하여 마치 하나의 컴퓨터에서 작업하는것처럼 개발 배포 관리를 단순화 시켰습니다. 쿠버네티스는 그중 가장 대표적인 컨테이너 오케스트레이션 오픈소스입니다. 2. 쿠버네티스 아키텍쳐 쿠버네티스는 클러스터는 크게 C.. 2021. 6. 9.
[Docker] 멀티 스테이지 를 이용하여 Dockerfile 빌드하기 1. 멀티스테이지란 애플리케이션을 빌드하려면 많은 의존성 패키지 및 라이브러리가 필요합니다. 그러나 실행을 위한 환경에서는 빌드하기위한 라이브러리, 패키지 등이 필요 없는 경우가 많습니다. 그럴 경우 멀티 스테이지를 사용하면 최종적으로 생성되는 이미지에 불필요한 패키지들을 제거해 이미지 자체의 용량이 커지는것을 막을 수 있습니다. 예제를 통해 확인해보겠습니다. 2. 멀티스테이지를 사용하지 않는경우 golang을 빌드하여 실행하는 이미지를 만들어보겠습니다. golang을 전혀 몰라도 상관없습니다. hello world만 찍을껍니다. (1) main.go //main.go package main import "fmt" func main(){ fmt.Println("hello world") } (2) dock.. 2021. 5. 27.
[Docker] Dockerfile 작성법(jar파일을 실행하는 이미지 만들기) 1. Dockerfile이란 도커파일이란 도커 이미지를 만들기 위해 작성하는 파일을 말합니다. docker build 명령어를 통해 Dodkcerfile에서 작성한 내용을 바탕으로 이미지를 생성할 수 있습니다. 도커 이미지를 구축해 도커 레지스트리에 올려놓으면 바뀌지 않는 환경들을 어디에서든 빠르게 사용이 가능합니다. 2. 문법 문법 설명 FROM 어떤 base 이미지를 사용하는 지 기술 COPY 호스트에서 이미지에 파일 추가 ADD 호스트에서 이미지에 파일 추가(tar등 아카이브파일이나 압축파일은 압축을 풀어준다) ENTRYPOINT 빌드한 이미지를 컨테이너로 생성할때 단 한번 실행(run) CMD 빌드한 이미지를 생성 및 시작할때 실행(Docker run, start) 단 하나의 CMD만 유효하다 W.. 2021. 5. 26.
[Docker] Docker(도커)란 1. docker vs vm docker가 등장하기 이전에도 호스트 시스템을 여러대의 격리된 환경으로 쓰고 싶어했습니다. docker 이전에 사용되던 가상머신은 호스트시스템위에 소프트웨어로 컴퓨터를 만들어 격리시켰습니다. (대표적인 소프트웨어는 Virtual Box, Vmware, hyper-v) 가상머신은 OS이미지 + 하드웨어 가상화를 위해 하이퍼 바이저를 사용하였으며 완전한 os를 실행시킬 수 있다는 장점이 있지만 성능이 떨어지는 크나큰 문제점이 발생하였습니다.(os를 위한 파일, 라이브러리 데이터들은 매우 무겁습니다.) 이러한 문제를 해결하기 위해 os를 직접 올리는게 아니라 호스트의 커널을 같이사용하고 프로세스(애플리케이션) 레벨에서 격리시키는 기술인 Docker가 등장하게 됩니다. contro.. 2021. 5. 24.
spring security 설정과 Authentication 객체 이번게시글에서는 spring security 설정방법을 정리해보겠습니다. spring security의 설정 파일입니다. @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser( User.withDefaultPasswordEncoder() .username("user") .password("user123") .roles("USER") ).withUser( User.withDefa.. 2021. 4. 1.
반응형