All

k8s 가이드 (2023. 5 ~)lasted updated : 2024. 9. 10.CreAIte 프로젝트 인프라를 구축하고, 공유 및 참고를 위해 작성한 가이드입니다. 당시 k8s 시스템 완성만을 위해 작업하여, 실제 운영 환경에 적합하지 않은 방법들이 다수 포함되어 있습니다. 따라서, 공부 및 실습 목적으로만 참고하시면 좋을 것 같습니다 :)  프로젝트 종료 이후에 작성하여 생략된 부분이 있을 수 있으니, 참고바랍니다.(2024. 9. 10 ~ ) 최신화 및 누락된 부분 업데이트 시작아키텍처아키텍처 구성클러스터 구성파이프라인 구성인프라 구축 환경 및 목표EC2 인스턴스를 2개 사용하는 상황에서 마스터 노드와 워커 노드를 각각 하나씩 운영하기 때문에, 가용성을 완벽하게 확보하기 어려운 상황.가용성을 ..
· Git
VSCode 이용 중 Git 작업을 할 때 마다 패스워드(토큰)을 입력하라고 나오는 경우, 다음부터 입력하지 않도록 로컬에 저장하게 하는 명령어는 다음과 같다.git config --global credential.helper store  VSCode 터미널에 해당 명령어를 작성하고 난 후 한 번 인증을 하게 되면,  인증 정보가 저장되어 앞으로 패스워드를 입력하라는 창이 나오지 않게된다.
정규화와 표준화 둘 중 어떤 상황에 어떤 방법을 선택해야 하는지 궁금해 알아보았다.참고 정규화 (Normalization)정규화의 목적은 데이터셋의 numerical value 범위의 차이를 왜곡하지 않고 공통 척도로 변경하는 것이다.기계학습에서 모든 데이터셋이 정규화 될 필요는 없고, 피처의 범위가 다른 경우에만 필요하다. Min-Max ScalingMin-Max Scaling은 정규화의 한 방법으로 모든 피처가 정확하게 [0,1] 사이에 위치하도록 데이터를 변경한다. 2차원 데이터셋일 경우에는 모든 데이터가 x축의 0과 1, y축의 0과 1 사이의 사각 영역에 담기게 된다.즉, 데이터에서 최솟값을 빼고 전체 범위로 나누는 것이다.  예시) 만약 두 시험의 최소 점수가 0점 최대 점수가 각각 100점,..
· Tips
feat : 새로운 기능 추가fix : 버그 수정docs : 문서의 수정style : (코드의 수정 없이) 스타일(style)만 변경(들여쓰기 같은 포맷이나 세미콜론을 빼먹은 경우)refactor : 코드를 리펙토링test : Test 관련한 코드의 추가, 수정chore : (코드의 수정 없이) 설정을 변경출처 : Udacity Git Commit Message Style Guide  feat: 새로운 기능 추가fix: 버그 수정docs: 문서 수정style: 코드 스타일 변경 (코드 포매팅, 세미콜론 누락 등)design: 사용자 UI 디자인 변경 (CSS 등)test: 테스트 코드, 리팩토링 (Test Code)refactor: 리팩토링 (Production Code)build: 빌드 파일 수정ci:..
1. 커스텀 훅 사용 장점 재사용성 같은 로직을 여러 컴포넌트에서 재사용할 수 있습니다. 분리된 관심사 로딩 로직을 컴포넌트로부터 분리하여 관리할 수 있습니다. 코드의 중복 최소화 중복되는 코드를 줄일 수 있습니다. 단점 학습 곡선 커스텀 훅을 제대로 이해하고 사용하기 위해선 React 훅에 대한 이해가 필요합니다. 2. 전역 상태 관리 (예: Redux, Context API) 장점 애플리케이션 전반에서 상태 공유 JS 라이브러리의 로드 상태를 앱의 모든 컴포넌트와 공유할 수 있습니다. 중앙 집중식 관리 상태를 한 곳에서 관리하여 일관성을 유지할 수 있습니다. 단점 복잡성 상태 관리 라이브러리의 추가적인 복잡성과 설정이 필요합니다. 오버헤드 작은 애플리케이션의 경우, 전역 상태 관리가 과도하게 느껴질 ..
React 공식 문서를 통한 학습 중, use-immer에 대해 접하게 되었다. 반복적인 코드를 줄이기 위해 use-state 대신 use-immer를 사용할 수 있다는 내용이었다. 그렇다면, 모든 경우에 use-state 대신 use-immer를 사용할 수 있을까? 결론부터 말하자면, use-state와 use-immer를 적절히 혼용해야한다고 판단했다. 이유를 말하기에 앞서, use-immer에 대해 간단히 설명하겠다. use-immer 란? use-immer는 immer 라이브러리를 리액트의 상태 관리와 결합하는 훅을 제공한다. immer는 불변성을 유지하면서 상태를 업데이트하는 것을 간편하게 만들어 주는 도구이며, 복잡한 상태 구조를 가진 애플리케이션에서 특히 유용하다. use-immer의 장점 ..
· Git
이미 올린 PR을 수정하는 방법을 기록하기 위해 작성 코드 수정 수정이 모두 끝났으면 수정한 파일 git add git commit --amend (가장 최근 커밋을 수정) git push -f origin 브랜치명
· Algorithm
분류 너비 우선 탐색, 깊이 우선 탐색, 그래프 이론, 그래프 탐색, 구현, 시뮬레이션 문제 설명 N×M의 모눈종이 위에 아주 얇은 치즈가 과 같이 표시되어 있다. 단, N 은 세로 격자의 수이고, M 은 가로 격자의 수이다. 이 치즈는 냉동 보관을 해야만 하는데 실내온도에 내어놓으면 공기와 접촉하여 천천히 녹는다. 그런데 이러한 모눈종이 모양의 치즈에서 각 치즈 격자(작 은 정사각형 모양)의 4변 중에서 적어도 2변 이상이 실내온도의 공기와 접촉한 것은 정확히 한시간만에 녹아 없어져 버린다. 따라서 아래 모양과 같은 치즈(회색으로 표시된 부분)라면 C로 표시된 모든 치즈 격자는 한 시간 후에 사라진다. 와 같이 치즈 내부에 있는 공간은 치즈 외부 공기와 접촉하지 않는 것으로 가정한다. 그러므 로 이 공..
· Git
작업 전 브랜치를 파고 시작해야하는데, main(또는 dev) 브랜치에서 작업을 했을 경우, 당황하지 말고 다음 작업을 거치자. 혹시, 원래 작업해야 했던 브랜치가 아무런 commit도 되어 있지 않은 새 브랜치인가? 그렇다면 아래 과정을 거치지 않고 바로 git checkout을 하자. 1. 현재 작업 중이던 main(또는 dev) 브랜치에 작업 내용을 commit 2. 원래 작업했어야 할 브랜치 생성 ex) git branch feature/issue-150-sw - 이제, 내가 작업한 내용이 commit된 브랜치가 생성되었다. 3. main(dev) 브랜치에서 git reset을 해준다. - 작업 내용 commit은 새 브랜치에 옮겨두었으니, main(dev) 브랜치에서의 commit은 되돌린다. ..
· Algorithm
목차 문제 링크 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 분류 데이크스트라, 그래프 이론 문제 설명 N개의 도시가 있다. 그리고 한 도시에서 출발하여 다른 도시에 도착하는 M개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화 시키려고 한다. A번째 도시에서 B번째 도시까지 가는데 드는 최소비용을 출력하여라. 도시의 번호는 1부터 N까지이다. 입력 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 ..
목차 crypto-js crypto-js 설치 crypto-js 사용 예시 crypto-js crypto-js는 해쉬 함수를 통해 양방향으로 암호화 할 수 있도록 해주는 Node.js 기반 패키지이다. crypto-js 설치 npm i crypto-js crypto-js 사용 예시 내 경우, React 앱 내 src/util/ 경로에 EncryptService.js 파일을 생성해 활용했다. 나는 AES 암호화 방식을 선택했으며, 여기를 참고해 원하는 암호화 방식을 사용해도 상관없다. // EncryptService.js import CryptoJS from "crypto-js"; import { secrets } from "../../secret"; const encryptionKey = secrets...
온프레미스 베어메탈 환경에서 쿠버네티스를 설치해서 사용하면서, PV와 PVC 문제로 파드가 정상적으로 동작하지 않는 상황이 자주 발생했었습니다. PV와 PVC에 대해서 알아보도록 하겠습니다. PersistentVolume(PV) 클러스터의 스토리지 자원을 나타냅니다. PersistentVolumeClaim(PVC) 사용자가 요청한 스토리지 자원을 나타냅니다. 쿠버네티스는 PV와 PVC를 사용하여 파드와 클러스터 스토리지 간의 추상화 레이어를 제공합니다. PV와 PVC의 관계 PV는 클러스터에서 사용 가능한 스토리지를 나타내며, PVC는 파드가 사용할 수 있는 스토리지 요청을 나타냅니다. PVC가 생성되면, 쿠버네티스는 사용 가능한 PV 중에서 PVC의 요구 사항과 일치하는 PV를 찾아 바인딩합니다. 이를..
해당 에러는 Helm v2에서만 발생하는 에러입니다. Helm v3 에서는 잠재적인 보안 문제를 방지하기 위해, Tiller를 사용하지 않도록 변경되었습니다. 이제는, kubeconfig 파일의 RBAC 권한을 따라가게 되어, Tiller를 사용할 필요가 없어졌습니다. 문제 Helm을 통해 Jenkins 차트를 설치하려던 중 다음과 같은 에러가 발생 Error: release jenkins failed: namespaces "dev" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "dev" Tiller : 클러스터에서 He..
k8s 환경을 처음 접하고 공부하면서 구축했던 경험으로 작성했으며, 잘못된 정보를 포함하고 있을 수 있습니다. 피드백 감사히 수용하겠습니다. 쿠버네티스 클러스터 아키텍처 "2개의 EC2 인스턴스를 각각 마스터, 워커노드로 분산해서 사용" "비교적 많은 리소스가 남는 마스터 노드에 데이터베이스를 도커로 배포" "워커노드에는 Spring Cloud Gateway와 마이크로서비스들, 그리고 EFK 스택을 파드로 배포" "마이크로서비스들과 게이트웨이는 파드의 개수를 항상 2개로 유지(replicas = 2)" "비정상 종료 또는 변경 감지 시 쿠버네티스가 롤링업데이트를 수행하도록 설정" *롤링 업데이트 : 파드 인스턴스를 점진적으로 새로운 것으로 업데이트하여 디플로이먼트 업데이트가 서비스 중단 없이 이루어질 수..
EFK Stack EFK stack이란 Elasticsearch, Fluentd, Kibana를 얹은 스택이다. 기존의 ELK stack과의 차이는 로그 파이프라인 역할을 하던 Logstash를 Fluentd로 대체 Fluentd Fluentd는 CNCF의 graduated project 중 하나다. - 규모가 크고 레퍼런스가 많다. Fluentd는 다양한 소스에서 로그를 수집해 중앙화할 수 있는 오픈소스 데이터 콜렉터다. - 다양한 시스템에서 들어오는 여러 로그들을 fluentd 하나로 수집하고 파싱하고 포워딩한다. 기존의 시스템마다 제각각의 로깅 툴을 사용하고 각기 다른 저장 장소에 로그가 흩어져 있던 로깅 아키텍처들을 통합할 수 있다는 장점이 있다. 점점 복잡해지고 있는 MSA 환경에서 이러한 장점..
Sungwoo Koo
'분류 전체보기' 카테고리의 글 목록