목록전체 글 (37)
King of Stock
본 포스트는 로컬 환경에서 쿠버네티스 클러스터를 만드는 kind 도구를 사용하는 방법에 대한 포스트이다. 더 간단한 minikube도 있는데, 굳이 kind를 소개하는 이유로는 더 쿠버네티스 같이 구성할 수 있고 여러 쿠버네티스 버전을 설치할 수 있고 사용자가 좀 더 숙달이 되면 테스트 환경을 자동으로 만들어서 사용자가 개발한 operator를 테스트 해보는 등에 작업을 할 수 있다. 요구사항 리눅스 환경 도커 설치 - kind는 도커 환경에서 클러스터를 만들고 있다. kind v0.20.0 - 아래 설치 과정부터 설명하고 있다. kubectl 환경준비 이제부터 필자의 환경에 kind를 설치하고 kind를 통해서 쿠버네티스 클러스터 환경을 만들어보겠다. kind 바이너리 설치 공식 문서에서는 크게 3가지..
본 포스트는 필자가 GCP 환경에 생성한 VM 인스턴스에(Debian OS) 한글이 깨지는 현상을 확인하고 한글 로케일 설정을 진행한 과정을 기록했다. 작성된 본 포스트는 이것을 읽는 사람을 고려하지 않았기 때문에 생소한 용어나 혹은 단어가 사용될 수 있다. OS 정보 본 포스트의 작업은 Debian Linux 환경에서 진행했고, 관련 OS 정보는 아래 예시와 같이 파일의 내용을 출력하여 확인할 수 있다. cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="..
파이썬에서 열거형 클래스를 상속받아서 직렬화까지 동작하게 하는 간단한 방법 아래 예시는 필자가 개발중인 프로그램의 일부로 문자열을 값으로 가지는 맴버로 사용자 정의 열거형 클래스이다. from enum import Enum class StockStateType(str, Enum): """종목 상태 유형 키움 GetMasterStockState(QString) 조회 결과에서 파싱 결과의 열거형이며 증거금은 조회 결과는 제외 상태의 종류에는 거래정지, 관리종목, 감리종목, 투자유의종목, 담보대출, 액면분할, 신용가능 """ STOP = "거래정지" """거래정지""" GOVERNMENT = "관리종목" """관리종목""" SUPERVISION = "감리종목" """감리종목""" ATTENTION = "투자유..
사전 환경 로컬 환경에 SQL 서버 설치 NuGet 패키지 관리자를 통한 EntityFramework 설치(6.4.4) 적절한 IDE(필자는 visual studio 2019 community) 프로젝트 설정 app.config 아래 설정은 필자의 winform 프로젝트에 app.config 파일에 EntityFramework 설정과 관련된 일부분이다. name 부분은 코드에서 사용해야 하는 명칭이고, connectionString 부분은 기존에 SQL Server 연결에 사용하는 문자열이다. 위에는 2개의 설정이 있으며, 하나는 테스트 케이스에 사용하고 다른 하나는 애플리케이션 기동에 사용한다. SmartkukContext.cs app.config 파일에 설정한 내용을 기준으로 데이터베이스에 연결을 하..
VSCode 확장 프로그램 중 diff 처리를 하는 2개의 프로그램 Diff Tool: 파일 저장 없이 우클릭으로 비교할 문자열 내용을 선택해서 바로 비교 Partial Diff: 부분 비교를 할 수 있음 https://marketplace.visualstudio.com/items?itemName=jinsihou.diff-tool Diff Tool - Visual Studio Marketplace Extension for Visual Studio Code - Take a diff of 2 files marketplace.visualstudio.com https://marketplace.visualstudio.com/items?itemName=ryu1kn.partial-diff Partial Diff - ..
DNS 서버 환경설정 본 문서에서는 같은 네트워크(subnet)에서 특정 dns 서버를 지정한 호스트들이 사용할 우분투 DNS 서버 설정을 가이드 한다. 현재 설정된 DNS 서버의 정보는 아래와 같다. 참고로 이 서버는 윈도우 워크스테이션 하위에 VMware workstation(VMware Workstation Pro 다운로드) 가상화를 통해서 설치된 서버이다 서버 IP 주소: 192.168.100.3 DNS 서버 호스트 이름: ns1.kuk.lab 호스트 OS: Ubuntu 18.04 server(Download Ubuntu Server) 호스트 관리자 계정: dns DNS 구성에 사용한 패키지: bind9 DNS 서버 호스트 변경 DNS 서버의 호스트 이름을 다음의 명령어를 통해서 의미 있는 이름으..
shell script에서 문자열을 비교할때 주로 사용하는 단순한 형태가 if문을 이용하는 것이다. 그런데 가끔 문자열에 이상한 문자(여기서 예를 드는 것은 \r)가 문자열 내부에 들어가 있어서 내가 원하는 비교를 할 수가 없는 상황이 발생하기도 한다. 본 글에서는 위에서 언급한 상황에서 디버깅을 어떻게 하는지에 대해서 간단하게 글을 써보고자 한다. 내가 겪은 일을 기반으로 하나의 예를 들어보겠다. 최근에 인터넷에 있는 특정 파일을 백그라운드 프로세스 상태로 다운로드를 처리하고 shell script 처리 과정에서 이 백그라운드 처리가 완료가 되었는지 기다리고 다음 shell script 로직을 진행하려고 코드를 구현 했었다. 백그라운드 다운로드 처리가 완료 되었는지 검증하는 로직에서 다음과 같이 상태 ..
StatefulSet pod anti affinity 옵션 적용시 주의사항 일반적으로 애플리케이션에 볼륨이 할당되고 계속 유지되며 동작해야 하는 애플리케이션들이 있다. 예를 들면 Elasticsearch 같은 오픈소스가 대표적인 예이다. 볼륨(상태)을 할당한 애플리케이션 Pod을 적용할때는 주로 StatefulSet을 사용한다. StatefulSet은 애플리케이션 Pod을 쿠버네티스 클러스터 환경에 적용시 PersistentVolume 리소스를 강하게 참조하는 특징이 있다. 고가용성을 위한 StatefulSet 적용 고가용성을 유지하기 위해서 클러스터 환경에 애플리케이션의 Pod을 적용시 Affinity and anti-affinity에서 언급하는 형태로 적용을 많이 한다.(물론 수평확장을 하지 않는다면..
Pet 프로젝트에 RestController를 통합 테스트 하기 위해 기존에는 주로 MockMvc 사용해서 구현을 많이 했었다. 테스트와 관련된 내용을 좀 찾아보고자 spring-boot test 문서를 보던중 Testing with a running server 발견하고 테스트 해보니 MockMvc로 하는거보다 편해서 앞으로 이걸 사용하려고 결정했다. 먼저 기존에 했던 방식의 테스트 코드를 보면 다음과 같다. 내가 느끼기에는 너무 길다. // ... 중략 ... MvcResult mvcResult = this.mockMvc.perform(get("/greet")) .andDo(print()).andExpect(status().isOk()) .andExpect(jsonPath("$.message").va..