Kubernetes: 애플리케이션 설정을 체계적으로 관리하기

쿠버네티스 개발전략을 읽고 작성한 내용입니다. https://product.kyobobook.co.kr/detail/S000200103262 쿠버네티스를 통해서 설정을 외부화하여 관리하는 방법을 알아보겠습니다. 여기서 설정은 데이터베이스 url, username, password, 얼마전에 작업한 뉴렐릭 라이센스 키 같은 값들을 말합니다. 이러한 설정값들은 변경되거나 추가 삭제되는 경우가 많기 때문에 애플리케이션 외부에서 관리하는 것이 유리합니다. 외부화된 설정: Externalized configuration 환경 변수와 실행 인자 실행 인자 우선 실행 인자와 환경 변수에 대해 알아보겠습니다 prod 프로필을 사용하려면 아래와 같이 실행 인자로 환경 정보를 넘겨줍니다. $ java -Dspring....

September 23, 2023 · 조민준

Kubernetes: pod와 service

Pod container Pod에는 container가 여러개 있을 수 있으며, localhost로 접근할 수 있다. Pod가 생성될 때는 IP가 할당되며, 이 IP를 통해 Pod에 접근할 수 있다. 쿠버네티스 클러스터 내에서만 IP로 접근 가능하다. Pod가 재생성되면 IP 주소가 바뀐다. apiVersion: v1 # 하나의 Pod kind: Pod metadata: name: pod-1 spec: # 여러 개의 container containers: - name: container1 image: image1 ports: - containerPort: 8000 - name: container2 image: image2 ports: - containerPort: 8080 label Pod 뿐만 아니라 다른 오브젝트에도 사용할 수 있지만, Pod에서 가장 많이 사용된다....

January 11, 2023 · 조민준

Introduce Kubernetes

What, Why Kubernetes? What 쿠버네티스는 컨테이너들을 운영, 관리하는 컨테이너 오케스트레이터이다. 컨테이너 오케스트레이터는 개별 컨테이너의 배포, 관리, 확장, 네트워킹을 자동화해준다. Why 물리 서버에서 동작하는 서비스는 리소스 관리를 효율적으로 할 수 없다. 3개의 서비스에 트래픽이 몰리는 시간대가 다르다. 각 서비스는 최소 트래픽 때 0.5대, 최대 트래픽 때 3개의 서버가 사용된다. 이 경우 총 9대의 서버가 사용된다. 배포시에도 비효율적이다. 중단이 가능한 경우 모든 서비스를 내린 후, 업데이트하여 다시 올린다. 중단이 불가능하면 서비스를 하나씩 내리고 하나씩 업데이트하여 다시 올린다....

January 10, 2023 · 조민준

kubectl command

kubectl command 쿠버네티스 API를 사용하는 CLI 도구이다. kubectl [command] [TYPE] [NAME] [flags] [command] 하나 이상의 리소스에서 수행하는 동작을 지정한다. ex) create get describe delete [TYPE] 리소스 타입을 지정한다. 대소문자를 구분하지 않으며 단수형, 복수형, 약어를 지정할 수 있다. ex) pod pods po [NAME] 하나 이상의 리소스의 이름을 지정한다. 대소문자를 구분하며 리소스 이름을 지정하지 않으면 모든 리소스가 대상이 된다. 리소스가 모두 동일한 TYPE인 경우 ex) kubectl get pod name1 name2 리소스 타입을 개별로 지정하는 경우 ex) kubectl get pod/name1 replicaset/name2 [flags] 플래그를 지정한다....

January 9, 2023 · 조민준

Linux 주요 커맨드와 옵션들

Linux 주요 커맨드와 옵션 커맨드 라인 단축키 ctrl + a: 커서를 라인 가장 앞으로 옮긴다. ctrl + e: 커서를 라인 가장 뒤로 옮긴다. ctrl + k: 커서를 기준으로 뒤쪽을 모두 지운다. 유틸리티 piping, redirect <COMMAND> | <COMMAND> |를 기준으로 앞 커맨드의 표준 출력을 뒷 커맨드의 표준 입력으로 사용한다. curl -s https://apigateway.dev1.meshdev.io/neogeo/management/info | jq <COMMAND> < <FILE> <COMMAND> > <FILE> <COMMAND> 1> <FILE> # 위 명령어와 같다. <COMMAND> 2> <FILE> # 커맨드의 에러 내용을 파일에 덮어 쓴다....

January 6, 2023 · 조민준

Linux 배포판 별 패키지 매니저

배포판 별 패키지 매니저 alpine 참고: Working with the Alpine Package Keeper (apk) apk [<OPTIONS>...] COMMAND [<ARGUMENTS>...] 존재하는 리포지터리(repository)는 다음과 같다. main 공식적으로 지원하는 패키지들 community testing 리포지터리에서 테스트된 패키지들 testing 새롭거나, 손상됐거나, 오래된 테스트가 필요한 패키지들 Updating repository apk update 리포지터리 인덱스를 업데이트한다. Searching apk search [<OPTIONS>...] PATTERN... 리포지터리에서 PATTERN을 검색한다. Option Description –description -d 설명에서 PATTERN을 검색한다. –exact -e 패키지 이름을 정확하게 매칭시킨다. Installing apk add [<OPTIONS>...] PACKAGES... 패키지를 설치한다....

January 5, 2023 · 조민준

Docker 스터디

Docker Docker란 애플리케이션 개발, 실행, 공유를 위한 오픈 플랫폼이다. 호스트 시스템과 격리된 환경에서 애플리케이션을 패키징하고 실행할 수 있게 해준다. (컨테이너) 협업 시 각 로컬에 개발환경을 설치하지 않아도 된다. 서버 관리에 편리하다. https://docs.docker.com/get-started/overview/ 도커 명령어 크게 4가지 종류의 명령어가 있다. Registry 관련 Image 관련 Container 관련 Compose 관련 명령어의 자세한 옵션과 설명은 아래 문서를 참조 docker Registry 관련 login docker login Registry에 로그인한다. logout docker logout Registry에서 로그아웃한다. search docker search [OPTIONS] <TERM> Registry에 있는 이미지를 검색한다....

January 4, 2023 · 조민준

Avro schema

1. Avro 란? 아브로(Avro)는 아파치의 하둡 프로젝트에서 개발된 RPC 및 데이터 직렬화 프레임워크이다. schema를 json으로 정의하여 바이너리 포맷으로 직렬화 한다. 2. 장점 데이터의 타입을 알 수 있다. 스키마가 직렬화되어 네트워크 통신에 자유롭다. 스키마에 설명이 포함되어 schema 구조를 이해하는데 도움을 준다. 다양한 language를 지원한다. (java, c, c++ 등) default 값을 정의할 수 있다. 3. Data Type 이름 태그 null no value boolean a binary value int 32bit signed integer long 62bit signed integer float single precision(단정밀도) 32bit floating-point number double double percision(배정밀도) 64bit floating-point number bytes sequence of 8-bit unsigned bytes string unicode character sequence Enums name, namespace, aliases, doc, symbols, default 등을 가진다....

July 2, 2022 · 조민준

Schema registry란?

1. Schema registry 란? 데이터 관리의 중요한 관점들 중 하나는 schema의 버전 관리이다. 응용프로그램의 시간이 지날수록 schema가 정의되기 시작한 시점부터 schema는 점점 바뀌어가고, producer와 consumer는 직접적인 관계가 끊어져있기 때문에 운영상에 발생하는 이슈가 있다. producer는 consumer가 어떤 메세지를 소비할지 알 수 없다. consumer는 producer가 어떤 메세지를 생산했는지 알 수 없다. 위와 같은 상황에서 producer가 갑자기 다른 schema를 이용해서 메세지를 생산할 경우, consumer는 이 메세지에 대해서 대처하지 못할 수 있다. 이는 구조적인 결합도는 낮지만, 메세지 schema에 대한 의존성이 높기 때문인데, schema registry는 이를 보완하기 위해 고안되었다....

July 1, 2022 · 조민준

Kafka란?

1. kafka 란? apache kafka는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다. *데이터 파이프 라인 구성시, 주로 사용되는 오픈 소스로 대용량 실시간 로그 처리에 특화되어 많은 사람들이 사용하고 있다. *데이터 파이프 라인: 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 2. kafka의 특성 2.1. Publisher-Subscriber 모델 Publisher-Subscriber 모델은 중간에 데이터 큐를 두고 서로 간 독립적으로 데이터를 생산하고 소비한다. 이러한 구조를 통해, Publisher나 Subscriber에 장애가 생겨도, 독립적이기 때문에 안정적으로 데이터를 처리할 수 있다....

July 1, 2022 · 조민준